Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
* [FFmpeg-devel] [PATCH 01/11] avformat/evcdec: set the demuxer as AVFMT_NOTIMESTAMPS
@ 2023-06-15 15:18 James Almer
  2023-06-15 15:18 ` [FFmpeg-devel] [PATCH 02/11] avcodec/evc_parser: remove superfluous memset calls James Almer
                   ` (10 more replies)
  0 siblings, 11 replies; 14+ messages in thread
From: James Almer @ 2023-06-15 15:18 UTC (permalink / raw)
  To: ffmpeg-devel

Signed-off-by: James Almer <jamrial@gmail.com>
---
 libavformat/evcdec.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavformat/evcdec.c b/libavformat/evcdec.c
index 89eda0f53e..807406885a 100644
--- a/libavformat/evcdec.c
+++ b/libavformat/evcdec.c
@@ -268,7 +268,7 @@ const AVInputFormat ff_evc_demuxer = {
     .read_packet    = evc_read_packet, // annexb_read_packet
     .read_close     = evc_read_close,
     .extensions     = "evc",
-    .flags          = AVFMT_GENERIC_INDEX,
+    .flags          = AVFMT_GENERIC_INDEX | AVFMT_NOTIMESTAMPS,
     .flags_internal = FF_FMT_INIT_CLEANUP,
     .raw_codec_id   = AV_CODEC_ID_EVC,
     .priv_data_size = sizeof(EVCDemuxContext),
-- 
2.41.0

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [FFmpeg-devel] [PATCH 02/11] avcodec/evc_parser: remove superfluous memset calls
  2023-06-15 15:18 [FFmpeg-devel] [PATCH 01/11] avformat/evcdec: set the demuxer as AVFMT_NOTIMESTAMPS James Almer
@ 2023-06-15 15:18 ` James Almer
  2023-06-15 15:19   ` Paul B Mahol
  2023-06-15 15:18 ` [FFmpeg-devel] [PATCH 03/11] avcodec/evc_parser: export framerate to the AVCodecContext James Almer
                   ` (9 subsequent siblings)
  10 siblings, 1 reply; 14+ messages in thread
From: James Almer @ 2023-06-15 15:18 UTC (permalink / raw)
  To: ffmpeg-devel

The entire EVCParserContext will be zeroed during allocation.

Signed-off-by: James Almer <jamrial@gmail.com>
---
 libavcodec/evc_parser.c | 12 ------------
 1 file changed, 12 deletions(-)

diff --git a/libavcodec/evc_parser.c b/libavcodec/evc_parser.c
index 7528fb13db..639dcbd135 100644
--- a/libavcodec/evc_parser.c
+++ b/libavcodec/evc_parser.c
@@ -197,17 +197,6 @@ static int evc_parse(AVCodecParserContext *s, AVCodecContext *avctx,
     return next;
 }
 
-static int evc_parser_init(AVCodecParserContext *s)
-{
-    EVCParserContext *ctx = s->priv_data;
-
-    memset(ctx->sps, 0, sizeof(EVCParserSPS *)*EVC_MAX_SPS_COUNT);
-    memset(ctx->pps, 0, sizeof(EVCParserPPS *)*EVC_MAX_PPS_COUNT);
-    memset(ctx->slice_header, 0, sizeof(EVCParserSliceHeader *)*EVC_MAX_PPS_COUNT);
-
-    return 0;
-}
-
 static void evc_parser_close(AVCodecParserContext *s)
 {
     EVCParserContext *ctx = s->priv_data;
@@ -229,7 +218,6 @@ static void evc_parser_close(AVCodecParserContext *s)
 const AVCodecParser ff_evc_parser = {
     .codec_ids      = { AV_CODEC_ID_EVC },
     .priv_data_size = sizeof(EVCParserContext),
-    .parser_init    = evc_parser_init,
     .parser_parse   = evc_parse,
     .parser_close   = evc_parser_close,
 };
-- 
2.41.0

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [FFmpeg-devel] [PATCH 03/11] avcodec/evc_parser: export framerate to the AVCodecContext
  2023-06-15 15:18 [FFmpeg-devel] [PATCH 01/11] avformat/evcdec: set the demuxer as AVFMT_NOTIMESTAMPS James Almer
  2023-06-15 15:18 ` [FFmpeg-devel] [PATCH 02/11] avcodec/evc_parser: remove superfluous memset calls James Almer
@ 2023-06-15 15:18 ` James Almer
  2023-06-15 15:18 ` [FFmpeg-devel] [PATCH 04/11] avcodec/evc_parse: zero sps, pps and sh structs James Almer
                   ` (8 subsequent siblings)
  10 siblings, 0 replies; 14+ messages in thread
From: James Almer @ 2023-06-15 15:18 UTC (permalink / raw)
  To: ffmpeg-devel

Signed-off-by: James Almer <jamrial@gmail.com>
---
 libavcodec/evc_parse.c  | 15 +++++++--------
 libavcodec/evc_parser.c |  1 +
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/libavcodec/evc_parse.c b/libavcodec/evc_parse.c
index f69d7ffb6b..68f0d31f96 100644
--- a/libavcodec/evc_parse.c
+++ b/libavcodec/evc_parse.c
@@ -605,14 +605,13 @@ int ff_evc_parse_nal_unit(EVCParserContext *ctx, const uint8_t *buf, int buf_siz
         if (sps->profile_idc == 1) ctx->profile = FF_PROFILE_EVC_MAIN;
         else ctx->profile = FF_PROFILE_EVC_BASELINE;
 
-        if (sps->vui_parameters_present_flag) {
-            if (sps->vui_parameters.timing_info_present_flag) {
-                int64_t num = sps->vui_parameters.num_units_in_tick;
-                int64_t den = sps->vui_parameters.time_scale;
-                if (num != 0 && den != 0)
-                    av_reduce(&ctx->framerate.den, &ctx->framerate.num, num, den, 1 << 30);
-            }
-        }
+        if (sps->vui_parameters_present_flag && sps->vui_parameters.timing_info_present_flag) {
+            int64_t num = sps->vui_parameters.num_units_in_tick;
+            int64_t den = sps->vui_parameters.time_scale;
+            if (num != 0 && den != 0)
+                av_reduce(&ctx->framerate.den, &ctx->framerate.num, num, den, 1 << 30);
+        } else
+            ctx->framerate = (AVRational) { 0, 1 };
 
         bit_depth = sps->bit_depth_chroma_minus8 + 8;
         ctx->format = AV_PIX_FMT_NONE;
diff --git a/libavcodec/evc_parser.c b/libavcodec/evc_parser.c
index 639dcbd135..5feb673b04 100644
--- a/libavcodec/evc_parser.c
+++ b/libavcodec/evc_parser.c
@@ -71,6 +71,7 @@ static int parse_nal_units(AVCodecParserContext *s, AVCodecContext *avctx, const
 
             s->format              = ctx->format;
 
+            avctx->framerate       = ctx->framerate;
             avctx->gop_size        = ctx->gop_size;
             avctx->delay           = ctx->delay;
             avctx->profile         = ctx->profile;
-- 
2.41.0

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [FFmpeg-devel] [PATCH 04/11] avcodec/evc_parse: zero sps, pps and sh structs
  2023-06-15 15:18 [FFmpeg-devel] [PATCH 01/11] avformat/evcdec: set the demuxer as AVFMT_NOTIMESTAMPS James Almer
  2023-06-15 15:18 ` [FFmpeg-devel] [PATCH 02/11] avcodec/evc_parser: remove superfluous memset calls James Almer
  2023-06-15 15:18 ` [FFmpeg-devel] [PATCH 03/11] avcodec/evc_parser: export framerate to the AVCodecContext James Almer
@ 2023-06-15 15:18 ` James Almer
  2023-06-15 15:18 ` [FFmpeg-devel] [PATCH 05/11] avcodec/evc_parse: use a local EVCParserSliceHeader when parsing slices James Almer
                   ` (7 subsequent siblings)
  10 siblings, 0 replies; 14+ messages in thread
From: James Almer @ 2023-06-15 15:18 UTC (permalink / raw)
  To: ffmpeg-devel

Otherwise stale values may remain in place.

Signed-off-by: James Almer <jamrial@gmail.com>
---
 libavcodec/evc_parse.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/libavcodec/evc_parse.c b/libavcodec/evc_parse.c
index 68f0d31f96..f8a4ca3e07 100644
--- a/libavcodec/evc_parse.c
+++ b/libavcodec/evc_parse.c
@@ -200,6 +200,8 @@ EVCParserSPS *ff_evc_parse_sps(EVCParserContext *ctx, const uint8_t *bs, int bs_
     }
 
     sps = ctx->sps[sps_seq_parameter_set_id];
+    memset(sps, 0, sizeof(*sps));
+
     sps->sps_seq_parameter_set_id = sps_seq_parameter_set_id;
 
     // the Baseline profile is indicated by profile_idc eqal to 0
@@ -360,6 +362,7 @@ EVCParserPPS *ff_evc_parse_pps(EVCParserContext *ctx, const uint8_t *bs, int bs_
     }
 
     pps = ctx->pps[pps_pic_parameter_set_id];
+    memset(pps, 0, sizeof(*pps));
 
     pps->pps_pic_parameter_set_id = pps_pic_parameter_set_id;
 
@@ -440,6 +443,7 @@ EVCParserSliceHeader *ff_evc_parse_slice_header(EVCParserContext *ctx, const uin
     }
 
     sh = ctx->slice_header[slice_pic_parameter_set_id];
+    memset(sh, 0, sizeof(*sh));
 
     pps = ctx->pps[slice_pic_parameter_set_id];
     if(!pps)
-- 
2.41.0

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [FFmpeg-devel] [PATCH 05/11] avcodec/evc_parse: use a local EVCParserSliceHeader when parsing slices
  2023-06-15 15:18 [FFmpeg-devel] [PATCH 01/11] avformat/evcdec: set the demuxer as AVFMT_NOTIMESTAMPS James Almer
                   ` (2 preceding siblings ...)
  2023-06-15 15:18 ` [FFmpeg-devel] [PATCH 04/11] avcodec/evc_parse: zero sps, pps and sh structs James Almer
@ 2023-06-15 15:18 ` James Almer
  2023-06-15 15:18 ` [FFmpeg-devel] [PATCH 06/11] avcodec/evc_parse: use the correct struct size when allocating pps James Almer
                   ` (6 subsequent siblings)
  10 siblings, 0 replies; 14+ messages in thread
From: James Almer @ 2023-06-15 15:18 UTC (permalink / raw)
  To: ffmpeg-devel

There's no need to store EVC_MAX_PPS_COUNT amount of slice headers in EVCParserContext.

Signed-off-by: James Almer <jamrial@gmail.com>
---
 libavcodec/evc_parse.c  | 50 +++++++++++++++++------------------------
 libavcodec/evc_parse.h  |  4 ----
 libavcodec/evc_parser.c |  2 --
 3 files changed, 21 insertions(+), 35 deletions(-)

diff --git a/libavcodec/evc_parse.c b/libavcodec/evc_parse.c
index f8a4ca3e07..71e2605281 100644
--- a/libavcodec/evc_parse.c
+++ b/libavcodec/evc_parse.c
@@ -419,40 +419,33 @@ EVCParserPPS *ff_evc_parse_pps(EVCParserContext *ctx, const uint8_t *bs, int bs_
 }
 
 // @see ISO_IEC_23094-1 (7.3.2.6 Slice layer RBSP syntax)
-EVCParserSliceHeader *ff_evc_parse_slice_header(EVCParserContext *ctx, const uint8_t *bs, int bs_size)
+static int evc_parse_slice_header(EVCParserContext *ctx, EVCParserSliceHeader *sh, const uint8_t *bs, int bs_size)
 {
     GetBitContext gb;
-    EVCParserSliceHeader *sh;
     EVCParserPPS *pps;
     EVCParserSPS *sps;
 
     int num_tiles_in_slice = 0;
     int slice_pic_parameter_set_id;
+    int ret;
 
-    if (init_get_bits8(&gb, bs, bs_size) < 0)
-        return NULL;
+    if ((ret = init_get_bits8(&gb, bs, bs_size)) < 0)
+        return ret;
 
     slice_pic_parameter_set_id = get_ue_golomb(&gb);
 
     if (slice_pic_parameter_set_id < 0 || slice_pic_parameter_set_id >= EVC_MAX_PPS_COUNT)
-        return NULL;
-
-    if(!ctx->slice_header[slice_pic_parameter_set_id]) {
-        if((ctx->slice_header[slice_pic_parameter_set_id] = av_malloc(sizeof(EVCParserSliceHeader))) == NULL)
-            return NULL;
-    }
-
-    sh = ctx->slice_header[slice_pic_parameter_set_id];
-    memset(sh, 0, sizeof(*sh));
+        return AVERROR_INVALIDDATA;
 
     pps = ctx->pps[slice_pic_parameter_set_id];
     if(!pps)
-        return NULL;
+        return AVERROR_INVALIDDATA;
 
     sps = ctx->sps[slice_pic_parameter_set_id];
     if(!sps)
-        return NULL;
+        return AVERROR_INVALIDDATA;
 
+    memset(sh, 0, sizeof(*sh));
     sh->slice_pic_parameter_set_id = slice_pic_parameter_set_id;
 
     if (!pps->single_tile_in_pic_flag) {
@@ -540,7 +533,7 @@ EVCParserSliceHeader *ff_evc_parse_slice_header(EVCParserContext *ctx, const uin
     // If necessary, add the missing fields to the EVCParserSliceHeader structure
     // and then extend parser implementation
 
-    return sh;
+    return 0;
 }
 
 int ff_evc_parse_nal_unit(EVCParserContext *ctx, const uint8_t *buf, int buf_size, void *logctx)
@@ -660,17 +653,17 @@ int ff_evc_parse_nal_unit(EVCParserContext *ctx, const uint8_t *buf, int buf_siz
         break;
     case EVC_IDR_NUT:   // Coded slice of a IDR or non-IDR picture
     case EVC_NOIDR_NUT: {
-        EVCParserSliceHeader *sh;
+        EVCParserSliceHeader sh;
         EVCParserSPS *sps;
-        int slice_pic_parameter_set_id;
+        int ret;
 
-        sh = ff_evc_parse_slice_header(ctx, data, nalu_size);
-        if (!sh) {
+        ret = evc_parse_slice_header(ctx, &sh, data, nalu_size);
+        if (ret < 0) {
             av_log(logctx, AV_LOG_ERROR, "Slice header parsing error\n");
-            return AVERROR_INVALIDDATA;
+            return ret;
         }
 
-        switch (sh->slice_type) {
+        switch (sh.slice_type) {
         case EVC_SLICE_TYPE_B: {
             ctx->pict_type =  AV_PICTURE_TYPE_B;
             break;
@@ -692,8 +685,7 @@ int ff_evc_parse_nal_unit(EVCParserContext *ctx, const uint8_t *buf, int buf_siz
 
         // POC (picture order count of the current picture) derivation
         // @see ISO/IEC 23094-1:2020(E) 8.3.1 Decoding process for picture order count
-        slice_pic_parameter_set_id = sh->slice_pic_parameter_set_id;
-        sps = ctx->sps[slice_pic_parameter_set_id];
+        sps = ctx->sps[sh.slice_pic_parameter_set_id];
 
         if (sps && sps->sps_pocs_flag) {
 
@@ -709,20 +701,20 @@ int ff_evc_parse_nal_unit(EVCParserContext *ctx, const uint8_t *buf, int buf_siz
                 int prevPicOrderCntMsb = ctx->poc.PicOrderCntVal - prevPicOrderCntLsb;
 
 
-                if ((sh->slice_pic_order_cnt_lsb < prevPicOrderCntLsb) &&
-                    ((prevPicOrderCntLsb - sh->slice_pic_order_cnt_lsb) >= (MaxPicOrderCntLsb / 2)))
+                if ((sh.slice_pic_order_cnt_lsb < prevPicOrderCntLsb) &&
+                    ((prevPicOrderCntLsb - sh.slice_pic_order_cnt_lsb) >= (MaxPicOrderCntLsb / 2)))
 
                     PicOrderCntMsb = prevPicOrderCntMsb + MaxPicOrderCntLsb;
 
-                else if ((sh->slice_pic_order_cnt_lsb > prevPicOrderCntLsb) &&
-                         ((sh->slice_pic_order_cnt_lsb - prevPicOrderCntLsb) > (MaxPicOrderCntLsb / 2)))
+                else if ((sh.slice_pic_order_cnt_lsb > prevPicOrderCntLsb) &&
+                         ((sh.slice_pic_order_cnt_lsb - prevPicOrderCntLsb) > (MaxPicOrderCntLsb / 2)))
 
                     PicOrderCntMsb = prevPicOrderCntMsb - MaxPicOrderCntLsb;
 
                 else
                     PicOrderCntMsb = prevPicOrderCntMsb;
             }
-            ctx->poc.PicOrderCntVal = PicOrderCntMsb + sh->slice_pic_order_cnt_lsb;
+            ctx->poc.PicOrderCntVal = PicOrderCntMsb + sh.slice_pic_order_cnt_lsb;
 
         } else {
             if (nalu_type == EVC_IDR_NUT) {
diff --git a/libavcodec/evc_parse.h b/libavcodec/evc_parse.h
index d74a3b5159..1c1b8ec093 100644
--- a/libavcodec/evc_parse.h
+++ b/libavcodec/evc_parse.h
@@ -261,7 +261,6 @@ typedef struct EVCParserContext {
     //ParseContext pc;
     EVCParserSPS *sps[EVC_MAX_SPS_COUNT];
     EVCParserPPS *pps[EVC_MAX_PPS_COUNT];
-    EVCParserSliceHeader *slice_header[EVC_MAX_PPS_COUNT];
 
     EVCParserPoc poc;
 
@@ -349,9 +348,6 @@ EVCParserSPS *ff_evc_parse_sps(EVCParserContext *ctx, const uint8_t *bs, int bs_
 // @see ISO_IEC_23094-1 (7.3.2.2 SPS RBSP syntax)
 EVCParserPPS *ff_evc_parse_pps(EVCParserContext *ctx, const uint8_t *bs, int bs_size);
 
-// @see ISO_IEC_23094-1 (7.3.2.6 Slice layer RBSP syntax)
-EVCParserSliceHeader *ff_evc_parse_slice_header(EVCParserContext *ctx, const uint8_t *bs, int bs_size);
-
 int ff_evc_parse_nal_unit(EVCParserContext *ctx, const uint8_t *buf, int buf_size, void *logctx);
 
 #endif /* AVCODEC_EVC_PARSE_H */
diff --git a/libavcodec/evc_parser.c b/libavcodec/evc_parser.c
index 5feb673b04..072fe41bf1 100644
--- a/libavcodec/evc_parser.c
+++ b/libavcodec/evc_parser.c
@@ -209,10 +209,8 @@ static void evc_parser_close(AVCodecParserContext *s)
 
     for(int i = 0; i < EVC_MAX_PPS_COUNT; i++) {
         EVCParserPPS *pps = ctx->pps[i];
-        EVCParserSliceHeader *sh = ctx->slice_header[i];
 
         av_freep(&pps);
-        av_freep(&sh);
     }
 }
 
-- 
2.41.0

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [FFmpeg-devel] [PATCH 06/11] avcodec/evc_parse: use the correct struct size when allocating pps
  2023-06-15 15:18 [FFmpeg-devel] [PATCH 01/11] avformat/evcdec: set the demuxer as AVFMT_NOTIMESTAMPS James Almer
                   ` (3 preceding siblings ...)
  2023-06-15 15:18 ` [FFmpeg-devel] [PATCH 05/11] avcodec/evc_parse: use a local EVCParserSliceHeader when parsing slices James Almer
@ 2023-06-15 15:18 ` James Almer
  2023-06-15 15:20   ` Paul B Mahol
  2023-06-15 15:18 ` [FFmpeg-devel] [PATCH 07/11] avcodec/evc_parse: use the correct sps when parsing slice headers James Almer
                   ` (5 subsequent siblings)
  10 siblings, 1 reply; 14+ messages in thread
From: James Almer @ 2023-06-15 15:18 UTC (permalink / raw)
  To: ffmpeg-devel

Signed-off-by: James Almer <jamrial@gmail.com>
---
 libavcodec/evc_parse.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavcodec/evc_parse.c b/libavcodec/evc_parse.c
index 71e2605281..b3044eca3f 100644
--- a/libavcodec/evc_parse.c
+++ b/libavcodec/evc_parse.c
@@ -357,7 +357,7 @@ EVCParserPPS *ff_evc_parse_pps(EVCParserContext *ctx, const uint8_t *bs, int bs_
         return NULL;
 
     if(!ctx->pps[pps_pic_parameter_set_id]) {
-        if((ctx->pps[pps_pic_parameter_set_id] = av_malloc(sizeof(EVCParserSPS))) == NULL)
+        if((ctx->pps[pps_pic_parameter_set_id] = av_malloc(sizeof(EVCParserPPS))) == NULL)
             return NULL;
     }
 
-- 
2.41.0

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [FFmpeg-devel] [PATCH 07/11] avcodec/evc_parse: use the correct sps when parsing slice headers
  2023-06-15 15:18 [FFmpeg-devel] [PATCH 01/11] avformat/evcdec: set the demuxer as AVFMT_NOTIMESTAMPS James Almer
                   ` (4 preceding siblings ...)
  2023-06-15 15:18 ` [FFmpeg-devel] [PATCH 06/11] avcodec/evc_parse: use the correct struct size when allocating pps James Almer
@ 2023-06-15 15:18 ` James Almer
  2023-06-15 15:18 ` [FFmpeg-devel] [PATCH 08/11] avcodec/evc_parse: free pps struct on parsing failure James Almer
                   ` (4 subsequent siblings)
  10 siblings, 0 replies; 14+ messages in thread
From: James Almer @ 2023-06-15 15:18 UTC (permalink / raw)
  To: ffmpeg-devel

Signed-off-by: James Almer <jamrial@gmail.com>
---
 libavcodec/evc_parse.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/libavcodec/evc_parse.c b/libavcodec/evc_parse.c
index b3044eca3f..3e315526fa 100644
--- a/libavcodec/evc_parse.c
+++ b/libavcodec/evc_parse.c
@@ -441,7 +441,7 @@ static int evc_parse_slice_header(EVCParserContext *ctx, EVCParserSliceHeader *s
     if(!pps)
         return AVERROR_INVALIDDATA;
 
-    sps = ctx->sps[slice_pic_parameter_set_id];
+    sps = ctx->sps[pps->pps_seq_parameter_set_id];
     if(!sps)
         return AVERROR_INVALIDDATA;
 
@@ -654,7 +654,8 @@ int ff_evc_parse_nal_unit(EVCParserContext *ctx, const uint8_t *buf, int buf_siz
     case EVC_IDR_NUT:   // Coded slice of a IDR or non-IDR picture
     case EVC_NOIDR_NUT: {
         EVCParserSliceHeader sh;
-        EVCParserSPS *sps;
+        const EVCParserSPS *sps;
+        const EVCParserPPS *pps;
         int ret;
 
         ret = evc_parse_slice_header(ctx, &sh, data, nalu_size);
@@ -685,9 +686,11 @@ int ff_evc_parse_nal_unit(EVCParserContext *ctx, const uint8_t *buf, int buf_siz
 
         // POC (picture order count of the current picture) derivation
         // @see ISO/IEC 23094-1:2020(E) 8.3.1 Decoding process for picture order count
-        sps = ctx->sps[sh.slice_pic_parameter_set_id];
+        pps = ctx->pps[sh.slice_pic_parameter_set_id];
+        sps = ctx->sps[pps->pps_seq_parameter_set_id];
+        av_assert0(sps && pps);
 
-        if (sps && sps->sps_pocs_flag) {
+        if (sps->sps_pocs_flag) {
 
             int PicOrderCntMsb = 0;
             ctx->poc.prevPicOrderCntVal = ctx->poc.PicOrderCntVal;
-- 
2.41.0

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [FFmpeg-devel] [PATCH 08/11] avcodec/evc_parse: free pps struct on parsing failure
  2023-06-15 15:18 [FFmpeg-devel] [PATCH 01/11] avformat/evcdec: set the demuxer as AVFMT_NOTIMESTAMPS James Almer
                   ` (5 preceding siblings ...)
  2023-06-15 15:18 ` [FFmpeg-devel] [PATCH 07/11] avcodec/evc_parse: use the correct sps when parsing slice headers James Almer
@ 2023-06-15 15:18 ` James Almer
  2023-06-15 15:18 ` [FFmpeg-devel] [PATCH 09/11] avcodec/evc_parse: make freeing EVCParserContext buffers a shared function James Almer
                   ` (3 subsequent siblings)
  10 siblings, 0 replies; 14+ messages in thread
From: James Almer @ 2023-06-15 15:18 UTC (permalink / raw)
  To: ffmpeg-devel

Prevents future checks for their presence from succeeding.

Signed-off-by: James Almer <jamrial@gmail.com>
---
 libavcodec/evc_parse.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/libavcodec/evc_parse.c b/libavcodec/evc_parse.c
index 3e315526fa..4b9d820d34 100644
--- a/libavcodec/evc_parse.c
+++ b/libavcodec/evc_parse.c
@@ -367,8 +367,10 @@ EVCParserPPS *ff_evc_parse_pps(EVCParserContext *ctx, const uint8_t *bs, int bs_
     pps->pps_pic_parameter_set_id = pps_pic_parameter_set_id;
 
     pps->pps_seq_parameter_set_id = get_ue_golomb(&gb);
-    if (pps->pps_seq_parameter_set_id >= EVC_MAX_SPS_COUNT)
+    if (pps->pps_seq_parameter_set_id >= EVC_MAX_SPS_COUNT) {
+        av_freep(&ctx->pps[pps_pic_parameter_set_id]);
         return NULL;
+    }
 
     pps->num_ref_idx_default_active_minus1[0] = get_ue_golomb(&gb);
     pps->num_ref_idx_default_active_minus1[1] = get_ue_golomb(&gb);
-- 
2.41.0

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [FFmpeg-devel] [PATCH 09/11] avcodec/evc_parse: make freeing EVCParserContext buffers a shared function
  2023-06-15 15:18 [FFmpeg-devel] [PATCH 01/11] avformat/evcdec: set the demuxer as AVFMT_NOTIMESTAMPS James Almer
                   ` (6 preceding siblings ...)
  2023-06-15 15:18 ` [FFmpeg-devel] [PATCH 08/11] avcodec/evc_parse: free pps struct on parsing failure James Almer
@ 2023-06-15 15:18 ` James Almer
  2023-06-15 15:18 ` [FFmpeg-devel] [PATCH 10/11] avcodec/evc_frame_merge_bsf: ceck for av_memdup() failure James Almer
                   ` (2 subsequent siblings)
  10 siblings, 0 replies; 14+ messages in thread
From: James Almer @ 2023-06-15 15:18 UTC (permalink / raw)
  To: ffmpeg-devel

Signed-off-by: James Almer <jamrial@gmail.com>
---
 libavcodec/evc_parse.c  |  7 +++++++
 libavcodec/evc_parse.h  |  2 ++
 libavcodec/evc_parser.c | 11 +----------
 3 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/libavcodec/evc_parse.c b/libavcodec/evc_parse.c
index 4b9d820d34..703529e9f4 100644
--- a/libavcodec/evc_parse.c
+++ b/libavcodec/evc_parse.c
@@ -765,3 +765,10 @@ int ff_evc_parse_nal_unit(EVCParserContext *ctx, const uint8_t *buf, int buf_siz
     return 0;
 }
 
+void ff_evc_parse_free(EVCParserContext *ctx) {
+    for (int i = 0; i < EVC_MAX_SPS_COUNT; i++)
+        av_freep(&ctx->sps[i]);
+
+    for (int i = 0; i < EVC_MAX_PPS_COUNT; i++)
+        av_freep(&ctx->pps[i]);
+}
diff --git a/libavcodec/evc_parse.h b/libavcodec/evc_parse.h
index 1c1b8ec093..9eabc2f7a4 100644
--- a/libavcodec/evc_parse.h
+++ b/libavcodec/evc_parse.h
@@ -350,4 +350,6 @@ EVCParserPPS *ff_evc_parse_pps(EVCParserContext *ctx, const uint8_t *bs, int bs_
 
 int ff_evc_parse_nal_unit(EVCParserContext *ctx, const uint8_t *buf, int buf_size, void *logctx);
 
+void ff_evc_parse_free(EVCParserContext *ctx);
+
 #endif /* AVCODEC_EVC_PARSE_H */
diff --git a/libavcodec/evc_parser.c b/libavcodec/evc_parser.c
index 072fe41bf1..c85b8f89e7 100644
--- a/libavcodec/evc_parser.c
+++ b/libavcodec/evc_parser.c
@@ -202,16 +202,7 @@ static void evc_parser_close(AVCodecParserContext *s)
 {
     EVCParserContext *ctx = s->priv_data;
 
-    for(int i = 0; i < EVC_MAX_SPS_COUNT; i++) {
-        EVCParserSPS *sps = ctx->sps[i];
-        av_freep(&sps);
-    }
-
-    for(int i = 0; i < EVC_MAX_PPS_COUNT; i++) {
-        EVCParserPPS *pps = ctx->pps[i];
-
-        av_freep(&pps);
-    }
+    ff_evc_parse_free(ctx);
 }
 
 const AVCodecParser ff_evc_parser = {
-- 
2.41.0

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [FFmpeg-devel] [PATCH 10/11] avcodec/evc_frame_merge_bsf: ceck for av_memdup() failure
  2023-06-15 15:18 [FFmpeg-devel] [PATCH 01/11] avformat/evcdec: set the demuxer as AVFMT_NOTIMESTAMPS James Almer
                   ` (7 preceding siblings ...)
  2023-06-15 15:18 ` [FFmpeg-devel] [PATCH 09/11] avcodec/evc_parse: make freeing EVCParserContext buffers a shared function James Almer
@ 2023-06-15 15:18 ` James Almer
  2023-06-15 15:18 ` [FFmpeg-devel] [PATCH 11/11] avcodec/evc_frame_merge_bsf: free EVCFMergeContext on flush and close James Almer
  2023-06-16 18:07 ` [FFmpeg-devel] [PATCH 01/11] avformat/evcdec: set the demuxer as AVFMT_NOTIMESTAMPS James Almer
  10 siblings, 0 replies; 14+ messages in thread
From: James Almer @ 2023-06-15 15:18 UTC (permalink / raw)
  To: ffmpeg-devel

Signed-off-by: James Almer <jamrial@gmail.com>
---
 libavcodec/evc_frame_merge_bsf.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/libavcodec/evc_frame_merge_bsf.c b/libavcodec/evc_frame_merge_bsf.c
index d2746a1ef6..fbb344490a 100644
--- a/libavcodec/evc_frame_merge_bsf.c
+++ b/libavcodec/evc_frame_merge_bsf.c
@@ -61,6 +61,7 @@ static void evc_frame_merge_flush(AVBSFContext *bsf)
     EVCFMergeContext *ctx = bsf->priv_data;
 
     av_packet_unref(ctx->in);
+    ctx->au_buffer.data_size = 0;
 }
 
 static int evc_frame_merge_filter(AVBSFContext *bsf, AVPacket *out)
@@ -117,9 +118,13 @@ static int evc_frame_merge_filter(AVBSFContext *bsf, AVPacket *out)
 
     if (au_end_found) {
         uint8_t *data = av_memdup(ctx->au_buffer.data, ctx->au_buffer.data_size);
-        err = av_packet_from_data(out, data, ctx->au_buffer.data_size);
+        size_t data_size = ctx->au_buffer.data_size;
 
         ctx->au_buffer.data_size = 0;
+        if (!data)
+            return AVERROR(ENOMEM);
+
+        err = av_packet_from_data(out, data, data_size);
     } else
         err = AVERROR(EAGAIN);
 
-- 
2.41.0

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [FFmpeg-devel] [PATCH 11/11] avcodec/evc_frame_merge_bsf: free EVCFMergeContext on flush and close
  2023-06-15 15:18 [FFmpeg-devel] [PATCH 01/11] avformat/evcdec: set the demuxer as AVFMT_NOTIMESTAMPS James Almer
                   ` (8 preceding siblings ...)
  2023-06-15 15:18 ` [FFmpeg-devel] [PATCH 10/11] avcodec/evc_frame_merge_bsf: ceck for av_memdup() failure James Almer
@ 2023-06-15 15:18 ` James Almer
  2023-06-16 18:07 ` [FFmpeg-devel] [PATCH 01/11] avformat/evcdec: set the demuxer as AVFMT_NOTIMESTAMPS James Almer
  10 siblings, 0 replies; 14+ messages in thread
From: James Almer @ 2023-06-15 15:18 UTC (permalink / raw)
  To: ffmpeg-devel

Signed-off-by: James Almer <jamrial@gmail.com>
---
 libavcodec/evc_frame_merge_bsf.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/libavcodec/evc_frame_merge_bsf.c b/libavcodec/evc_frame_merge_bsf.c
index fbb344490a..7cc701f5c5 100644
--- a/libavcodec/evc_frame_merge_bsf.c
+++ b/libavcodec/evc_frame_merge_bsf.c
@@ -60,6 +60,7 @@ static void evc_frame_merge_flush(AVBSFContext *bsf)
 {
     EVCFMergeContext *ctx = bsf->priv_data;
 
+    ff_evc_parse_free(&ctx->parser_ctx);
     av_packet_unref(ctx->in);
     ctx->au_buffer.data_size = 0;
 }
@@ -129,7 +130,7 @@ static int evc_frame_merge_filter(AVBSFContext *bsf, AVPacket *out)
         err = AVERROR(EAGAIN);
 
     if (err < 0 && err != AVERROR(EAGAIN))
-        evc_frame_merge_flush(bsf);
+        ctx->au_buffer.data_size = 0;
 
     return err;
 }
@@ -154,6 +155,7 @@ static void evc_frame_merge_close(AVBSFContext *bsf)
     EVCFMergeContext *ctx = bsf->priv_data;
 
     av_packet_free(&ctx->in);
+    ff_evc_parse_free(&ctx->parser_ctx);
 
     ctx->au_buffer.capacity = 0;
     av_freep(&ctx->au_buffer.data);
-- 
2.41.0

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [FFmpeg-devel] [PATCH 02/11] avcodec/evc_parser: remove superfluous memset calls
  2023-06-15 15:18 ` [FFmpeg-devel] [PATCH 02/11] avcodec/evc_parser: remove superfluous memset calls James Almer
@ 2023-06-15 15:19   ` Paul B Mahol
  0 siblings, 0 replies; 14+ messages in thread
From: Paul B Mahol @ 2023-06-15 15:19 UTC (permalink / raw)
  To: FFmpeg development discussions and patches

LGTM
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [FFmpeg-devel] [PATCH 06/11] avcodec/evc_parse: use the correct struct size when allocating pps
  2023-06-15 15:18 ` [FFmpeg-devel] [PATCH 06/11] avcodec/evc_parse: use the correct struct size when allocating pps James Almer
@ 2023-06-15 15:20   ` Paul B Mahol
  0 siblings, 0 replies; 14+ messages in thread
From: Paul B Mahol @ 2023-06-15 15:20 UTC (permalink / raw)
  To: FFmpeg development discussions and patches

On Thu, Jun 15, 2023 at 5:20 PM James Almer <jamrial@gmail.com> wrote:

> Signed-off-by: James Almer <jamrial@gmail.com>
> ---
>  libavcodec/evc_parse.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/libavcodec/evc_parse.c b/libavcodec/evc_parse.c
> index 71e2605281..b3044eca3f 100644
> --- a/libavcodec/evc_parse.c
> +++ b/libavcodec/evc_parse.c
> @@ -357,7 +357,7 @@ EVCParserPPS *ff_evc_parse_pps(EVCParserContext *ctx,
> const uint8_t *bs, int bs_
>          return NULL;
>
>      if(!ctx->pps[pps_pic_parameter_set_id]) {
> -        if((ctx->pps[pps_pic_parameter_set_id] =
> av_malloc(sizeof(EVCParserSPS))) == NULL)
> +        if((ctx->pps[pps_pic_parameter_set_id] =
> av_malloc(sizeof(EVCParserPPS))) == NULL)
>              return NULL;
>      }
>
>
Please fix  code style of lines you change.

-- 
> 2.41.0
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
>
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [FFmpeg-devel] [PATCH 01/11] avformat/evcdec: set the demuxer as AVFMT_NOTIMESTAMPS
  2023-06-15 15:18 [FFmpeg-devel] [PATCH 01/11] avformat/evcdec: set the demuxer as AVFMT_NOTIMESTAMPS James Almer
                   ` (9 preceding siblings ...)
  2023-06-15 15:18 ` [FFmpeg-devel] [PATCH 11/11] avcodec/evc_frame_merge_bsf: free EVCFMergeContext on flush and close James Almer
@ 2023-06-16 18:07 ` James Almer
  10 siblings, 0 replies; 14+ messages in thread
From: James Almer @ 2023-06-16 18:07 UTC (permalink / raw)
  To: ffmpeg-devel

On 6/15/2023 12:18 PM, James Almer wrote:
> Signed-off-by: James Almer <jamrial@gmail.com>
> ---
>   libavformat/evcdec.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/libavformat/evcdec.c b/libavformat/evcdec.c
> index 89eda0f53e..807406885a 100644
> --- a/libavformat/evcdec.c
> +++ b/libavformat/evcdec.c
> @@ -268,7 +268,7 @@ const AVInputFormat ff_evc_demuxer = {
>       .read_packet    = evc_read_packet, // annexb_read_packet
>       .read_close     = evc_read_close,
>       .extensions     = "evc",
> -    .flags          = AVFMT_GENERIC_INDEX,
> +    .flags          = AVFMT_GENERIC_INDEX | AVFMT_NOTIMESTAMPS,
>       .flags_internal = FF_FMT_INIT_CLEANUP,
>       .raw_codec_id   = AV_CODEC_ID_EVC,
>       .priv_data_size = sizeof(EVCDemuxContext),

I'll apply the rest of this set soon.
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2023-06-16 18:07 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-06-15 15:18 [FFmpeg-devel] [PATCH 01/11] avformat/evcdec: set the demuxer as AVFMT_NOTIMESTAMPS James Almer
2023-06-15 15:18 ` [FFmpeg-devel] [PATCH 02/11] avcodec/evc_parser: remove superfluous memset calls James Almer
2023-06-15 15:19   ` Paul B Mahol
2023-06-15 15:18 ` [FFmpeg-devel] [PATCH 03/11] avcodec/evc_parser: export framerate to the AVCodecContext James Almer
2023-06-15 15:18 ` [FFmpeg-devel] [PATCH 04/11] avcodec/evc_parse: zero sps, pps and sh structs James Almer
2023-06-15 15:18 ` [FFmpeg-devel] [PATCH 05/11] avcodec/evc_parse: use a local EVCParserSliceHeader when parsing slices James Almer
2023-06-15 15:18 ` [FFmpeg-devel] [PATCH 06/11] avcodec/evc_parse: use the correct struct size when allocating pps James Almer
2023-06-15 15:20   ` Paul B Mahol
2023-06-15 15:18 ` [FFmpeg-devel] [PATCH 07/11] avcodec/evc_parse: use the correct sps when parsing slice headers James Almer
2023-06-15 15:18 ` [FFmpeg-devel] [PATCH 08/11] avcodec/evc_parse: free pps struct on parsing failure James Almer
2023-06-15 15:18 ` [FFmpeg-devel] [PATCH 09/11] avcodec/evc_parse: make freeing EVCParserContext buffers a shared function James Almer
2023-06-15 15:18 ` [FFmpeg-devel] [PATCH 10/11] avcodec/evc_frame_merge_bsf: ceck for av_memdup() failure James Almer
2023-06-15 15:18 ` [FFmpeg-devel] [PATCH 11/11] avcodec/evc_frame_merge_bsf: free EVCFMergeContext on flush and close James Almer
2023-06-16 18:07 ` [FFmpeg-devel] [PATCH 01/11] avformat/evcdec: set the demuxer as AVFMT_NOTIMESTAMPS James Almer

Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
		ffmpegdev@gitmailbox.com
	public-inbox-index ffmpegdev

Example config snippet for mirrors.


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git