美文网首页@IT·互联网
AV1 Encoder源码剖析(二)

AV1 Encoder源码剖析(二)

作者: yongbaoqiji | 来源:发表于2023-12-19 10:56 被阅读0次

本文就文AV1 Encoder源码剖析(一)的Encode流程继续深挖。

3. AV1编码流程

……

3.5 av1_encode_strategy

av1_encode_strategy

av1_encode_strategy主要完成high-level编码策略如(frame type, frame placement, etc.)

主要包含:

  • 非flush情况下,根据lookahead当前buffer填充情况,判断是否stuff更多的源图像帧。
  • 决策当前帧是否是ARF帧。
  • 帧率,PTS,帧类型,参考帧的决策和更新。
  • 根据是否实时编码模式,如果是调用av1_encode,否则调用denoise_and_encode()。
  • AV1_encode中,如果是2-pass编码,av1_first_pass() 执行其中的first_pass, 否则encode_frame_to_data_rate()直接执行the final pass。

上面提到了ARF, ARF帧的定义如下:


ARF

3.3 encode_frame_to_data_rate

image.png

encode_frame_to_data_rate主体是encode_with_recode_loop_and_filter,剩下的主要做了些target_rate设置,整像素MV,丢帧,CDF开关。

encode_with_recode_loop_and_filter()主要做的工作如下:

  • 继续调用encode_with_recode_loop()/encode_without_recode()进行编码。
    其中:
    (1) encode_without_recode()通常应用在one-pass和realtime编码。
    (2) encode_with_recode_loop()会对同一帧重复编码几次,主要目的是达到目标码率。
    (3) 最后两者共同调用av1_encode_frame()进行下一步编码(预测变换等)。
  • 执行in-loop滤波:
    (1) 调用loopfilter_frame()进行deblocking filters。
    (2) 调用cdef_restoration_frame()执行CDEF 滤波和restoration滤波。

3.4 av1_encode_frame

av1_encode_frame

av1_encode_frame()执行:

  • 参考帧缓存管理;
  • 调用encode_frame_internal()执行无需获取其他帧的编码。encode_frame_internal()是开启partition搜索的时机。
  • encode_frame_internal()内部开始tile的划分和对tile的遍历及编码,tile再细分会遍历执行对superblock的编码。

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

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

相关文章

网友评论

    本文标题:AV1 Encoder源码剖析(二)

    本文链接:https://www.haomeiwen.com/subject/cweogdtx.html