Yesterday tried to edit the blog post with Markdown, the result of the HTML file generated by the Import blog editor failed, is really depressed. Temporarily do not struggle with what to edit the blog, or to quickly look at the HEVC inter-frame prediction mode bar.
Now I want to know what the prediction pattern is for each CU, so the first thing is to see how the code stores the information. Yesterday, I have listed the functions called by all the patterns that the code CU needs to traverse, and these functions calculate the value of the encoding mode, then select the optimal mode, and the final code will inevitably save the information to decode the decoding side. OK, let's see where they are kept.
Enter the Xcompresscu function, you can see the function passed in the parameters have rpcbestcu,rpctempcu,uidepth,eparentpartsize. The last two parameters are not said, the first two parameters one is to store the parameters of the optimal encoding, the latter for the temporary storage of CU information, presumably can know the information we want in RPCBESTCU this object.
Void Tenccu::xcompresscu (tcomdatacu*& rpcbestcu, tcomdatacu*& rpctempcu, UInt uidepth, PartSize Eparentpartsize)
Within the class of this object, the information required for decoding is stored. The encoded unit can obtain this information. There are many coding information that can be obtained in Tcomdatacu, as long as the function is called. For example, to get the inter-frame encoding mode, call Getpartitionsize (UInt uiidx).
The size of the code prediction block can be obtained
enum partsize
{
size_2nx2n, ///< symmetric motion partition, 2nx2n symmetric split
SIZE_2NXN, ///< symmetric motion partition, 2Nx N
size_nx2n, ///< symmetric motion partition,< c11/>nx2n
size_nxn, ///< symmetric motion partition, Nx N
size_2nxnu, ///< Asymmetric motion partition, 2Nx (N/2) + 2Nx (3N/2) asymmetric split
size_2nxnd, ///< Asymmetric motion partition, 2Nx ( 3N/2) + 2Nx (N/2)
size_nlx2n, ///< Asymmetric motion partition, (N/2) x2n + (3N/2) x2n size_nrx2n
, ///< Asymmetric Motion partition, (3N/2) x2n + (N/2) x2n
Size_none =
n};
For a chestnut: If the code block is inter2nx2n mode, that is, the traversal of Xcheckrdcostinter (RPCBESTCU, RPCTEMPCU, size_2nx2n, BFMD) is stored. Rpctempcu->setpartsizesubparts (partsize emode, uint uiabspartidx, uint uidepth) The function to call when saving the mode.
The current stats work is over, and the following is a look at some of the algorithms that 3D-HEVC differs from HEVC.