mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
avcodec/cbs_av1: split film grain param fields into their own struct
Cosmetic change in preparation for the following patches. Signed-off-by: James Almer <jamrial@gmail.com>
This commit is contained in:
parent
e4c3ec3e00
commit
aea80e2273
@ -130,6 +130,38 @@ typedef struct AV1RawSequenceHeader {
|
||||
uint8_t film_grain_params_present;
|
||||
} AV1RawSequenceHeader;
|
||||
|
||||
typedef struct AV1RawFilmGrainParams {
|
||||
uint8_t apply_grain;
|
||||
uint16_t grain_seed;
|
||||
uint8_t update_grain;
|
||||
uint8_t film_grain_params_ref_idx;
|
||||
uint8_t num_y_points;
|
||||
uint8_t point_y_value[14];
|
||||
uint8_t point_y_scaling[14];
|
||||
uint8_t chroma_scaling_from_luma;
|
||||
uint8_t num_cb_points;
|
||||
uint8_t point_cb_value[10];
|
||||
uint8_t point_cb_scaling[10];
|
||||
uint8_t num_cr_points;
|
||||
uint8_t point_cr_value[10];
|
||||
uint8_t point_cr_scaling[10];
|
||||
uint8_t grain_scaling_minus_8;
|
||||
uint8_t ar_coeff_lag;
|
||||
uint8_t ar_coeffs_y_plus_128[24];
|
||||
uint8_t ar_coeffs_cb_plus_128[25];
|
||||
uint8_t ar_coeffs_cr_plus_128[25];
|
||||
uint8_t ar_coeff_shift_minus_6;
|
||||
uint8_t grain_scale_shift;
|
||||
uint8_t cb_mult;
|
||||
uint8_t cb_luma_mult;
|
||||
uint16_t cb_offset;
|
||||
uint8_t cr_mult;
|
||||
uint8_t cr_luma_mult;
|
||||
uint16_t cr_offset;
|
||||
uint8_t overlap_flag;
|
||||
uint8_t clip_to_restricted_range;
|
||||
} AV1RawFilmGrainParams;
|
||||
|
||||
typedef struct AV1RawFrameHeader {
|
||||
uint8_t show_existing_frame;
|
||||
uint8_t frame_to_show_map_idx;
|
||||
@ -251,35 +283,7 @@ typedef struct AV1RawFrameHeader {
|
||||
//AV1RawSubexp gm_params[AV1_TOTAL_REFS_PER_FRAME][6];
|
||||
uint32_t gm_params[AV1_TOTAL_REFS_PER_FRAME][6];
|
||||
|
||||
uint8_t apply_grain;
|
||||
uint16_t grain_seed;
|
||||
uint8_t update_grain;
|
||||
uint8_t film_grain_params_ref_idx;
|
||||
uint8_t num_y_points;
|
||||
uint8_t point_y_value[14];
|
||||
uint8_t point_y_scaling[14];
|
||||
uint8_t chroma_scaling_from_luma;
|
||||
uint8_t num_cb_points;
|
||||
uint8_t point_cb_value[10];
|
||||
uint8_t point_cb_scaling[10];
|
||||
uint8_t num_cr_points;
|
||||
uint8_t point_cr_value[10];
|
||||
uint8_t point_cr_scaling[10];
|
||||
uint8_t grain_scaling_minus_8;
|
||||
uint8_t ar_coeff_lag;
|
||||
uint8_t ar_coeffs_y_plus_128[24];
|
||||
uint8_t ar_coeffs_cb_plus_128[25];
|
||||
uint8_t ar_coeffs_cr_plus_128[25];
|
||||
uint8_t ar_coeff_shift_minus_6;
|
||||
uint8_t grain_scale_shift;
|
||||
uint8_t cb_mult;
|
||||
uint8_t cb_luma_mult;
|
||||
uint16_t cb_offset;
|
||||
uint8_t cr_mult;
|
||||
uint8_t cr_luma_mult;
|
||||
uint16_t cr_offset;
|
||||
uint8_t overlap_flag;
|
||||
uint8_t clip_to_restricted_range;
|
||||
AV1RawFilmGrainParams film_grain;
|
||||
} AV1RawFrameHeader;
|
||||
|
||||
typedef struct AV1RawTileData {
|
||||
|
@ -1194,7 +1194,8 @@ static int FUNC(global_motion_params)(CodedBitstreamContext *ctx, RWContext *rw,
|
||||
}
|
||||
|
||||
static int FUNC(film_grain_params)(CodedBitstreamContext *ctx, RWContext *rw,
|
||||
AV1RawFrameHeader *current)
|
||||
AV1RawFilmGrainParams *current,
|
||||
AV1RawFrameHeader *frame_header)
|
||||
{
|
||||
CodedBitstreamAV1Context *priv = ctx->priv_data;
|
||||
const AV1RawSequenceHeader *seq = priv->sequence_header;
|
||||
@ -1202,7 +1203,7 @@ static int FUNC(film_grain_params)(CodedBitstreamContext *ctx, RWContext *rw,
|
||||
int i, err;
|
||||
|
||||
if (!seq->film_grain_params_present ||
|
||||
(!current->show_frame && !current->showable_frame))
|
||||
(!frame_header->show_frame && !frame_header->showable_frame))
|
||||
return 0;
|
||||
|
||||
flag(apply_grain);
|
||||
@ -1212,7 +1213,7 @@ static int FUNC(film_grain_params)(CodedBitstreamContext *ctx, RWContext *rw,
|
||||
|
||||
fb(16, grain_seed);
|
||||
|
||||
if (current->frame_type == AV1_FRAME_INTER)
|
||||
if (frame_header->frame_type == AV1_FRAME_INTER)
|
||||
flag(update_grain);
|
||||
else
|
||||
infer(update_grain, 1);
|
||||
@ -1635,7 +1636,7 @@ static int FUNC(uncompressed_header)(CodedBitstreamContext *ctx, RWContext *rw,
|
||||
|
||||
CHECK(FUNC(global_motion_params)(ctx, rw, current));
|
||||
|
||||
CHECK(FUNC(film_grain_params)(ctx, rw, current));
|
||||
CHECK(FUNC(film_grain_params)(ctx, rw, ¤t->film_grain, current));
|
||||
|
||||
av_log(ctx->log_ctx, AV_LOG_DEBUG, "Frame %d: size %dx%d "
|
||||
"upscaled %d render %dx%d subsample %dx%d "
|
||||
|
@ -42,6 +42,7 @@ static int nvdec_av1_start_frame(AVCodecContext *avctx, const uint8_t *buffer, u
|
||||
const AV1DecContext *s = avctx->priv_data;
|
||||
const AV1RawSequenceHeader *seq = s->raw_seq;
|
||||
const AV1RawFrameHeader *frame_header = s->raw_frame_header;
|
||||
const AV1RawFilmGrainParams *film_grain = &frame_header->film_grain;
|
||||
|
||||
NVDECContext *ctx = avctx->internal->hwaccel_priv_data;
|
||||
CUVIDPICPARAMS *pp = &ctx->pic_params;
|
||||
@ -54,7 +55,7 @@ static int nvdec_av1_start_frame(AVCodecContext *avctx, const uint8_t *buffer, u
|
||||
|
||||
int ret, i, j;
|
||||
|
||||
ret = ff_nvdec_start_frame_sep_ref(avctx, cur_frame, frame_header->apply_grain);
|
||||
ret = ff_nvdec_start_frame_sep_ref(avctx, cur_frame, film_grain->apply_grain);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
@ -181,24 +182,24 @@ static int nvdec_av1_start_frame(AVCodecContext *avctx, const uint8_t *buffer, u
|
||||
.spatial_layer_id = s->cur_frame.spatial_id,
|
||||
|
||||
/* Film Grain Params */
|
||||
.apply_grain = frame_header->apply_grain,
|
||||
.overlap_flag = frame_header->overlap_flag,
|
||||
.scaling_shift_minus8 = frame_header->grain_scaling_minus_8,
|
||||
.chroma_scaling_from_luma = frame_header->chroma_scaling_from_luma,
|
||||
.ar_coeff_lag = frame_header->ar_coeff_lag,
|
||||
.ar_coeff_shift_minus6 = frame_header->ar_coeff_shift_minus_6,
|
||||
.grain_scale_shift = frame_header->grain_scale_shift,
|
||||
.clip_to_restricted_range = frame_header->clip_to_restricted_range,
|
||||
.num_y_points = frame_header->num_y_points,
|
||||
.num_cb_points = frame_header->num_cb_points,
|
||||
.num_cr_points = frame_header->num_cr_points,
|
||||
.random_seed = frame_header->grain_seed,
|
||||
.cb_mult = frame_header->cb_mult,
|
||||
.cb_luma_mult = frame_header->cb_luma_mult,
|
||||
.cb_offset = frame_header->cb_offset,
|
||||
.cr_mult = frame_header->cr_mult,
|
||||
.cr_luma_mult = frame_header->cr_luma_mult,
|
||||
.cr_offset = frame_header->cr_offset
|
||||
.apply_grain = film_grain->apply_grain,
|
||||
.overlap_flag = film_grain->overlap_flag,
|
||||
.scaling_shift_minus8 = film_grain->grain_scaling_minus_8,
|
||||
.chroma_scaling_from_luma = film_grain->chroma_scaling_from_luma,
|
||||
.ar_coeff_lag = film_grain->ar_coeff_lag,
|
||||
.ar_coeff_shift_minus6 = film_grain->ar_coeff_shift_minus_6,
|
||||
.grain_scale_shift = film_grain->grain_scale_shift,
|
||||
.clip_to_restricted_range = film_grain->clip_to_restricted_range,
|
||||
.num_y_points = film_grain->num_y_points,
|
||||
.num_cb_points = film_grain->num_cb_points,
|
||||
.num_cr_points = film_grain->num_cr_points,
|
||||
.random_seed = film_grain->grain_seed,
|
||||
.cb_mult = film_grain->cb_mult,
|
||||
.cb_luma_mult = film_grain->cb_luma_mult,
|
||||
.cb_offset = film_grain->cb_offset,
|
||||
.cr_mult = film_grain->cr_mult,
|
||||
.cr_luma_mult = film_grain->cr_luma_mult,
|
||||
.cr_offset = film_grain->cr_offset
|
||||
}
|
||||
};
|
||||
|
||||
@ -258,23 +259,23 @@ static int nvdec_av1_start_frame(AVCodecContext *avctx, const uint8_t *buffer, u
|
||||
}
|
||||
|
||||
/* Film Grain Params */
|
||||
if (frame_header->apply_grain) {
|
||||
if (film_grain->apply_grain) {
|
||||
for (i = 0; i < 14; ++i) {
|
||||
ppc->scaling_points_y[i][0] = frame_header->point_y_value[i];
|
||||
ppc->scaling_points_y[i][1] = frame_header->point_y_scaling[i];
|
||||
ppc->scaling_points_y[i][0] = film_grain->point_y_value[i];
|
||||
ppc->scaling_points_y[i][1] = film_grain->point_y_scaling[i];
|
||||
}
|
||||
for (i = 0; i < 10; ++i) {
|
||||
ppc->scaling_points_cb[i][0] = frame_header->point_cb_value[i];
|
||||
ppc->scaling_points_cb[i][1] = frame_header->point_cb_scaling[i];
|
||||
ppc->scaling_points_cr[i][0] = frame_header->point_cr_value[i];
|
||||
ppc->scaling_points_cr[i][1] = frame_header->point_cr_scaling[i];
|
||||
ppc->scaling_points_cb[i][0] = film_grain->point_cb_value[i];
|
||||
ppc->scaling_points_cb[i][1] = film_grain->point_cb_scaling[i];
|
||||
ppc->scaling_points_cr[i][0] = film_grain->point_cr_value[i];
|
||||
ppc->scaling_points_cr[i][1] = film_grain->point_cr_scaling[i];
|
||||
}
|
||||
for (i = 0; i < 24; ++i) {
|
||||
ppc->ar_coeffs_y[i] = (short)frame_header->ar_coeffs_y_plus_128[i] - 128;
|
||||
ppc->ar_coeffs_y[i] = (short)film_grain->ar_coeffs_y_plus_128[i] - 128;
|
||||
}
|
||||
for (i = 0; i < 25; ++i) {
|
||||
ppc->ar_coeffs_cb[i] = (short)frame_header->ar_coeffs_cb_plus_128[i] - 128;
|
||||
ppc->ar_coeffs_cr[i] = (short)frame_header->ar_coeffs_cr_plus_128[i] - 128;
|
||||
ppc->ar_coeffs_cb[i] = (short)film_grain->ar_coeffs_cb_plus_128[i] - 128;
|
||||
ppc->ar_coeffs_cr[i] = (short)film_grain->ar_coeffs_cr_plus_128[i] - 128;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -56,6 +56,7 @@ static int vaapi_av1_start_frame(AVCodecContext *avctx,
|
||||
AV1DecContext *s = avctx->priv_data;
|
||||
const AV1RawSequenceHeader *seq = s->raw_seq;
|
||||
const AV1RawFrameHeader *frame_header = s->raw_frame_header;
|
||||
const AV1RawFilmGrainParams *film_grain = &frame_header->film_grain;
|
||||
VAAPIDecodePicture *pic = s->cur_frame.hwaccel_picture_private;
|
||||
VADecPictureParameterBufferAV1 pic_param;
|
||||
int8_t bit_depth_idx;
|
||||
@ -115,14 +116,14 @@ static int vaapi_av1_start_frame(AVCodecContext *avctx,
|
||||
.update_data = frame_header->segmentation_update_data,
|
||||
},
|
||||
.film_grain_info.film_grain_info_fields.bits = {
|
||||
.apply_grain = frame_header->apply_grain,
|
||||
.chroma_scaling_from_luma = frame_header->chroma_scaling_from_luma,
|
||||
.grain_scaling_minus_8 = frame_header->grain_scaling_minus_8,
|
||||
.ar_coeff_lag = frame_header->ar_coeff_lag,
|
||||
.ar_coeff_shift_minus_6 = frame_header->ar_coeff_shift_minus_6,
|
||||
.grain_scale_shift = frame_header->grain_scale_shift,
|
||||
.overlap_flag = frame_header->overlap_flag,
|
||||
.clip_to_restricted_range = frame_header->clip_to_restricted_range,
|
||||
.apply_grain = film_grain->apply_grain,
|
||||
.chroma_scaling_from_luma = film_grain->chroma_scaling_from_luma,
|
||||
.grain_scaling_minus_8 = film_grain->grain_scaling_minus_8,
|
||||
.ar_coeff_lag = film_grain->ar_coeff_lag,
|
||||
.ar_coeff_shift_minus_6 = film_grain->ar_coeff_shift_minus_6,
|
||||
.grain_scale_shift = film_grain->grain_scale_shift,
|
||||
.overlap_flag = film_grain->overlap_flag,
|
||||
.clip_to_restricted_range = film_grain->clip_to_restricted_range,
|
||||
},
|
||||
.pic_info_fields.bits = {
|
||||
.frame_type = frame_header->frame_type,
|
||||
|
Loading…
Reference in New Issue
Block a user