* [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
* 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
* [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 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