www.cnnvn.com

 会员注册
 找回密码

QQ登录

QQ快捷登录/注册

搜索
热搜: 电幻国度 悬疑
123下一页
返回列表 发新帖
查看: 32|回复: 29

[交流讨论] X264和H264系统性介绍(二)

特级元老

Rank: 16Rank: 16Rank: 16Rank: 16

阅读权限:
150

61

帖子

295

积分

178

威望
  资源量: 2
Mini重量: 30
在线时间
3939 小时
注册时间
2025-1-29
墨燃 发表于 2025-2-5 07:55
本帖最后由 墨燃 于 6-19 14:00 编辑

1.png
3. X264 开源编码器分析

3.1 三大开源编码器:

        目前 H.264的开源编码器主要有三类:JM,T264和 X264。JM 作为 H.264 的官方测试源码,由德国 hhi 研究所负责开发。它实现了 264 所有的特性,但其程序结构冗长,只考虑引入各种新特性以提高编码性能,忽视了编码复杂度,其编码复杂度极高,不宜实用。T264是中国视频编码自由组织联合开发的H.264编解码器, 编码器能编码输出标准的H.264码流,但解码器只能解 T264 编码器生成的码流,目前已经停止更新。X264 是网上自由组织联合开发的兼容 264 标准码流的编码器,它注重实用,和 JM 相比,在不明显降低编码性能的前提下,努力降低编码的计算复杂度,编码效率很高。

3.2 X264流程

       因为 X264 编码器的高效率和高性能,应用之中较多使用,下面对 X264 进行源码分析,进一步分析 H.264 的编码器原理。

       在 X264 编码器的调度中最重要的是 Encode 函数,是对整个视频序列的 H.264 编码。在函数中,首先进行了函数的初始化操作,然后判断是否已经编码完毕,如果没有则继续读取一帧数据到缓冲区,然后进行帧解码;如果编码完毕则退出编码流程。详细函数关系如下图所示:


2.png


       其中,x264_encoder_open()这个函数是对不正确的参数进行修改,并对各结构体参数和cabac 编码,预测等需要的参数进行初始化。x264_picture_alloc()这个函数分配能容纳一帧sizeof(x264_picture_t)字节数的空间,然后进行初始化。p_read_frame()这个函数就是一次读入一帧到刚分配的空间,这里的数据都是原始的视频图像数据。Encode_frame()这个函数对视频序列其中一帧进行 264 编码。

       x264_picture_clean()和 x264_encoder_close()两个函数主要是编码后的处理工作,如将帧数据全置零等。

       在 Encode_frame() 函数中开始上文提到的 VCL 编码和 NAL 编码,其中x264_encoder_encode()函数为 VCL 层编码, 其详细流程如下图所示。 其中, Setup new frame from picture 主要是将图片的原始数据赋值给一个未使用的帧,用于编码。Get frame to be encoded 主要是帧管理的操作,从编码帧的缓存中取出一帧来对他进行编码。Setup frame context 主要是对即将编码帧进行帧类型的预设定。 Init ,Write the bitstream主要是对参考列表的初始化,片头的初始化,以及对将编码后数据写入比特流进行传输。Update encoder state这部分是一帧编码后的编码器的更新处理部分,主要有参考帧的管理,去块滤波,象素内插等工作。Compute/Print statistics这部分并不属于编码的工作,只是对其中编码性能的统计计算和显示工作。

3.png


        x264_slice_write()函数是编码中最重要的函数,以上所介绍的预测编码等都在这个函数中实现的。

        Init()函数主要是初始化的一些操作。x264_macroblock_cache_load()函数主要是把当前宏块的 up 宏块和 left 宏块的预测模式,非零系数值等数据加载进来,放到一个数组里面,供当前模块参考使用。 x264_macroblock_analyse()函数主要是模式选择的问题,通过对SAD 值或者其他 COST 值的分析,确定当前宏块的编码类型。以 I 帧模块为例,我们可以将它分割成16个4*4的块,如果这16个块的sad加起来小于按16*16的方式计算出来的sad值,我们就将这个 16*16 的块分成 16 个 4*4 的块进行编码,否则采用 16*16 的方式编码。x264_macroblock_encode()函数即是依据上面所确定的编码模式对当前宏块进行 264 编码。CABAC/CAVLC 部分为熵编码部分。


       且听下回分解。
   

游客:查看本帖 所有图文内容 与 下载 和 附件:

您需要先 登录     还没有帐号?点此  注册会员      或 QQ快捷登录/注册:

X

中高级一般组 Rank: 8Rank: 8
阅读权限:
150

14

帖子

530

积分

272

威望
资源量:0  Mini重:20

 在线:139时 注册:25-1-9
南风微拂 发表于 2025-2-5 07:55

回帖中奖 +5

福建松溪现历史最大洪水 洪涝严重
回复

特级元老

Rank: 16Rank: 16Rank: 16Rank: 16

阅读权限:
150

33

帖子

435

积分

234

威望
  资源量: 0
Mini重量: 20
在线时间
4769 小时
注册时间
2024-10-1
zjcxzsl 发表于 2025-2-5 07:56

回帖中奖 +5

经典谢谢你
回复

特级元老

Rank: 16Rank: 16Rank: 16Rank: 16

阅读权限:
150

19

帖子

505

积分

262

威望
  资源量: 0
Mini重量: 20
在线时间
3539 小时
注册时间
2025-1-19
houhou91 发表于 2025-2-5 07:59
进来看看。。
回复

特级元老

Rank: 16Rank: 16Rank: 16Rank: 16

阅读权限:
150

61

帖子

295

积分

178

威望
  资源量: 2
Mini重量: 30
在线时间
3939 小时
注册时间
2025-1-29
 楼主| 墨燃 发表于 2025-2-5 08:27
南风微拂 发表于 2022-6-19 07:03
福建松溪现历史最大洪水 洪涝严重

我这里是在讨论影视相关专业技术,你回什么内容?请给出最基本的尊重!你可以不说话,但是说话请注意针对性,不要乱说!
回复

特级元老

Rank: 16Rank: 16Rank: 16Rank: 16

阅读权限:
150

61

帖子

295

积分

178

威望
  资源量: 2
Mini重量: 30
在线时间
3939 小时
注册时间
2025-1-29
 楼主| 墨燃 发表于 2025-2-5 08:27

不需要谢,要是真谢,就拿点金币来嘛。
回复

特级元老

Rank: 16Rank: 16Rank: 16Rank: 16

阅读权限:
150

61

帖子

295

积分

178

威望
  资源量: 2
Mini重量: 30
在线时间
3939 小时
注册时间
2025-1-29
 楼主| 墨燃 发表于 2025-2-5 08:28

灌水元老又来了,一地都是水了,你老人家还灌?
回复

中高级一般组 Rank: 8Rank: 8
阅读权限:
150

36

帖子

420

积分

228

威望
资源量:1  Mini重:20

 在线:471时 注册:25-2-3
狐萝卜 发表于 2025-2-5 21:46
顶一顶帖子,支持支持...
回复

123下一页
返回列表 发新帖
登录后回复:登录 | 注册会员  |  或QQ快捷登录/注册:

查看系统  本版 积分策略  

Cnzz数据统计日志 - 在线接入api @cnzz | 程序状态对接接口api - cnzz程序历史log | 最近1年热门词搜索记录| 站点统计| 违规名单| 手机版| Cnzz数据统计日志 - 在线接入api @cnzz | cnnvn 影迷之家社区
2024-2025© DZ™ V3.5® |辽ICP备00000002

GMT+8:2025-5-1 13:59   Processed 6 Query in 0.0062 second.     OPCache on.   ProxySQL Cache on.   CDN Cache On .
社区本身不储存资源,由译制配音网友爱好收集,严禁一切博眼球或不良内容等
交流应从和谐大度、从容友爱出发,不要交流任何不适容, 同时也不要发上映国产或引
进片(也含要上映的引进片与tc尝鲜等,保护上映与国产), 反馈@
快速回复 返回顶部 返回列表