Re: [FFmpeg-devel] [PATCH 04/10] avcodec/evc_parse: split off Parameter Set parsing into its own file
On 6/20/2023 4:37 AM, Dawid Kozinski/Multimedia (PLT) /SRPOL/Staff Engineer/Samsung Electronics wrote: Why have you split off the parameter set parsing into its own file? Just asking what's the reason. I copied the design from h264. Smaller source files are better than monolith ones. And an eventual native decoder will benefit from this being already in place. ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".
Re: [FFmpeg-devel] [PATCH 04/10] avcodec/evc_parse: split off Parameter Set parsing into its own file
Why have you split off the parameter set parsing into its own file? Just asking what's the reason. > -Original Message- > From: ffmpeg-devel On Behalf Of James > Almer > Sent: niedziela, 18 czerwca 2023 00:00 > To: ffmpeg-devel@ffmpeg.org > Subject: [FFmpeg-devel] [PATCH 04/10] avcodec/evc_parse: split off Parameter > Set parsing into its own file > > Signed-off-by: James Almer > --- > libavcodec/Makefile | 2 +- > libavcodec/evc_frame_merge_bsf.c | 4 +- > libavcodec/evc_parse.c | 371 +- > libavcodec/evc_parse.h | 198 +--- > libavcodec/evc_parser.c | 2 +- > libavcodec/evc_ps.c | 381 +++ > libavcodec/evc_ps.h | 228 ++ > 7 files changed, 621 insertions(+), 565 deletions(-) > create mode 100644 libavcodec/evc_ps.c > create mode 100644 libavcodec/evc_ps.h > > diff --git a/libavcodec/Makefile b/libavcodec/Makefile > index 0ce8fe5b9c..723bfa25c7 100644 > --- a/libavcodec/Makefile > +++ b/libavcodec/Makefile > @@ -84,7 +84,7 @@ OBJS-$(CONFIG_DCT) += dct.o dct32_fixed.o > dct32_float.o > OBJS-$(CONFIG_DEFLATE_WRAPPER) += zlib_wrapper.o > OBJS-$(CONFIG_DOVI_RPU)+= dovi_rpu.o > OBJS-$(CONFIG_ERROR_RESILIENCE)+= error_resilience.o > -OBJS-$(CONFIG_EVCPARSE)+= evc_parse.o > +OBJS-$(CONFIG_EVCPARSE)+= evc_parse.o evc_ps.o > OBJS-$(CONFIG_EXIF)+= exif.o tiff_common.o > OBJS-$(CONFIG_FAANDCT) += faandct.o > OBJS-$(CONFIG_FAANIDCT)+= faanidct.o > diff --git a/libavcodec/evc_frame_merge_bsf.c > b/libavcodec/evc_frame_merge_bsf.c > index 540bb63631..f497780afb 100644 > --- a/libavcodec/evc_frame_merge_bsf.c > +++ b/libavcodec/evc_frame_merge_bsf.c > @@ -58,7 +58,7 @@ static void evc_frame_merge_flush(AVBSFContext *bsf) > { > EVCFMergeContext *ctx = bsf->priv_data; > > -ff_evc_parse_free(>parser_ctx); > +ff_evc_ps_free(>parser_ctx.ps); > av_packet_unref(ctx->in); > ctx->au_buffer.data_size = 0; > } > @@ -147,7 +147,7 @@ static void evc_frame_merge_close(AVBSFContext *bsf) > EVCFMergeContext *ctx = bsf->priv_data; > > av_packet_free(>in); > -ff_evc_parse_free(>parser_ctx); > +ff_evc_ps_free(>parser_ctx.ps); > > ctx->au_buffer.capacity = 0; > av_freep(>au_buffer.data); > diff --git a/libavcodec/evc_parse.c b/libavcodec/evc_parse.c > index 44be5c5291..a8e6356b96 100644 > --- a/libavcodec/evc_parse.c > +++ b/libavcodec/evc_parse.c > @@ -21,8 +21,6 @@ > #include "evc.h" > #include "evc_parse.h" > > -#define EXTENDED_SAR255 > - > #define NUM_CHROMA_FORMATS 4 // @see ISO_IEC_23094-1 section 6.2 > table 2 > > static const enum AVPixelFormat pix_fmts_8bit[NUM_CHROMA_FORMATS] = { > @@ -71,355 +69,6 @@ int ff_evc_get_temporal_id(const uint8_t *bits, int > bits_size, void *logctx) > return temporal_id; > } > > -// @see ISO_IEC_23094-1 (7.3.7 Reference picture list structure syntax) > -static int ref_pic_list_struct(GetBitContext *gb, RefPicListStruct *rpl) > -{ > -uint32_t delta_poc_st, strp_entry_sign_flag = 0; > -rpl->ref_pic_num = get_ue_golomb(gb); > -if (rpl->ref_pic_num > 0) { > -delta_poc_st = get_ue_golomb(gb); > - > -rpl->ref_pics[0] = delta_poc_st; > -if (rpl->ref_pics[0] != 0) { > -strp_entry_sign_flag = get_bits(gb, 1); > - > -rpl->ref_pics[0] *= 1 - (strp_entry_sign_flag << 1); > -} > -} > - > -for (int i = 1; i < rpl->ref_pic_num; ++i) { > -delta_poc_st = get_ue_golomb(gb); > -if (delta_poc_st != 0) > -strp_entry_sign_flag = get_bits(gb, 1); > -rpl->ref_pics[i] = rpl->ref_pics[i - 1] + delta_poc_st * (1 - > (strp_entry_sign_flag << 1)); > -} > - > -return 0; > -} > - > -// @see ISO_IEC_23094-1 (E.2.2 HRD parameters syntax) > -static int hrd_parameters(GetBitContext *gb, HRDParameters *hrd) > -{ > -hrd->cpb_cnt_minus1 = get_ue_golomb(gb); > -hrd->bit_rate_scale = get_bits(gb, 4); > -hrd->cpb_size_scale = get_bits(gb, 4); > -for (int SchedSelIdx = 0; SchedSelIdx <= hrd->cpb_cnt_minus1; SchedSelIdx++) > { > -hrd->bit_rate_value_minus1[SchedSelIdx] = get_ue_golomb(gb); > -hrd->cpb_size_value_minus1[SchedSelIdx] = get_ue_golomb(gb); > -hrd->cbr_flag[SchedSelIdx] = get_bits(gb, 1); > -} > -hrd->
[FFmpeg-devel] [PATCH 04/10] avcodec/evc_parse: split off Parameter Set parsing into its own file
Signed-off-by: James Almer --- libavcodec/Makefile | 2 +- libavcodec/evc_frame_merge_bsf.c | 4 +- libavcodec/evc_parse.c | 371 +- libavcodec/evc_parse.h | 198 +--- libavcodec/evc_parser.c | 2 +- libavcodec/evc_ps.c | 381 +++ libavcodec/evc_ps.h | 228 ++ 7 files changed, 621 insertions(+), 565 deletions(-) create mode 100644 libavcodec/evc_ps.c create mode 100644 libavcodec/evc_ps.h diff --git a/libavcodec/Makefile b/libavcodec/Makefile index 0ce8fe5b9c..723bfa25c7 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -84,7 +84,7 @@ OBJS-$(CONFIG_DCT) += dct.o dct32_fixed.o dct32_float.o OBJS-$(CONFIG_DEFLATE_WRAPPER) += zlib_wrapper.o OBJS-$(CONFIG_DOVI_RPU)+= dovi_rpu.o OBJS-$(CONFIG_ERROR_RESILIENCE)+= error_resilience.o -OBJS-$(CONFIG_EVCPARSE)+= evc_parse.o +OBJS-$(CONFIG_EVCPARSE)+= evc_parse.o evc_ps.o OBJS-$(CONFIG_EXIF)+= exif.o tiff_common.o OBJS-$(CONFIG_FAANDCT) += faandct.o OBJS-$(CONFIG_FAANIDCT)+= faanidct.o diff --git a/libavcodec/evc_frame_merge_bsf.c b/libavcodec/evc_frame_merge_bsf.c index 540bb63631..f497780afb 100644 --- a/libavcodec/evc_frame_merge_bsf.c +++ b/libavcodec/evc_frame_merge_bsf.c @@ -58,7 +58,7 @@ static void evc_frame_merge_flush(AVBSFContext *bsf) { EVCFMergeContext *ctx = bsf->priv_data; -ff_evc_parse_free(>parser_ctx); +ff_evc_ps_free(>parser_ctx.ps); av_packet_unref(ctx->in); ctx->au_buffer.data_size = 0; } @@ -147,7 +147,7 @@ static void evc_frame_merge_close(AVBSFContext *bsf) EVCFMergeContext *ctx = bsf->priv_data; av_packet_free(>in); -ff_evc_parse_free(>parser_ctx); +ff_evc_ps_free(>parser_ctx.ps); ctx->au_buffer.capacity = 0; av_freep(>au_buffer.data); diff --git a/libavcodec/evc_parse.c b/libavcodec/evc_parse.c index 44be5c5291..a8e6356b96 100644 --- a/libavcodec/evc_parse.c +++ b/libavcodec/evc_parse.c @@ -21,8 +21,6 @@ #include "evc.h" #include "evc_parse.h" -#define EXTENDED_SAR255 - #define NUM_CHROMA_FORMATS 4 // @see ISO_IEC_23094-1 section 6.2 table 2 static const enum AVPixelFormat pix_fmts_8bit[NUM_CHROMA_FORMATS] = { @@ -71,355 +69,6 @@ int ff_evc_get_temporal_id(const uint8_t *bits, int bits_size, void *logctx) return temporal_id; } -// @see ISO_IEC_23094-1 (7.3.7 Reference picture list structure syntax) -static int ref_pic_list_struct(GetBitContext *gb, RefPicListStruct *rpl) -{ -uint32_t delta_poc_st, strp_entry_sign_flag = 0; -rpl->ref_pic_num = get_ue_golomb(gb); -if (rpl->ref_pic_num > 0) { -delta_poc_st = get_ue_golomb(gb); - -rpl->ref_pics[0] = delta_poc_st; -if (rpl->ref_pics[0] != 0) { -strp_entry_sign_flag = get_bits(gb, 1); - -rpl->ref_pics[0] *= 1 - (strp_entry_sign_flag << 1); -} -} - -for (int i = 1; i < rpl->ref_pic_num; ++i) { -delta_poc_st = get_ue_golomb(gb); -if (delta_poc_st != 0) -strp_entry_sign_flag = get_bits(gb, 1); -rpl->ref_pics[i] = rpl->ref_pics[i - 1] + delta_poc_st * (1 - (strp_entry_sign_flag << 1)); -} - -return 0; -} - -// @see ISO_IEC_23094-1 (E.2.2 HRD parameters syntax) -static int hrd_parameters(GetBitContext *gb, HRDParameters *hrd) -{ -hrd->cpb_cnt_minus1 = get_ue_golomb(gb); -hrd->bit_rate_scale = get_bits(gb, 4); -hrd->cpb_size_scale = get_bits(gb, 4); -for (int SchedSelIdx = 0; SchedSelIdx <= hrd->cpb_cnt_minus1; SchedSelIdx++) { -hrd->bit_rate_value_minus1[SchedSelIdx] = get_ue_golomb(gb); -hrd->cpb_size_value_minus1[SchedSelIdx] = get_ue_golomb(gb); -hrd->cbr_flag[SchedSelIdx] = get_bits(gb, 1); -} -hrd->initial_cpb_removal_delay_length_minus1 = get_bits(gb, 5); -hrd->cpb_removal_delay_length_minus1 = get_bits(gb, 5); -hrd->cpb_removal_delay_length_minus1 = get_bits(gb, 5); -hrd->time_offset_length = get_bits(gb, 5); - -return 0; -} - -// @see ISO_IEC_23094-1 (E.2.1 VUI parameters syntax) -static int vui_parameters(GetBitContext *gb, VUIParameters *vui) -{ -vui->aspect_ratio_info_present_flag = get_bits(gb, 1); -if (vui->aspect_ratio_info_present_flag) { -vui->aspect_ratio_idc = get_bits(gb, 8); -if (vui->aspect_ratio_idc == EXTENDED_SAR) { -vui->sar_width = get_bits(gb, 16); -vui->sar_height = get_bits(gb, 16); -} -} -vui->overscan_info_present_flag = get_bits(gb, 1); -if (vui->overscan_info_present_flag) -vui->overscan_appropriate_flag = get_bits(gb, 1); -vui->video_signal_type_present_flag = get_bits(gb, 1); -if (vui->video_signal_type_present_flag) { -vui->video_format = get_bits(gb, 3); -