mirror of
https://github.com/ultravideo/uvg266.git
synced 2024-11-24 02:24:07 +00:00
Removed/moved the last global variables from ALF.
This commit is contained in:
parent
f5556a5d69
commit
b17e26511f
163
src/alf.h
163
src/alf.h
|
@ -199,6 +199,42 @@ typedef struct alf_classifier {
|
||||||
int transpose_idx;
|
int transpose_idx;
|
||||||
} alf_classifier;
|
} alf_classifier;
|
||||||
|
|
||||||
|
typedef struct cc_alf_filter_param {
|
||||||
|
bool cc_alf_filter_enabled[2];
|
||||||
|
bool cc_alf_filter_idx_enabled[2][MAX_NUM_CC_ALF_FILTERS];
|
||||||
|
uint8_t cc_alf_filter_count[2];
|
||||||
|
short cc_alf_coeff[2][MAX_NUM_CC_ALF_FILTERS][MAX_NUM_CC_ALF_CHROMA_COEFF];
|
||||||
|
int new_cc_alf_filter[2];
|
||||||
|
int number_valid_components;
|
||||||
|
} cc_alf_filter_param;
|
||||||
|
|
||||||
|
typedef struct alf_aps {
|
||||||
|
int aps_id;
|
||||||
|
int temporal_id;
|
||||||
|
int layer_id;
|
||||||
|
aps_type aps_type; // aps_params_type
|
||||||
|
|
||||||
|
//sliceparams
|
||||||
|
bool enabled_flag[MAX_NUM_COMPONENT]; // alf_slice_enable_flag, alf_chroma_idc
|
||||||
|
bool non_linear_flag[MAX_NUM_CHANNEL_TYPE]; // alf_[luma/chroma]_clip_flag
|
||||||
|
|
||||||
|
short luma_coeff[MAX_NUM_ALF_CLASSES * MAX_NUM_ALF_LUMA_COEFF]; // alf_coeff_luma_delta[i][j]
|
||||||
|
int16_t luma_clipp[MAX_NUM_ALF_CLASSES * MAX_NUM_ALF_LUMA_COEFF]; // alf_clipp_luma_[i][j]
|
||||||
|
|
||||||
|
int num_alternatives_chroma; // alf_chroma_num_alts_minus_one + 1
|
||||||
|
short chroma_coeff[MAX_NUM_ALF_ALTERNATIVES_CHROMA][MAX_NUM_ALF_CHROMA_COEFF]; // alf_coeff_chroma[i]
|
||||||
|
int16_t chroma_clipp[MAX_NUM_ALF_ALTERNATIVES_CHROMA][MAX_NUM_ALF_CHROMA_COEFF]; // alf_clipp_chroma[i]
|
||||||
|
|
||||||
|
short filter_coeff_delta_idx[MAX_NUM_ALF_CLASSES]; // filter_coeff_delta[i]
|
||||||
|
bool alf_luma_coeff_flag[MAX_NUM_ALF_CLASSES]; // alf_luma_coeff_flag[i]
|
||||||
|
int num_luma_filters; // number_of_filters_minus1 + 1
|
||||||
|
bool alf_luma_coeff_delta_flag; // alf_luma_coeff_delta_flag
|
||||||
|
bool new_filter_flag[MAX_NUM_CHANNEL_TYPE];
|
||||||
|
|
||||||
|
struct cc_alf_filter_param cc_alf_aps_param;
|
||||||
|
|
||||||
|
} alf_aps;
|
||||||
|
|
||||||
typedef struct alf_info_t {
|
typedef struct alf_info_t {
|
||||||
cabac_data_t cabac_estimator;
|
cabac_data_t cabac_estimator;
|
||||||
|
|
||||||
|
@ -240,57 +276,10 @@ typedef struct alf_info_t {
|
||||||
uint8_t* cc_alf_filter_control[3]; //[ctuAddr]
|
uint8_t* cc_alf_filter_control[3]; //[ctuAddr]
|
||||||
|
|
||||||
alf_classifier **classifier;
|
alf_classifier **classifier;
|
||||||
|
alf_aps alf_param_temp;
|
||||||
|
|
||||||
} alf_info_t;
|
} alf_info_t;
|
||||||
|
|
||||||
typedef struct cc_alf_filter_param {
|
|
||||||
bool cc_alf_filter_enabled[2];
|
|
||||||
bool cc_alf_filter_idx_enabled[2][MAX_NUM_CC_ALF_FILTERS];
|
|
||||||
uint8_t cc_alf_filter_count[2];
|
|
||||||
short cc_alf_coeff[2][MAX_NUM_CC_ALF_FILTERS][MAX_NUM_CC_ALF_CHROMA_COEFF];
|
|
||||||
int new_cc_alf_filter[2];
|
|
||||||
int number_valid_components;
|
|
||||||
} cc_alf_filter_param;
|
|
||||||
|
|
||||||
typedef struct alf_aps {
|
|
||||||
int aps_id;
|
|
||||||
int aps_type;
|
|
||||||
|
|
||||||
//sliceparams
|
|
||||||
bool enabled_flag[MAX_NUM_COMPONENT]; // alf_slice_enable_flag, alf_chroma_idc
|
|
||||||
//#if JVET_O0090_ALF_CHROMA_FILTER_ALTERNATIVES_CTB
|
|
||||||
bool non_linear_flag[MAX_NUM_CHANNEL_TYPE][MAX_NUM_ALF_ALTERNATIVES_CHROMA]; // alf_[luma/chroma]_clip_flag
|
|
||||||
/*#else
|
|
||||||
bool non_linear_flag[MAX_NUM_CHANNEL_TYPE]; // alf_nonlinear_enable_flag[Luma/Chroma]
|
|
||||||
#endif*/
|
|
||||||
short luma_coeff[MAX_NUM_ALF_CLASSES * MAX_NUM_ALF_LUMA_COEFF]; // alf_coeff_luma_delta[i][j]
|
|
||||||
short luma_clipp[MAX_NUM_ALF_CLASSES * MAX_NUM_ALF_LUMA_COEFF]; // alf_clipp_luma_[i][j]
|
|
||||||
//#if JVET_O0090_ALF_CHROMA_FILTER_ALTERNATIVES_CTB
|
|
||||||
int num_alternatives_chroma; // alf_chroma_num_alts_minus_one + 1
|
|
||||||
short chroma_coeff[MAX_NUM_ALF_ALTERNATIVES_CHROMA][MAX_NUM_ALF_CHROMA_COEFF]; // alf_coeff_chroma[i]
|
|
||||||
short chroma_clipp[MAX_NUM_ALF_ALTERNATIVES_CHROMA][MAX_NUM_ALF_CHROMA_COEFF]; // alf_clipp_chroma[i]
|
|
||||||
/*#else
|
|
||||||
short chroma_coeff[MAX_NUM_ALF_CHROMA_COEFF]; // alf_coeff_chroma[i]
|
|
||||||
short chroma_clipp[MAX_NUM_ALF_CHROMA_COEFF]; // alf_clipp_chroma[i]
|
|
||||||
#endif*/
|
|
||||||
short filter_coeff_delta_idx[MAX_NUM_ALF_CLASSES]; // filter_coeff_delta[i]
|
|
||||||
bool alf_luma_coeff_flag[MAX_NUM_ALF_CLASSES]; // alf_luma_coeff_flag[i]
|
|
||||||
int num_luma_filters; // number_of_filters_minus1 + 1
|
|
||||||
bool alf_luma_coeff_delta_flag; // alf_luma_coeff_delta_flag
|
|
||||||
/*#if !JVET_O0669_REMOVE_ALF_COEFF_PRED
|
|
||||||
bool alf_luma_coeff_delta_prediction_flag; // alf_luma_coeff_delta_prediction_flag
|
|
||||||
int fixed_filter_pattern;
|
|
||||||
int fixed_filter_idx[MAX_NUM_ALF_CLASSES];
|
|
||||||
int fixed_filter_set_index;
|
|
||||||
#endif*/
|
|
||||||
//std::vector<AlfFilterShape>* filterShapes;
|
|
||||||
int t_layer;
|
|
||||||
bool new_filter_flag[MAX_NUM_CHANNEL_TYPE];
|
|
||||||
|
|
||||||
struct cc_alf_filter_param cc_alf_aps_param;
|
|
||||||
|
|
||||||
} alf_aps;
|
|
||||||
|
|
||||||
typedef struct param_set_map {
|
typedef struct param_set_map {
|
||||||
bool b_changed;
|
bool b_changed;
|
||||||
//uint8_t* p_nalu_data;
|
//uint8_t* p_nalu_data;
|
||||||
|
@ -321,27 +310,12 @@ typedef struct array_variables {
|
||||||
|
|
||||||
} array_variables;
|
} array_variables;
|
||||||
|
|
||||||
//---------------------------------------------------------------
|
|
||||||
|
|
||||||
|
|
||||||
struct cc_alf_filter_param g_cc_alf_filter_param;
|
|
||||||
|
|
||||||
//temps
|
|
||||||
static alf_aps g_alf_aps_temp;
|
|
||||||
//kvz_picture *tmp_rec_pic;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//-------------------------init function----------------------------
|
|
||||||
|
|
||||||
|
|
||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
|
|
||||||
//-------------------------help functions---------------------------
|
//-------------------------help functions---------------------------
|
||||||
|
|
||||||
void set_aps_map(kvz_config *const cfg);
|
void set_aps_map(kvz_config *const cfg);
|
||||||
void init_ctu_alternative_chroma(uint8_t* ctu_alts[MAX_NUM_COMPONENT], const int32_t num_ctus);
|
void init_ctu_alternative_chroma(const alf_aps *alf_param, uint8_t* ctu_alts[MAX_NUM_COMPONENT], const int32_t num_ctus);
|
||||||
int16_t clip_alf(const int16_t clip, const int16_t ref, const int16_t val0, const int16_t val1);
|
int16_t clip_alf(const int16_t clip, const int16_t ref, const int16_t val0, const int16_t val1);
|
||||||
int alf_clip_pixel(const int a, const clp_rng clp_rng);
|
int alf_clip_pixel(const int a, const clp_rng clp_rng);
|
||||||
int16_t alf_clip3(const int16_t min_val, const int16_t max_val, const int16_t a);
|
int16_t alf_clip3(const int16_t min_val, const int16_t max_val, const int16_t a);
|
||||||
|
@ -359,8 +333,8 @@ int gns_solve_by_chol_clip_gns(alf_covariance *cov, const int *clip, double *x,
|
||||||
double calc_error_for_coeffs(const alf_covariance *cov, const int *clip, const int *coeff, const int num_coeff, const int bit_depth);
|
double calc_error_for_coeffs(const alf_covariance *cov, const int *clip, const int *coeff, const int num_coeff, const int bit_depth);
|
||||||
double calc_error_for_cc_alf_coeffs(const alf_covariance *cov, const int16_t* coeff, const int num_coeff, const int bit_depth);
|
double calc_error_for_cc_alf_coeffs(const alf_covariance *cov, const int16_t* coeff, const int num_coeff, const int bit_depth);
|
||||||
double get_dist_coeff_force_0(bool* coded_var_bins, double error_force_0_coeff_tab[MAX_NUM_ALF_CLASSES][2], int* bits_var_bin, int zero_bits_var_bin, const int num_filters, double lambda);
|
double get_dist_coeff_force_0(bool* coded_var_bins, double error_force_0_coeff_tab[MAX_NUM_ALF_CLASSES][2], int* bits_var_bin, int zero_bits_var_bin, const int num_filters, double lambda);
|
||||||
double get_dist_force_0(channel_type channel, const int num_filters, double error_tab_force_0_coeff[MAX_NUM_ALF_CLASSES][2], bool* coded_var_bins, double lambda, int filter_coeff_set[MAX_NUM_ALF_CLASSES][MAX_NUM_ALF_LUMA_COEFF], int filter_clipp_set[MAX_NUM_ALF_CLASSES][MAX_NUM_ALF_LUMA_COEFF]);
|
double get_dist_force_0(const alf_aps *alf_param, channel_type channel, const int num_filters, double error_tab_force_0_coeff[MAX_NUM_ALF_CLASSES][2], bool* coded_var_bins, double lambda, int filter_coeff_set[MAX_NUM_ALF_CLASSES][MAX_NUM_ALF_LUMA_COEFF], int filter_clipp_set[MAX_NUM_ALF_CLASSES][MAX_NUM_ALF_LUMA_COEFF]);
|
||||||
int get_cost_filter_coeff_force_0(channel_type channel, const int num_filters, bool* coded_var_bins, int p_diff_q_filter_coeff_int_pp[MAX_NUM_ALF_CLASSES][MAX_NUM_ALF_LUMA_COEFF], int filter_clipp_set[MAX_NUM_ALF_CLASSES][MAX_NUM_ALF_LUMA_COEFF]);
|
int get_cost_filter_coeff_force_0(const alf_aps *alf_param, channel_type channel, const int num_filters, bool* coded_var_bins, int p_diff_q_filter_coeff_int_pp[MAX_NUM_ALF_CLASSES][MAX_NUM_ALF_LUMA_COEFF], int filter_clipp_set[MAX_NUM_ALF_CLASSES][MAX_NUM_ALF_LUMA_COEFF]);
|
||||||
int get_cost_filter_coeff(channel_type channel, const int num_filters, int p_diff_q_filter_coeff_int_pp[MAX_NUM_ALF_CLASSES][MAX_NUM_ALF_LUMA_COEFF]);
|
int get_cost_filter_coeff(channel_type channel, const int num_filters, int p_diff_q_filter_coeff_int_pp[MAX_NUM_ALF_CLASSES][MAX_NUM_ALF_LUMA_COEFF]);
|
||||||
int get_cost_filter_clipp(channel_type channel, const int num_filters, int p_diff_q_filter_coeff_int_pp[MAX_NUM_ALF_CLASSES][MAX_NUM_ALF_LUMA_COEFF], int filter_clipp_set[MAX_NUM_ALF_CLASSES][MAX_NUM_ALF_LUMA_COEFF]);
|
int get_cost_filter_clipp(channel_type channel, const int num_filters, int p_diff_q_filter_coeff_int_pp[MAX_NUM_ALF_CLASSES][MAX_NUM_ALF_LUMA_COEFF], int filter_clipp_set[MAX_NUM_ALF_CLASSES][MAX_NUM_ALF_LUMA_COEFF]);
|
||||||
//int get_tb_length(int ui_symbol, const int ui_max_symbol);//#if !JVET_O0491_HLS_CLEANUP
|
//int get_tb_length(int ui_symbol, const int ui_max_symbol);//#if !JVET_O0491_HLS_CLEANUP
|
||||||
|
@ -380,7 +354,6 @@ void copy_alf_param(alf_aps *dst, alf_aps *src);
|
||||||
void copy_alf_param_w_channel(alf_aps* dst, alf_aps* src, channel_type channel);
|
void copy_alf_param_w_channel(alf_aps* dst, alf_aps* src, channel_type channel);
|
||||||
void copy_aps(alf_aps *dst, alf_aps *src);
|
void copy_aps(alf_aps *dst, alf_aps *src);
|
||||||
void copy_aps_to_map(param_set_map *dst, alf_aps *src, int8_t aps_id);
|
void copy_aps_to_map(param_set_map *dst, alf_aps *src, int8_t aps_id);
|
||||||
//bool compare_alf_param(const alf_aps* aps_1, const alf_aps* aps_2);
|
|
||||||
void reset_alf_param(alf_aps *src);
|
void reset_alf_param(alf_aps *src);
|
||||||
void add_alf_cov(alf_covariance *dst, alf_covariance *src);
|
void add_alf_cov(alf_covariance *dst, alf_covariance *src);
|
||||||
void add_alf_cov_lhs_rhs(alf_covariance *dst, alf_covariance *lhs, alf_covariance *rhs);
|
void add_alf_cov_lhs_rhs(alf_covariance *dst, alf_covariance *lhs, alf_covariance *rhs);
|
||||||
|
@ -394,10 +367,8 @@ void adjust_pixels(kvz_pixel *src, int x_start, int x_end, int y_start, int y_en
|
||||||
int stride, int pic_width, int pic_height);
|
int stride, int pic_width, int pic_height);
|
||||||
void adjust_pixels_CTU_plus_4_pix(kvz_pixel *src, int x_start, int x_end, int y_start, int y_end,
|
void adjust_pixels_CTU_plus_4_pix(kvz_pixel *src, int x_start, int x_end, int y_start, int y_end,
|
||||||
int stride, int pic_width, int pic_height);
|
int stride, int pic_width, int pic_height);
|
||||||
//Need to adjust
|
|
||||||
void adjust_pixels_chroma(kvz_pixel *src, int x_start, int x_end, int y_start, int y_end,
|
void adjust_pixels_chroma(kvz_pixel *src, int x_start, int x_end, int y_start, int y_end,
|
||||||
int stride, int pic_width, int pic_height);
|
int stride, int pic_width, int pic_height);
|
||||||
|
|
||||||
void set_ctu_enable_flag(bool **flags, channel_type channel, uint8_t value, const int32_t num_ctus);
|
void set_ctu_enable_flag(bool **flags, channel_type channel, uint8_t value, const int32_t num_ctus);
|
||||||
void copy_ctu_enable_flag(bool **flags_dst, bool **flags_src, channel_type channel, const int32_t num_ctus);
|
void copy_ctu_enable_flag(bool **flags_dst, bool **flags_src, channel_type channel, const int32_t num_ctus);
|
||||||
|
|
||||||
|
@ -405,7 +376,6 @@ void copy_ctu_enable_flag(bool **flags_dst, bool **flags_src, channel_type chann
|
||||||
|
|
||||||
//-------------------------encoding functions------------------------
|
//-------------------------encoding functions------------------------
|
||||||
|
|
||||||
//is_crossed_by_virtual_boundaries -osuus epätäydellinen
|
|
||||||
void kvz_alf_enc_process(encoder_state_t *const state);
|
void kvz_alf_enc_process(encoder_state_t *const state);
|
||||||
|
|
||||||
double kvz_alf_derive_ctb_alf_enable_flags(encoder_state_t * const state,
|
double kvz_alf_derive_ctb_alf_enable_flags(encoder_state_t * const state,
|
||||||
|
@ -413,8 +383,7 @@ double kvz_alf_derive_ctb_alf_enable_flags(encoder_state_t * const state,
|
||||||
double *dist_unfilter,
|
double *dist_unfilter,
|
||||||
const int num_classes,
|
const int num_classes,
|
||||||
const double chroma_weight,
|
const double chroma_weight,
|
||||||
array_variables *arr_vars
|
array_variables *arr_vars);
|
||||||
);
|
|
||||||
|
|
||||||
void kvz_alf_create_frame_buffer(encoder_state_t * const state, alf_info_t *alf_info);
|
void kvz_alf_create_frame_buffer(encoder_state_t * const state, alf_info_t *alf_info);
|
||||||
|
|
||||||
|
@ -426,22 +395,17 @@ void kvz_alf_encoder(encoder_state_t * const state,
|
||||||
alf_aps *aps,
|
alf_aps *aps,
|
||||||
channel_type channel,
|
channel_type channel,
|
||||||
const double lambda_chroma_weight,
|
const double lambda_chroma_weight,
|
||||||
array_variables *arr_vars
|
array_variables *arr_vars);
|
||||||
|
|
||||||
);
|
|
||||||
|
|
||||||
//isIntra, PendingRasInit, IDRorBLA <--- ? selvitä nämä
|
|
||||||
void kvz_alf_get_avai_aps_ids_luma(encoder_state_t * const state,
|
void kvz_alf_get_avai_aps_ids_luma(encoder_state_t * const state,
|
||||||
int *newApsId,
|
int *newApsId,
|
||||||
int *aps_ids,
|
int *aps_ids,
|
||||||
int *size_of_aps_ids,
|
int *size_of_aps_ids,
|
||||||
short alf_clipping_values[MAX_NUM_CHANNEL_TYPE][MAX_ALF_NUM_CLIPPING_VALUES]
|
short alf_clipping_values[MAX_NUM_CHANNEL_TYPE][MAX_ALF_NUM_CLIPPING_VALUES]);
|
||||||
);
|
|
||||||
|
|
||||||
void kvz_alf_derive_stats_for_filtering(encoder_state_t * const state,
|
void kvz_alf_derive_stats_for_filtering(encoder_state_t * const state,
|
||||||
short alf_clipping_values[MAX_NUM_CHANNEL_TYPE][MAX_ALF_NUM_CLIPPING_VALUES]);
|
short alf_clipping_values[MAX_NUM_CHANNEL_TYPE][MAX_ALF_NUM_CLIPPING_VALUES]);
|
||||||
|
|
||||||
//mikä on alf_WSSD?
|
|
||||||
void kvz_alf_get_blk_stats(encoder_state_t * const state,
|
void kvz_alf_get_blk_stats(encoder_state_t * const state,
|
||||||
channel_type channel,
|
channel_type channel,
|
||||||
alf_covariance *alfCovariace,
|
alf_covariance *alfCovariace,
|
||||||
|
@ -458,8 +422,7 @@ void kvz_alf_get_blk_stats(encoder_state_t * const state,
|
||||||
const int height,
|
const int height,
|
||||||
int vb_ctu_height,
|
int vb_ctu_height,
|
||||||
int vb_pos,
|
int vb_pos,
|
||||||
short alf_clipping_values[MAX_NUM_CHANNEL_TYPE][MAX_ALF_NUM_CLIPPING_VALUES]
|
short alf_clipping_values[MAX_NUM_CHANNEL_TYPE][MAX_ALF_NUM_CLIPPING_VALUES]);
|
||||||
);
|
|
||||||
|
|
||||||
void kvz_alf_calc_covariance(int16_t e_local[MAX_NUM_ALF_LUMA_COEFF][MAX_ALF_NUM_CLIPPING_VALUES],
|
void kvz_alf_calc_covariance(int16_t e_local[MAX_NUM_ALF_LUMA_COEFF][MAX_ALF_NUM_CLIPPING_VALUES],
|
||||||
const kvz_pixel *rec,
|
const kvz_pixel *rec,
|
||||||
|
@ -467,8 +430,7 @@ void kvz_alf_calc_covariance(int16_t e_local[MAX_NUM_ALF_LUMA_COEFF][MAX_ALF_NUM
|
||||||
const channel_type channel,
|
const channel_type channel,
|
||||||
const int transpose_idx,
|
const int transpose_idx,
|
||||||
int vb_distance,
|
int vb_distance,
|
||||||
short alf_clipping_values[MAX_NUM_CHANNEL_TYPE][MAX_ALF_NUM_CLIPPING_VALUES]
|
short alf_clipping_values[MAX_NUM_CHANNEL_TYPE][MAX_ALF_NUM_CLIPPING_VALUES]);
|
||||||
);
|
|
||||||
|
|
||||||
double kvz_alf_get_filter_coeff_and_cost(encoder_state_t * const state,
|
double kvz_alf_get_filter_coeff_and_cost(encoder_state_t * const state,
|
||||||
channel_type channel,
|
channel_type channel,
|
||||||
|
@ -476,15 +438,16 @@ double kvz_alf_get_filter_coeff_and_cost(encoder_state_t * const state,
|
||||||
int *ui_coeff_bits,
|
int *ui_coeff_bits,
|
||||||
bool b_re_collect_stat,
|
bool b_re_collect_stat,
|
||||||
bool only_filter_cost,
|
bool only_filter_cost,
|
||||||
array_variables *arr_vars
|
array_variables *arr_vars);
|
||||||
);
|
|
||||||
|
|
||||||
int kvz_alf_derive_filter_coefficients_prediction_mode(channel_type channel,
|
int kvz_alf_derive_filter_coefficients_prediction_mode(const alf_aps *alf_param,
|
||||||
|
channel_type channel,
|
||||||
const int num_filters,
|
const int num_filters,
|
||||||
int filter_set[MAX_NUM_ALF_CLASSES][MAX_NUM_ALF_LUMA_COEFF],
|
int filter_set[MAX_NUM_ALF_CLASSES][MAX_NUM_ALF_LUMA_COEFF],
|
||||||
int filter_clipp_set[MAX_NUM_ALF_CLASSES][MAX_NUM_ALF_LUMA_COEFF]);
|
int filter_clipp_set[MAX_NUM_ALF_CLASSES][MAX_NUM_ALF_LUMA_COEFF]);
|
||||||
|
|
||||||
void kvz_alf_merge_classes(channel_type channel,
|
void kvz_alf_merge_classes(alf_aps *alf_aps,
|
||||||
|
channel_type channel,
|
||||||
alf_covariance* cov,
|
alf_covariance* cov,
|
||||||
alf_covariance* cov_merged,
|
alf_covariance* cov_merged,
|
||||||
int clip_merged[MAX_NUM_ALF_CLASSES][MAX_NUM_ALF_CLASSES][MAX_NUM_ALF_LUMA_COEFF],
|
int clip_merged[MAX_NUM_ALF_CLASSES][MAX_NUM_ALF_CLASSES][MAX_NUM_ALF_LUMA_COEFF],
|
||||||
|
@ -522,13 +485,10 @@ double kvz_alf_derive_coeff_quant(channel_type channel,
|
||||||
void kvz_alf_encoder_ctb(encoder_state_t * const state,
|
void kvz_alf_encoder_ctb(encoder_state_t * const state,
|
||||||
alf_aps *aps,
|
alf_aps *aps,
|
||||||
const double lambda_chroma_weight,
|
const double lambda_chroma_weight,
|
||||||
array_variables *arr_vars
|
array_variables *arr_vars);
|
||||||
|
|
||||||
);
|
|
||||||
|
|
||||||
void kvz_alf_reconstruct(encoder_state_t * const state,
|
void kvz_alf_reconstruct(encoder_state_t * const state,
|
||||||
array_variables *arr_vars
|
array_variables *arr_vars);
|
||||||
);
|
|
||||||
|
|
||||||
//-------------------------CC ALF encoding functions------------------------
|
//-------------------------CC ALF encoding functions------------------------
|
||||||
|
|
||||||
|
@ -557,7 +517,7 @@ void get_available_cc_alf_aps_ids(encoder_state_t *const state,
|
||||||
alf_component_id compID, int *aps_ids_size,
|
alf_component_id compID, int *aps_ids_size,
|
||||||
int *aps_ids);
|
int *aps_ids);
|
||||||
|
|
||||||
void apply_cc_alf_filter(encoder_state_t * const state, alf_component_id comp_id, const kvz_pixel *dst_buf,
|
void apply_cc_alf_filter(encoder_state_t * const state, alf_component_id comp_id, kvz_pixel *dst_buf,
|
||||||
const kvz_pixel *rec_yuv_ext, const int luma_stride, uint8_t *filter_control,
|
const kvz_pixel *rec_yuv_ext, const int luma_stride, uint8_t *filter_control,
|
||||||
const short filter_set[MAX_NUM_CC_ALF_FILTERS][MAX_NUM_CC_ALF_CHROMA_COEFF],
|
const short filter_set[MAX_NUM_CC_ALF_FILTERS][MAX_NUM_CC_ALF_CHROMA_COEFF],
|
||||||
const int selected_filter_idx,
|
const int selected_filter_idx,
|
||||||
|
@ -603,7 +563,7 @@ void get_frame_stats_cc_alf(alf_covariance* alf_covariance_cc_alf,
|
||||||
uint8_t *training_cov_control);
|
uint8_t *training_cov_control);
|
||||||
|
|
||||||
void filter_blk_cc_alf(encoder_state_t * const state,
|
void filter_blk_cc_alf(encoder_state_t * const state,
|
||||||
const kvz_pixel *dst_buf, const kvz_pixel *rec_src,
|
kvz_pixel *dst_buf, const kvz_pixel *rec_src,
|
||||||
const int rec_luma_stride,
|
const int rec_luma_stride,
|
||||||
const alf_component_id comp_id, const int16_t *filter_coeff,
|
const alf_component_id comp_id, const int16_t *filter_coeff,
|
||||||
const clp_rngs clp_rngs, int vb_ctu_height, int vb_pos,
|
const clp_rngs clp_rngs, int vb_ctu_height, int vb_pos,
|
||||||
|
@ -642,14 +602,12 @@ void code_alf_ctu_filter_index(encoder_state_t * const state,
|
||||||
void code_alf_ctu_alternatives_channel(encoder_state_t * const state,
|
void code_alf_ctu_alternatives_channel(encoder_state_t * const state,
|
||||||
cabac_data_t * const cabac,
|
cabac_data_t * const cabac,
|
||||||
channel_type channel,
|
channel_type channel,
|
||||||
alf_aps* aps
|
alf_aps* aps);
|
||||||
);
|
|
||||||
|
|
||||||
void code_alf_ctu_alternatives_component(encoder_state_t * const state,
|
void code_alf_ctu_alternatives_component(encoder_state_t * const state,
|
||||||
cabac_data_t * const cabac,
|
cabac_data_t * const cabac,
|
||||||
alf_component_id comp_id,
|
alf_component_id comp_id,
|
||||||
alf_aps* aps
|
alf_aps* aps);
|
||||||
);
|
|
||||||
|
|
||||||
void code_alf_ctu_alternative_ctu(encoder_state_t * const state,
|
void code_alf_ctu_alternative_ctu(encoder_state_t * const state,
|
||||||
cabac_data_t * const cabac,
|
cabac_data_t * const cabac,
|
||||||
|
@ -678,7 +636,6 @@ void encode_alf_aps_scaling_list(encoder_state_t * const state);
|
||||||
|
|
||||||
void encode_alf_aps(encoder_state_t * const state);
|
void encode_alf_aps(encoder_state_t * const state);
|
||||||
|
|
||||||
|
|
||||||
//------------------------- CC ALF cabac writer functions------------------------
|
//------------------------- CC ALF cabac writer functions------------------------
|
||||||
|
|
||||||
void code_cc_alf_filter_control_idc(encoder_state_t * const state,
|
void code_cc_alf_filter_control_idc(encoder_state_t * const state,
|
||||||
|
@ -696,18 +653,14 @@ void kvz_alf_reconstruct_coeff_aps(encoder_state_t * const state,
|
||||||
bool luma,
|
bool luma,
|
||||||
bool chroma,
|
bool chroma,
|
||||||
bool is_rdo,
|
bool is_rdo,
|
||||||
array_variables *arr_vars
|
array_variables *arr_vars);
|
||||||
|
|
||||||
);
|
|
||||||
|
|
||||||
void kvz_alf_reconstruct_coeff(encoder_state_t * const state,
|
void kvz_alf_reconstruct_coeff(encoder_state_t * const state,
|
||||||
alf_aps *aps,
|
alf_aps *aps,
|
||||||
channel_type channel,
|
channel_type channel,
|
||||||
const bool is_rdo,
|
const bool is_rdo,
|
||||||
const bool is_redo,
|
const bool is_redo,
|
||||||
array_variables *arr_vars
|
array_variables *arr_vars);
|
||||||
|
|
||||||
);
|
|
||||||
|
|
||||||
void kvz_alf_derive_classification(encoder_state_t * const state,
|
void kvz_alf_derive_classification(encoder_state_t * const state,
|
||||||
const int width,
|
const int width,
|
||||||
|
|
|
@ -1272,15 +1272,15 @@ void kvz_encoder_state_write_bitstream_slice_header(
|
||||||
|
|
||||||
if (encoder->cfg.alf_type == 2)
|
if (encoder->cfg.alf_type == 2)
|
||||||
{
|
{
|
||||||
WRITE_U(stream, g_cc_alf_filter_param.cc_alf_filter_enabled[COMPONENT_Cb - 1], 1, "slice_cc_alf_cb_enabled_flag");
|
WRITE_U(stream, state->slice->cc_filter_param->cc_alf_filter_enabled[COMPONENT_Cb - 1], 1, "slice_cc_alf_cb_enabled_flag");
|
||||||
if (g_cc_alf_filter_param.cc_alf_filter_enabled[COMPONENT_Cb - 1])
|
if (state->slice->cc_filter_param->cc_alf_filter_enabled[COMPONENT_Cb - 1])
|
||||||
{
|
{
|
||||||
// write CC ALF Cb APS ID
|
// write CC ALF Cb APS ID
|
||||||
WRITE_U(stream, state->slice->tile_group_cc_alf_cb_aps_id, 3, "slice_cc_alf_cb_aps_id");
|
WRITE_U(stream, state->slice->tile_group_cc_alf_cb_aps_id, 3, "slice_cc_alf_cb_aps_id");
|
||||||
}
|
}
|
||||||
// Cr
|
// Cr
|
||||||
WRITE_U(stream, g_cc_alf_filter_param.cc_alf_filter_enabled[COMPONENT_Cr - 1], 1, "slice_cc_alf_cr_enabled_flag");
|
WRITE_U(stream, state->slice->cc_filter_param->cc_alf_filter_enabled[COMPONENT_Cr - 1], 1, "slice_cc_alf_cr_enabled_flag");
|
||||||
if (g_cc_alf_filter_param.cc_alf_filter_enabled[COMPONENT_Cr - 1])
|
if (state->slice->cc_filter_param->cc_alf_filter_enabled[COMPONENT_Cr - 1])
|
||||||
{
|
{
|
||||||
// write CC ALF Cr APS ID
|
// write CC ALF Cr APS ID
|
||||||
WRITE_U(stream, state->slice->tile_group_cc_alf_cr_aps_id, 3, "slice_cc_alf_cr_aps_id");
|
WRITE_U(stream, state->slice->tile_group_cc_alf_cr_aps_id, 3, "slice_cc_alf_cr_aps_id");
|
||||||
|
|
|
@ -199,23 +199,8 @@ static int encoder_state_config_slice_init(encoder_state_t * const state,
|
||||||
if (state->encoder_control->cfg.alf_type) {
|
if (state->encoder_control->cfg.alf_type) {
|
||||||
state->slice->apss = malloc(sizeof(alf_aps) * ALF_CTB_MAX_NUM_APS);
|
state->slice->apss = malloc(sizeof(alf_aps) * ALF_CTB_MAX_NUM_APS);
|
||||||
state->slice->tile_group_luma_aps_id = malloc(ALF_CTB_MAX_NUM_APS * sizeof(int8_t));
|
state->slice->tile_group_luma_aps_id = malloc(ALF_CTB_MAX_NUM_APS * sizeof(int8_t));
|
||||||
//state->slice->param_set_map = malloc(sizeof(param_set_map) * ALF_CTB_MAX_NUM_APS);
|
state->slice->cc_filter_param = malloc(sizeof(*state->slice->cc_filter_param));
|
||||||
for (int aps_idx = 0; aps_idx < ALF_CTB_MAX_NUM_APS; aps_idx++) {
|
for (int aps_idx = 0; aps_idx < ALF_CTB_MAX_NUM_APS; aps_idx++) {
|
||||||
/*state->slice->apss[aps_idx].aps_id = -1;
|
|
||||||
state->slice->apss[aps_idx].num_luma_filters = -1;
|
|
||||||
state->slice->apss[aps_idx].alf_luma_coeff_delta_flag = 0;
|
|
||||||
state->slice->apss[aps_idx].alf_luma_coeff_delta_prediction_flag = 0;
|
|
||||||
state->slice->apss[aps_idx].t_layer = -1;
|
|
||||||
state->slice->apss[aps_idx].fixed_filter_pattern = -1;
|
|
||||||
state->slice->apss[aps_idx].fixed_filter_set_index = -1;*/
|
|
||||||
|
|
||||||
/*state->slice->param_set_map[aps_idx].b_changed = 0;
|
|
||||||
state->slice->param_set_map[aps_idx].parameter_set.aps_id = -1;
|
|
||||||
state->slice->param_set_map[aps_idx].parameter_set.temporal_id = -1;
|
|
||||||
state->slice->param_set_map[aps_idx].parameter_set.layer_id = -1;*/
|
|
||||||
//state->slice->param_set_map[aps_idx].p_nalu_data = malloc(sizeof(uint8_t));
|
|
||||||
//state->slice->param_set_map[aps_idx].parameter_set = malloc(sizeof(alf_aps));
|
|
||||||
|
|
||||||
state->slice->tile_group_luma_aps_id[aps_idx] = -1;
|
state->slice->tile_group_luma_aps_id[aps_idx] = -1;
|
||||||
}
|
}
|
||||||
state->slice->tile_group_num_aps = -1;
|
state->slice->tile_group_num_aps = -1;
|
||||||
|
@ -226,15 +211,6 @@ static int encoder_state_config_slice_init(encoder_state_t * const state,
|
||||||
state->slice->tile_group_cc_alf_cb_aps_id = -1;
|
state->slice->tile_group_cc_alf_cb_aps_id = -1;
|
||||||
state->slice->tile_group_cc_alf_cr_aps_id = -1;
|
state->slice->tile_group_cc_alf_cr_aps_id = -1;
|
||||||
state->slice->num_of_param_sets = 0;
|
state->slice->num_of_param_sets = 0;
|
||||||
|
|
||||||
//CcAlfFilterParam m_ccAlfFilterParam;
|
|
||||||
//uint8_t* m_ccAlfFilterControl[2];
|
|
||||||
|
|
||||||
//For virtual boundaries
|
|
||||||
//state->slice->num_hor_virtual_boundaries = 0;
|
|
||||||
//state->slice->num_ver_virtual_boundaries = 0;
|
|
||||||
//state->slice->virtual_boundaries_pos_x[3];
|
|
||||||
//state->slice->virtual_boundaries_pos_y[3];
|
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -234,6 +234,7 @@ typedef struct encoder_state_config_slice_t {
|
||||||
|
|
||||||
//ALF adaptation parameter set
|
//ALF adaptation parameter set
|
||||||
struct alf_aps *apss; //[ALF_CTB_MAX_NUM_APS];
|
struct alf_aps *apss; //[ALF_CTB_MAX_NUM_APS];
|
||||||
|
struct cc_alf_filter_param *cc_filter_param;
|
||||||
int tile_group_num_aps;
|
int tile_group_num_aps;
|
||||||
int8_t *tile_group_luma_aps_id;
|
int8_t *tile_group_luma_aps_id;
|
||||||
int tile_group_chroma_aps_id;
|
int tile_group_chroma_aps_id;
|
||||||
|
|
Loading…
Reference in a new issue