『漫游』酷论坛>『影音数码技术学习交流』>[原创]x264参数解释

wolfsoft@2006-07-29 12:53

来晚了,被kykdu抢先了[/ku],那我就补充两张图吧.
kykdu说得已经很明确了.问题的关键就是cli内置decoder,而这个decoder所做的deblock只输入到buffer中,也就是图1的"memory".在decoder输入超过ref数量的帧时,旧的经过inloop处理的帧就会被"洗"掉.所有贮存在硬盘上的帧都是未被deblock处理(然而却参考了前面经过了处理的帧)的帧.
而在图2中,则是直接输出到视频缓冲.

H264编码器流程图



H264解码器流程图



以上都是我看标准总结出来的.而kykdu居然靠看代码总结出来,牛人啊....

下面我说点我所发现的和kykdu不一样的.我用filter 3:3试压,结果码率下降了100kbs左右,PSNR反而上升了0.3dB.这和kykdu前面说的两点(体积变大,PSNR下降)都不同,诡异.....

而且还有一点让人难以明确,究竟解码器是通过什么来判断一个帧是否需要做deblock?为什么压制时不开deblock,解码器开不开都没有影响?按理说,即使压制时不开deblock,而解码时打开了,那么最少会对当前帧做deblock处理,而使这个帧解码下来和解码器不开deblock有所差异,但事实上这种差异并没有发生.一个反例是,如果不开deblock,用deblock压出来的片断,虽然解码下来整体的PSNR下降了2之多,但第一帧(I帧)却上升了0.2左右.说明deblock确实起了"洗"(套用DeathTheSheep的说法)的作用.那么为什么编码没开deblock,这个"洗"就不起作用呢?
所以我觉得编码时或许在每个帧中都插了一个有关deblock的flag.不知道是否如此,请分析过x264代码的朋友们再研究研究.
引用

kykdu@2006-07-29 20:36

引用
最初由 kykdu 发布

1、开启deblock的影片,在其它设置相同的情形下,比关闭deblock压缩的体积。如果deblock是编码结果以外的数据,这是不可能的。
2、开启deblock的影片,即使解码器里关闭deblock,输出的结果也与关闭deblock压缩的不同,质量变差了。


谢谢wolfsoft的补充和指正。
上面第一点的确是打错了,已经改正。开启deblock的影片要比关闭deblock的小,我和wolfsoft的结果是相同的。不过请大家看在我是连夜赶工的份上原谅我吧。
关于第二点,可能是片源和参数不同。3:3这样的参数在较小的量化值下会使PSNR下降,但在较大的量化值下可能升高。不同的片源结果也会不同。

关于deblock的flag,的确如此。在encoder.c里,x264_slice_header_write函数为每一个块都写入了flag,对做过deblock的块,还写入了offset。
引用

xwenwei@2006-08-24 14:55

支持技术共享交流研究!

学习学习!
引用

falalif2005@2006-09-10 11:30

怎么那么深奥啊!!~~~
有没基础的东西啊?
引用

Wealls@2006-09-10 21:34

好贴
引用

GOD_HIKARU MK2@2006-12-09 22:32

= = 很久没跟新了。齐了么
引用

蜡笔小龟@2006-12-21 20:01

为什么我在Profile下拉菜单中找不到选项~
升级系统中好像也没有Profile~
引用

mot@2007-01-20 15:04

比较详细了,反而希望有时间的朋友能出一篇实战式的教程贴..
引用

吉祥如意@2007-01-25 17:40

为什么影音技术的东西都好复杂啊
引用

寒小梅@2007-02-22 19:06

进来看看!!有些参数貌似太专业 有点看不懂 = =
引用

相见恨晚啊~

techneek@2007-02-26 19:07

没想到这里n多牛人~~以后一定要常来~
引用

wtq@2007-05-11 19:19

kykdu消失了,还有其他牛人也不常见了,跑哪了呢
引用

月光舟@2007-05-30 11:44

学到了~ 谢谢
引用

gillsex@2007-07-29 17:16

看得头晕晕了...
引用

vAnA@2007-08-09 01:07

好复杂,还要学习……
引用

«1234»共4页

| TOP