AOMedia AV1 Codec: CDEF

| AOMedia AV1 Codec

Functions
CDEF
Encoder Algorithm

## Functions
void | av1_cdef_frame (YV12_BUFFER_CONFIG *frame, AV1_COMMON *const cm, MACROBLOCKD *xd, cdef_init_fb_row_t cdef_init_fb_row_fn)
| Function for applying CDEF to a frame.
void | av1_cdef_search (struct MultiThreadInfo *mt_info, const YV12_BUFFER_CONFIG *frame, const YV12_BUFFER_CONFIG *ref, AV1_COMMON *cm, MACROBLOCKD *xd, CDEF_PICK_METHOD pick_method, int rdmult, int skip_cdef_feature, CDEF_CONTROL cdef_control, const int is_screen_content, int non_reference_frame, int rtc_ext_rc)
| AV1 CDEF parameter search.
void | av1_pick_cdef_from_qp (AV1_COMMON *const cm, int skip_cdef, int is_screen_content)
| AV1 CDEF level from QP.

## Detailed Description

This module describes the CDEF parameter search algorithm in AV1. More details will be added.

## Function Documentation

## ◆ av1_cdef_frame()

void av1_cdef_frame | ( | YV12_BUFFER_CONFIG * | frame,
|  | AV1_COMMON *const | cm,
|  | MACROBLOCKD * | xd,
|  | cdef_init_fb_row_t | cdef_init_fb_row_fn
| ) |  |

Function for applying CDEF to a frame.

This function applies CDEF to a frame.

Parameters

  [in,out] | frame | Compressed frame buffer
  [in,out] | cm | Pointer to top level common structure
  [in] | xd | Pointer to common current coding block structure
  [in] | cdef_init_fb_row_fn | Function Pointer

Remarks
  Nothing is returned. Instead, the filtered frame is output in `frame`.

Referenced by cdef_restoration_frame().

## ◆ av1_cdef_search()

void av1_cdef_search | ( | struct MultiThreadInfo * | mt_info,
|  | const YV12_BUFFER_CONFIG * | frame,
|  | const YV12_BUFFER_CONFIG * | ref,
|  | AV1_COMMON * | cm,
|  | MACROBLOCKD * | xd,
|  | CDEF_PICK_METHOD | pick_method,
|  | int | rdmult,
|  | int | skip_cdef_feature,
|  | CDEF_CONTROL | cdef_control,
|  | const int | is_screen_content,
|  | int | non_reference_frame,
|  | int | rtc_ext_rc
| ) |  |

AV1 CDEF parameter search.

Searches for optimal CDEF parameters for frame

Parameters

  [in] | mt_info | Pointer to multi-threading parameters
  [in] | frame | Compressed frame buffer
  [in] | ref | Source frame buffer
  [in,out] | cm | Pointer to top level common structure
  [in] | xd | Pointer to common current coding block structure
  [in] | pick_method | The method used to select params
  [in] | rdmult | rd multiplier to use in making param choices
  [in] | skip_cdef_feature | Speed feature to skip cdef
  [in] | cdef_control | Parameter that controls CDEF application
  [in] | is_screen_content | Whether it is screen content type
  [in] | non_reference_frame | Indicates if current frame is non-reference
  [in] | rtc_ext_rc | Indicate if external RC is used for testing

Remarks
  Nothing is returned. Instead, optimal CDEF parameters are stored in the `cdef_info` structure of type CdefInfo inside `cm:`
  - `cdef_bits:` Bits of strength parameters
  - `nb_cdef_strengths:` Number of strength parameters
  - `cdef_strengths:` list of `nb_cdef_strengths` strength parameters for the luma plane.
  - `uv_cdef_strengths:` list of `nb_cdef_strengths` strength parameters for the chroma planes.
  - `damping_factor:` CDEF damping factor.

Referenced by cdef_restoration_frame().

## ◆ av1_pick_cdef_from_qp()

void av1_pick_cdef_from_qp | ( | AV1_COMMON *const | cm,
|  | int | skip_cdef,
|  | int | is_screen_content
| ) |  |

AV1 CDEF level from QP.

Calculates CDEF levels from frame QP. Only used for speed 7+ with RT mode.

Parameters

  [in,out] | cm | Pointer to top level common structure
  [in] | skip_cdef | Flag to skip CDEF filtering
  [in] | is_screen_content | Flag indicating screen content