[FFmpeg-devel] [PATCH 2/4 v2] avcodec/cbs: allow cbs_read_fragment_content() to discard units

Mark Thompson sw at jkqxz.net
Wed Dec 9 23:22:24 EET 2020


On 15/11/2020 21:55, James Almer wrote:
> The caller may not need all units in a fragment in reading only scenarios. They
> could in fact alter global state stored in the private CodedBitstreamType
> fields in an undesirable way.
> And unlike preventing decomposition of units, discarding can be done based on
> parsed values within the unit.
> 
> Signed-off-by: James Almer <jamrial at gmail.com>
> ---
>   libavcodec/cbs.c | 6 ++++++
>   1 file changed, 6 insertions(+)
> 
> diff --git a/libavcodec/cbs.c b/libavcodec/cbs.c
> index c7afccd6f5..f4312d199b 100644
> --- a/libavcodec/cbs.c
> +++ b/libavcodec/cbs.c
> @@ -202,6 +202,12 @@ static int cbs_read_fragment_content(CodedBitstreamContext *ctx,
>               av_log(ctx->log_ctx, AV_LOG_VERBOSE,
>                      "Decomposition unimplemented for unit %d "
>                      "(type %"PRIu32").\n", i, unit->type);
> +        } else if (err  == AVERROR(EAGAIN)) {
> +            av_log(ctx->log_ctx, AV_LOG_VERBOSE,
> +                   "Discarding unit %d "
> +                   "(type %"PRIu32").\n", i, unit->type);
> +            av_buffer_unref(&unit->content_ref);
> +            unit->content = NULL;
>           } else if (err < 0) {
>               av_log(ctx->log_ctx, AV_LOG_ERROR, "Failed to read unit %d "
>                      "(type %"PRIu32").\n", i, unit->type);
> 

The description and log message no longer match exactly what it does.

Code part LGTM.

- Mark


More information about the ffmpeg-devel mailing list