- 博客(28)
- 资源 (5)
- 收藏
- 关注
原创 H.265硬件视频编码器xk265代码阅读 - 帧内预测
以下代码用于选择参考像素的位置: model_i >=18,则参考水平像素行,否则参考垂直像素列,具体细节可以参考下图。以下代码用于获取当前4x4块的第一行四个像素在大块中的水平位置,其中size_i用于表示大块的大小。以下代码用于获取当前4x4块的第一列四个像素在大块中的垂直位置,其中size_i用于表示大块的大小。以下代码计算角度预测模式下,4x4块的预测值,基于ifact来加权两个整像素预测值。以下代码用于将输入的预测像素排到ref_lxx_w和ref_txx_w寄存器中。
2025-04-16 20:31:41
951
转载 vs2019 安装使用viemu方法
viemu可以在visual studio上使用vi编辑器的键盘操作,写代码效率可以大大提高,是vimer's最爱的插件之一。可惜viemu是收费软件。 有网友找到了破解方法,转载一下:https://lingyixia.github.io/2019/02/23/ViEmu/总共需要删除两个地方: 12 1. HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{目录ID}的InprocServr322. C:\Users\用户名\...
2021-09-16 14:39:32
520
原创 python subprocess模块设置环境变量,加载动态库
众所周知,利用python的subprocess.pOpen 可以执行应用程序。不过今天碰到一个问题:应用程序需要调用动态库,而且动态库和应用程序在同一目录下。不过python的运行目录不是应用程序所在目录,这时候执行会出错error while loading shared libraries: libdyn.so: cannot open shared object file: No such file or directory。这是因为应用程序在python当前运行目录及系统的LD_LIB
2021-08-26 14:57:41
6523
2
原创 AVS3中Intra预测过程 - HPM代码分析
视频编码中,帧内预测需要获取相邻块的参考像素才能获得重建,在AVS3参考软件平台HPM中,这个过程是如何实现的呢?
2021-04-01 16:17:40
1486
原创 AVS3码流结构分析
AVS3码流由一组视频序列(video Sequence)组成 Video Sequence首先包含了Sequence Header,这相当于HEVC中的SPS信息。接着是Extension_and_user_data(0),这个是序列级别的扩展数据或者用户数据。然后就是一组图像数据,包括帧内图像数据和帧间图像数据。 AVS3码流结构示意图如下所示,不同语法结构采用起始码来分割,起始码值在图1中采用红色字体表示。图1、AVS3码流结构 在AVS3中不再有Slice的概念,...
2021-03-29 11:30:50
1294
原创 python 幂数拟合及拟合度计算
有时候对数据的分析处理,需要进行曲线拟合,python提供了丰富的工具,其中scipy中的curve_fit可以用来进行幂数拟合或者指数拟合等各种类型的拟合。 先定义好要拟合的函数形式target_func,然后调用函数popt, pcov = curve_fit(target_func, xdata, ydata)可以返回target_func中的参数,参数存储在popt数组中。...
2019-12-04 12:16:52
11526
6
原创 x264、x265中cuTree原理分析
mbtree是x264中引入的一项创新性技术,可以有效提高主客观质量(参考文章最后的表格1)。x265继承了这一算法,改名为cuTree,算法本身实现较为复杂,下面探讨一下cutree原理,结合代码来分析实现细节。 cutree和mbtree都是根据当前块被参考的程度调整qpOffset,要知道当前块被参考的程度,很显然需要一个编码的反推过程。 对于帧间参考,参考帧的质...
2019-11-27 11:23:05
5409
1
原创 ffmpeg计算psnr与x264,x265不一致
用ffmpeg可以方便的计算两个视频文件之间的psnr,命令格式如下ffmpeg -i reference.ts -i encode.ts -lavfi psnr -f null - YUV的对比命令如下: ffmpeg -pix_fmt yuv420p -s 1920x1080 -i input.yuv-pix_fmt yuv420p -s 1920x108...
2019-11-25 20:54:45
2161
原创 HEVC如何计算Cu_Qp_Delta
研究HEVC标准发现,HEVC对cu_qp_delta的处理虽然有点晦涩难懂,但还是挺科学合理的。 HEVC中计算CuQpDelta的公式如下: CuQpDelta = (qp - qp_pred + 78 + qpBdOffsetY + (qpBdOffsetY / 2)) % (52 + qpBdOffsetY) - 26 - (qpBdOffsetY / 2) ----...
2019-10-25 16:17:30
2753
原创 开发一个HEVC码率分析工具
在开发编解码器时,经常需要分析码率波动情况,分析缓冲区是否有上下溢情况,所以用python开发一个简单的工具。它可以分析HM编码器的输出log,提取每一帧的比特数,结合视频帧率,就可以绘制码率波动图和VBV缓冲区状态的图像了。工具的UI如图1图2所示:plot type选项有两种选择:选项1"bitrate viewer"用于绘制每秒钟的码率情况;选项2"vbvbuffer view"用于绘制...
2019-10-14 17:12:21
1883
4
原创 实现一个avs2码流分析工具
最近在做avs2编码器项目,但是却没有成熟的码流分析工具,于是抽空学习了QT,业余时间写了一个avs2码流分析工具。 软件的界面如下:图1、avs2码流分析仪界面 UI的左边框为NAL列表或者语法元素列表: 默认情况显示的是NAL列表,NAL列表显示了每一个NAL的类型,如果是picture的NAL,则Picture的类型(I帧,P帧,B帧,F帧等),POC, COI也都可以...
2019-09-12 21:36:18
2233
15
原创 hevc的量化系数编码之 最后一个非零系数的坐标编码方法
对量化后的系数,会根据扫描次序得到最后一个非零系数的(x, y)坐标。将其进行编码。 (x, y)分别都是由前缀和后缀部分组合得到的。 x,y的取值范围为0~31, 这个区间被分割为10段,如下图所示 前缀表示的就是段信息,10个段对应的prefix如下: 后缀表示的是段内信息,即相对于段的起始位置的偏移量,可以看到,只有segment 5, 6, 7, 8, 9, 10才需要后缀表...
2018-06-05 12:21:31
577
原创 visual studio如何开发基于ffmpeg的程序
如何用visual studio来开发基于ffmpeg的程序呢? 开发环境: Win10 + visual studio 2010 首先需要下载windows版的ffmpeg的库: 下载地址 https://ffmpeg.zeranoe.com/builds/。其中Dev包含的是开发ffmpeg程序所需要的头文件和链接库,在编译时会用到;Shared包含的是运行程序时调用到的...
2018-06-02 19:16:22
1619
原创 c语言函数参数太多对性能是否有影响?
64位汇编(linux)当参数少于7个时, 参数从左到右放入寄存器: rdi, rsi, rdx, rcx, r8, r9。当参数为7个以上时, 前 6 个与前面一样, 但后面的依次从 “右向左” 放入栈中,即和32位汇编一样。参数个数大于 7 个的时候H(a, b, c, d, e, f, g, h);a->%rdi, b->%rsi, c->%rdx, d->%rcx,...
2018-04-20 16:43:58
10114
原创 理解视频编码中的熵编码
首先理解算术编码的原理: 假设比特0、1概率分别为0.8和0.2。信源流为00100,对此信源进行算术编码,过程如下: 每输入一个新比特,都会缩小概率区间,当输入00100后,得到的概率区间为(0.512, 0.59392),解码过程与编码过程相反,给定最终概率区间可以解码出原始比特流:(1)、初始概率区间为(0, 1.0)。(2)、(0.512, 0.59392)落在(0, 0.8)之间,...
2018-04-10 11:09:25
1334
原创 两种HDR格式(HLG, HDR10)的理解
1、HLG只在sps的vui中会携带信息,包括colour_primaries(=9),transfer_characteristics(=18),matrix_coefficients(=9)2、HDR10除了SPS的VUI中携带的信息,在key frame会携带相应的SEI(mastering display、content light level)
2018-02-06 10:36:00
20547
3
原创 c程序命令行处理getopt的使用
有些功能复杂c程序需要从命令行中接收很多参数,比如x264、x265,很多编码参数都通过命令行传递给exe。下面是一个x265.exe的命令行的示意图。 x265.exe --input F:\Tennis_1920x1080_24.yuv --fps 24 --input-res 1920x1080 --frames 100 --psnr --frame-threads 1 --no-
2018-01-29 10:18:50
391
原创 HEVC中与dpb(decoder picture buffer)相关的语法元素的理解
hevc标准中有很多语法元素理解起来比较麻烦,所以在此记录下来,供以后查阅。sps中的sps_max_num_reorder_pics 标准中的解释:"sps_max_num_reorder_pics[ i ] indicates the maximum allowed number of pictures that can precede any picture in the CV
2017-12-21 11:24:07
3917
原创 视频主观质量对比工具(Visual comparision tool based on ffplay)
************************************************************************************ffplay系列博客: **ffplay播放器原理...
2017-12-15 09:53:09
13685
63
原创 ffplay播放器音视频同步原理
音频和视频的播放是在不同线程中进行的,而且音频和视频都有自己的时间戳,所以需要同步机制保障音画同步。有多种机制可以做到音视频同步:a. 音频同步于视频。b. 视频同步于音频。c.音视频都同步于基准时钟。ffplay默认采用视频同步于音频的方式,下面结合ffmpeg 3.1.1源代码分析一下ffplay的音视频同步原理。总体来看,视频同步于音频的机制主要包括两个部分:1、音频时钟的更新。2、视频帧渲染与音频时钟的同步(根据当前音频时钟调整视频帧渲染的时刻,实现同步)。
2017-11-29 13:55:19
4556
1
原创 ts, mp4文件快进快退(seek)原理
最近用potplayer播放一些ts文件,seek发现会有卡顿问题,但是同一个文件用mp4转封装之后seek就很快很流畅了。所以抽空研究了ffplay 对mp4文件和ts文件的 seek 逻辑,结论:对mp4 和t s的seek 逻辑完全不一样。 最重要的区别在于mp4 可以seek到指定的时间戳, ts 是 seek到文件的某个position,而不能直接seek到指定的时间点,下面结合
2017-10-26 14:35:57
8902
2
ffmpeg.exe 输出两种统计方式的PSNR
2019-11-26
ffmpeg.exe 输出两种统计方式的PSNR
2019-11-25
视频主观质量对比工具
2019-11-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人