Re: [FFmpeg-devel] [PATCH 04/10] avcodec/evc_parse: split off Parameter Set parsing into its own file

2023-06-20 Thread James Almer
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

2023-06-20 Thread Dawid Kozinski/Multimedia (PLT) /SRPOL/Staff Engineer/Samsung Electronics
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

2023-06-17 Thread James Almer
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);
-