11#ifndef AOM_AV1_ENCODER_PICKCDEF_H_
12#define AOM_AV1_ENCODER_PICKCDEF_H_
14#include "av1/common/cdef.h"
31struct MultiThreadInfo;
33#define REDUCED_PRI_STRENGTHS_LVL1 8
34#define REDUCED_PRI_STRENGTHS_LVL2 5
35#define REDUCED_SEC_STRENGTHS_LVL3 2
36#define REDUCED_SEC_STRENGTHS_LVL5 1
37#define REDUCED_PRI_STRENGTHS_LVL4 2
39#define REDUCED_TOTAL_STRENGTHS_LVL1 \
40 (REDUCED_PRI_STRENGTHS_LVL1 * CDEF_SEC_STRENGTHS)
41#define REDUCED_TOTAL_STRENGTHS_LVL2 \
42 (REDUCED_PRI_STRENGTHS_LVL2 * CDEF_SEC_STRENGTHS)
43#define REDUCED_TOTAL_STRENGTHS_LVL3 \
44 (REDUCED_PRI_STRENGTHS_LVL2 * REDUCED_SEC_STRENGTHS_LVL3)
45#define REDUCED_TOTAL_STRENGTHS_LVL4 \
46 (REDUCED_PRI_STRENGTHS_LVL4 * REDUCED_SEC_STRENGTHS_LVL3)
47#define REDUCED_TOTAL_STRENGTHS_LVL5 \
48 (REDUCED_PRI_STRENGTHS_LVL4 * REDUCED_SEC_STRENGTHS_LVL5)
49#define TOTAL_STRENGTHS (CDEF_PRI_STRENGTHS * CDEF_SEC_STRENGTHS)
51static const int priconv_lvl1[REDUCED_PRI_STRENGTHS_LVL1] = { 0, 1, 2, 3,
53static const int priconv_lvl2[REDUCED_PRI_STRENGTHS_LVL2] = { 0, 2, 4, 8, 14 };
54static const int priconv_lvl4[REDUCED_PRI_STRENGTHS_LVL4] = { 0, 11 };
55static const int priconv_lvl5[REDUCED_PRI_STRENGTHS_LVL4] = { 0, 5 };
56static const int secconv_lvl3[REDUCED_SEC_STRENGTHS_LVL3] = { 0, 2 };
57static const int secconv_lvl5[REDUCED_SEC_STRENGTHS_LVL5] = { 0 };
58static const int nb_cdef_strengths[CDEF_PICK_METHODS] = {
60 REDUCED_TOTAL_STRENGTHS_LVL1,
61 REDUCED_TOTAL_STRENGTHS_LVL2,
62 REDUCED_TOTAL_STRENGTHS_LVL3,
63 REDUCED_TOTAL_STRENGTHS_LVL4,
64 REDUCED_TOTAL_STRENGTHS_LVL5,
68typedef void (*copy_fn_t)(uint16_t *dst,
int dstride,
const void *src,
69 int src_voffset,
int src_hoffset,
int sstride,
70 int vsize,
int hsize);
71typedef uint64_t (*compute_cdef_dist_t)(
void *dst,
int dstride, uint16_t *src,
72 cdef_list *dlist,
int cdef_count,
73 BLOCK_SIZE bsize,
int coeff_shift,
90 struct macroblockd_plane plane[MAX_MB_PLANE];
98 compute_cdef_dist_t compute_cdef_dist_fn;
123 int mi_wide_l2[MAX_MB_PLANE];
128 int mi_high_l2[MAX_MB_PLANE];
133 int xdec[MAX_MB_PLANE];
138 int ydec[MAX_MB_PLANE];
142 int bsize[MAX_MB_PLANE];
157 uint64_t (*mse[2])[TOTAL_STRENGTHS];
170 int mi_row,
int mi_col) {
171 const int maxr = AOMMIN(mi_params->
mi_rows - mi_row, MI_SIZE_64X64);
172 const int maxc = AOMMIN(mi_params->
mi_cols - mi_col, MI_SIZE_64X64);
175 for (
int r = 0; r < maxr; ++r, mbmi += stride) {
176 for (
int c = 0; c < maxc; ++c) {
177 if (!mbmi[c]->skip_txfm)
return 0;
196 MI_SIZE_64X64 * fbc];
198 if (sb_all_skip(mi_params, fbr * MI_SIZE_64X64, fbc * MI_SIZE_64X64))
204 (mbmi->
bsize == BLOCK_128X128 || mbmi->
bsize == BLOCK_128X64)) ||
206 (mbmi->
bsize == BLOCK_128X128 || mbmi->
bsize == BLOCK_64X128)))
211void av1_cdef_mse_calc_block(CdefSearchCtx *cdef_search_ctx,
int fbr,
int fbc,
249 int skip_cdef_feature,
int frames_since_key,
250 CDEF_CONTROL cdef_control,
int non_reference_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, int frames_since_key, CDEF_CONTROL cdef_control, int non_reference_frame)
AV1 CDEF parameter search.
CDEF_PICK_METHOD
This enumeration defines a variety of CDEF pick methods.
Definition: speed_features.h:156
Top level common structure used by both encoder and decoder.
Definition: av1_common_int.h:750
Params related to MB_MODE_INFO arrays and related info.
Definition: av1_common_int.h:501
int mi_rows
Definition: av1_common_int.h:522
int mi_cols
Definition: av1_common_int.h:527
int mi_stride
Definition: av1_common_int.h:567
MB_MODE_INFO ** mi_grid_base
Definition: av1_common_int.h:559
Stores the prediction/txfm mode of the current coding block.
Definition: blockd.h:222
BLOCK_SIZE bsize
The block size of the current coding block.
Definition: blockd.h:228
Variables related to current coding block.
Definition: blockd.h:577
YV12 frame buffer data structure.
Definition: yv12config.h:39