整理我的264的模糊概念——请教小徐老师的心得

2006-08-13 17:54

刚刚看了Luminix给我写的回信。他建议女孩子不要把全部时间用在技术流上比较好。也许是有道理的吧。先不管那么多了,不能中途放弃,可能会弄巧成拙反而一无所获的,仍然坚持。不过,我心里会记得这一说的。

下午找小徐老师交流了一下,请教了一些一直比较模糊的问题。趁热打铁,记下来,免得明天回来就忘了。

·IPB序列是之前需要定义好的。所以,遇到I帧就一定进行“帧内预测”。

这里要强调两点:

(1)由于我们是针对H264的基本档次的,所以程序里不涉及BSISP帧,只有IP帧。

(2)遇到P,并不是像前述概念里提到的“P帧是针对帧间预测”的。正确的说法是“可能是帧间也可能是帧内预测”。所以,遇到P帧,我们既要进行帧内预测,有要进行帧间预测,之后判断哪个值更好,然后留下这个比较好的值,另一个舍弃。我觉得这里要是能有办法事先判断有什么预测模式就好了,都预测之后再判断很浪费时间啊,哪怕预测一半判断出是不是用这个预测模式都是好的呢。)

·Choose Intra Prediction

帧内和帧间预测不同:

帧内预测有4*4亮度预测模式16*16亮度预测模式8*8色度块预测模式。每种预测模式又有多种不同的预测方式。所以需要根据不同的情况判断用4*4还是16*16的(对亮度Y而言)(色度只有8*8的,不用判断),这里指的就是“Choose Intra Prediction”。当然决定用4*4还是16*16后,还要根据具体情况判断道理使用哪种预测方式(4*4尺寸有9种预测模式,16*16有四种预测模式)。

帧间预测则没有这么麻烦,都是MEMC一个套路,当然,这里面的具体算法也不简单。

·小徐老师说我们的程序里没有对帧进行分块,不知道对不对,我再自己看看确定。(现在来看,是对的。看代码时,也可理解为帧就分一块(slice)。)

·我们的程序里对IPB等的定义都是“帧”级的,就是说叫“I帧”、“P帧”、“B帧”等。不再向下分什么“I片”、“I宏块”等了。

·虽然我们不用B帧,小徐老师还是大概给我讲解了一下。是的,所说的“next frame”是指“播放顺序”上的“未来”,而不是“编码顺序”上的。

·预测。除了对的预测外(帧内预测、帧间预测),还有对MV(运动向量)的预测。后者,我还不大了解,在coremacroblock. c文件中有。)

·coremacroblock . c文件和macroblock . c文件的区别是:两个文件以前都叫macroblock. c,前者原来放在core文件夹中,表示的是编解码中都涉及到的MB操作;后者是编码中涉及的MB操作。

·MEMC都是基于宏块的。

·关于“滤波过程”,小徐老师也没有研究过。所以,以后有机会我再看吧。也许我猜的就是对的呢(先滤波边界,再滤波宏块内部)。

·去除相关性好像特别重要,好几处地方都用到了,就是说保持独立性。(有时候我们还是要利用相关性的,比如说预测的时候就是利用的相关性。像物理中学的那些知识,都是双刃剑,呵呵。)

·我们的程序里,“码率控制”的参数设为了0,就是说不用了。所以ratecontrol. c文件我们不用了(除了x264_ratecontrol_newx264_ratecontrol_startx264_ratecontrol_qpx264_ratecontrol_end这几个函数——这几个函数我们仍然用到了)

·信噪比PSNR。看书23页。

·POC图像序列号。好像解码才用到。(不敢肯定)以后遇到再看。

·今天看了个贴“[原创]x264参数解释”,针对命令行模式的。小徐老师说,其实在common. c文件的开头部分(x264_param_default函数)就可以更改和使用。但是这些参数的解释还是有用的,我转贴在我blog的另个日志里吧,以后应该用得上。

另外,这个贴的作者还是个女孩子,还发了不少原创技术贴,真的是了不起啊!

因为大体流程我已经知道了,老大让我先一天看一个模块,看一个请教小徐老师一个。上路后就可以一天看几个模块了。

你可能感兴趣的:(c,算法,Blog)