关于工装设计的网站,江苏省城乡与建设厅网站首页,移动端下载app,收费企业邮箱哪家好作了这么久的h264工作#xff0c;这部分还一直从未去深入了解过#xff0c;真是不求甚解啊#xff0c;那帮老外的代码也写得太全了#xff0c;该部分至今天才开始研究
首先参考帧这里关注的是两种#xff0c;p ,b ,前向参考和后向参考
由白皮书中看到#xff0c;p帧的参…
作了这么久的h264工作这部分还一直从未去深入了解过真是不求甚解啊那帮老外的代码也写得太全了该部分至今天才开始研究
首先参考帧这里关注的是两种p ,b ,前向参考和后向参考
由白皮书中看到p帧的参考帧都在list0中该list0可以包含p帧之前的也可以是之后播放次序这里的之后并不是说p帧成b帧了这就是264搞这么复杂的因素吧
解码编码时一个帧暂且不考虑多slice只能被标示为
a不是参考帧
b放在short-term中作参考帧
c放在long-term中作参考帧
d, 直接输出显示
我在这里就直接翻译白皮书了一个关键点P帧只参考list0B帧则list0,list1皆可
list0中short-term中图像由自带的picnum(每个图像都有的一个变量)计算出一个值然后从高到低排列在short-term中long-term也是如此但是它次序是从低到高每次编码解码完一帧这个次序会随之变动如果码流中标示变动的话。最后会由于这个因素长江后浪推前浪前浪被推出参考序列因为参考序列中的数目是固定的比如标准最多是16编码器可控。 编码器可任意对list0中参考帧进行变动。
具体解码中这个参考方式是细化到宏块甚至4x4的子快一个宏块头信息中标示着内部参考方式如果可能多到16种。通过这个数目从list0中找出参考帧。
需要说明一下白皮书中的例子
list0假设参考帧是5个,
正常情况下编完一帧都是把他放到最近的short-term中意味着最容易被参考到如果编码器其需要改动就会把某一帧放到short-term的后面就是long-term这些都是按照longtermpicnum,shortpicnum的大小次序存放。而01234则会在每一个宏块甚至子块的解码过程中用到。
IDR帧将上述的次序全部清零重新开始排序。
边看标准和代码别写下这些文字没有整理凑合看吧。
B帧的list1,也是按照list0的排列规则存放然后具体到每个宏块则可能该宏块同时参考到list0和list1那就是需要avg的算法了绝大部分编解码都有该关键词来处理B帧。
等有空放上具体代码及详解。