帧间预测简要流程
Inter 进行解码的基本单位是pu, 读一个pu 相关的信息,然后解码相应的pu块。 pu块的信息包括mv的信息等,解码pu块就是利用mv 从相应的参考帧中去出参考的块,然后利用参考块插值或者不插值出预测块。
1、参考帧数据的来源
主要是m_apcRefPicList这个参考数据是怎么得来的,有调用getRefPic( RefPicListe, IntiRefIdx) 实际是返回的m_apcRefPicList。
TComPic* getRefPic( RefPicListe, IntiRefIdx) { return m_apcRefPicList[e][iRefIdx]; }
可以看到 这个列表包含下面两个reference list, 对于P帧来说只用list 0, b帧两个都有可能用到。
REF_PIC_LIST_0 = 0, ///< reference list 0
REF_PIC_LIST_1 = 1, ///< reference list 1
在TDecTop.cpp 中xDecodeSlice 中调用decodeSliceHeader 之后会将dpb 的buffer list 设置到 调用 pcSlice->setRefPicList( m_cListPic, true ) 设置到m_apcRefPicList 中。 decodeSliceHeader里面主要是解析rps相关的信息,rps 是存储在slice header 中。rps 的相关信息在附录中。
m_cListPic:dpb的buffer 列表 在 xDecodeSlic