【AV1代码研究二】从main到编码一个SB----aomenc的函数调用结构
- 从main函数到编码一个SB
-
- main
- encode_frame
- aom_codec_encode
- encoder_encode
- av1_get_compressed_data
- av1_encode_strategy
- denoise_and_encode
- av1_encode
- encode_frame_to_data_rate
- encode_with_recode_loop_and_filter
- encode_with_recode_loop
- av1_encode_frame
- encode_frame_internal
- encode_tiles
- av1_encode_tile
- av1_encode_sb_row
- encode_sb_row
- encode_nonrd_sb
- encode_rd_sb
从main函数到编码一个SB
本文对main函数向下至编码一个SB之间的函数以图示作记录和简单说明每个函数的作用(身为一个底层码农还是先往下跳关注底层编码一个SB的算法和函数,上层函数的坑先浅挖,后续有时间再填上)。下图显示了AV1参考软件----AOM解决方案中aom_enc项目的函数调用结构(从main函数到处理一个SB)。图中可以看到从main函数到编码一个SB的函数要经过15层调用,目前确实不太有空仔细学习、分析这中间的每个函数,由于时间仓促难免有些描述错漏,若有读者发现还望不吝指出。
main
main函数的介绍请看【AV1代码研究一】万事开头难——aomenc main函数分析。
encode_frame
完成记录编码时长功能,当视频配置尺寸与输入视频尺寸不一致时会对输入视频进行缩放(只支持缩放Y:U:V 4:2:0格式的视频)。
aom_codec_encode
该函数调用encoder_encode()完成多尺度分辨率的编码,如有需要编码3个分辨率,则按level 2-level 1-level 0的顺序依次进行编码。(坑注:待确认哪个level的分辨率最