xref: /aosp_15_r20/external/libavc/FrameInfo.md (revision 495ae853bb871d1e5a258cb02c2cc13cde8ddb9a)
1*495ae853SAndroid Build Coastguard Worker## Frame Info exported from libAVC
2*495ae853SAndroid Build Coastguard Worker
3*495ae853SAndroid Build Coastguard Worker### Introduction
4*495ae853SAndroid Build Coastguard WorkerQP and block type maps for H264 are defined for each 8x8 MB sub-block.
5*495ae853SAndroid Build Coastguard WorkerThe QP values defined as unsigned 8-bit numbers can range from <0, 51> and the block type can
6*495ae853SAndroid Build Coastguard Workerbe INTER/INTRA/SKIP. Set the “u4_frame_info_enable” flag to enable encoder/decoder to populate
7*495ae853SAndroid Build Coastguard Workerand return the qp values and block type data in their output structures ih264e_video_encode_op_t
8*495ae853SAndroid Build Coastguard Workerand ih264d_video_decode_op_t respectively via pu1_8x8_blk_qp_map and pu1_8x8_blk_type_map.
9*495ae853SAndroid Build Coastguard Worker
10*495ae853SAndroid Build Coastguard Worker### Mapping to the frame
11*495ae853SAndroid Build Coastguard WorkerLet’s say, a frame has a total of ‘n’ MBs (each 16x16). Since the QP and block type are defined
12*495ae853SAndroid Build Coastguard Workerfor each 8x8 block, hence each MB will have 4 entries in the maps. Thus, a total of n x 4 entries
13*495ae853SAndroid Build Coastguard Workerfor each frame. Qp and block type values for each 8x8 block are stored in raster scan order. Refer
14*495ae853SAndroid Build Coastguard Workerto ih264d.h for details.
15*495ae853SAndroid Build Coastguard Worker
16*495ae853SAndroid Build Coastguard Worker### Plugin/Application
17*495ae853SAndroid Build Coastguard WorkerThe encoder/decoder keeps the QP and block type map as a part of its output handle. The plugins can
18*495ae853SAndroid Build Coastguard Workeraccess these data through the output structure.
19