@IT·互联网

AV1 Encoder源码剖析(一)

2023-12-17  本文已影响0人  yongbaoqiji

1. AV1接口

AV1的对外接口,按照结构体函数指针形式进行了抽象和封装。主要包括编解码器上下文初始化,编解码options参数设置,封成map形式的控制接口接口,以及编码、解码主体函数,销毁等。

主要包含:

av1 interface.png

2. AV1初始化

AV1的编码主要结构体的创建和参数赋值。

image.png

如上图,encoder_init主要调用的函数简化示意,完成的主要功能是,上图右侧不同数据结构体的初始化。

主要执行函数:

涉及的结构体:

重要的数据结构简要:

- \ref AV1_PRIMARY
    - \ref AV1_PRIMARY.gf_group (\ref GF_GROUP)
    - \ref AV1_PRIMARY.lap_enabled
    - \ref AV1_PRIMARY.twopass (\ref TWO_PASS)
    - \ref AV1_PRIMARY.p_rc (\ref PRIMARY_RATE_CONTROL)
    - \ref AV1_PRIMARY.tf_info (\ref TEMPORAL_FILTER_INFO)

- \ref AV1_COMP
    - \ref AV1_COMP.oxcf (\ref AV1EncoderConfig)
    - \ref AV1_COMP.rc (\ref RATE_CONTROL)
    - \ref AV1_COMP.speed
    - \ref AV1_COMP.sf (\ref SPEED_FEATURES)

- \ref AV1EncoderConfig (Encoder configuration parameters)
    - \ref AV1EncoderConfig.pass
    - \ref AV1EncoderConfig.algo_cfg (\ref AlgoCfg)
    - \ref AV1EncoderConfig.kf_cfg (\ref KeyFrameCfg)
    - \ref AV1EncoderConfig.rc_cfg (\ref RateControlCfg)

- \ref AlgoCfg (Algorithm related configuration parameters)
    - \ref AlgoCfg.arnr_max_frames
    - \ref AlgoCfg.arnr_strength

- \ref KeyFrameCfg (Keyframe coding configuration parameters)
    - \ref KeyFrameCfg.enable_keyframe_filtering

- \ref RateControlCfg (Rate control configuration)
    - \ref RateControlCfg.mode
    - \ref RateControlCfg.target_bandwidth
    - \ref RateControlCfg.best_allowed_q
    - \ref RateControlCfg.worst_allowed_q
    - \ref RateControlCfg.cq_level
    - \ref RateControlCfg.under_shoot_pct
    - \ref RateControlCfg.over_shoot_pct
    - \ref RateControlCfg.maximum_buffer_size_ms
    - \ref RateControlCfg.starting_buffer_level_ms
    - \ref RateControlCfg.optimal_buffer_level_ms
    - \ref RateControlCfg.vbrbias
    - \ref RateControlCfg.vbrmin_section
    - \ref RateControlCfg.vbrmax_section

3. AV1编码流程

3.1 encoder_encode

encoder_encode函数是av1编码的核心内容部分。

av1 encode.png

主要步骤:

接下来的编码流程分析将在AV1 Encoder源码剖析(二)中介绍。

未经声明,禁止转载,喜欢的给个赞吧!

上一篇下一篇

猜你喜欢

热点阅读