[FFmpeg-devel] [PATCH 1/8] avcodec/cbs: add a flush callback to CodedBitstreamType

Mark Thompson sw at jkqxz.net
Tue Sep 29 18:50:01 EEST 2020


On 25/09/2020 15:43, James Almer wrote:
> Used to reset the codec's private internal state.
> 
> Signed-off-by: James Almer <jamrial at gmail.com>
> ---
>   libavcodec/cbs.c          | 6 ++++++
>   libavcodec/cbs.h          | 5 +++++
>   libavcodec/cbs_internal.h | 3 +++
>   3 files changed, 14 insertions(+)
> 
> diff --git a/libavcodec/cbs.c b/libavcodec/cbs.c
> index 7c1aa005c2..c8c526ab12 100644
> --- a/libavcodec/cbs.c
> +++ b/libavcodec/cbs.c
> @@ -112,6 +112,12 @@ int ff_cbs_init(CodedBitstreamContext **ctx_ptr,
>       return 0;
>   }
>   
> +void ff_cbs_flush(CodedBitstreamContext *ctx)
> +{
> +    if (ctx->codec && ctx->codec->flush)
> +        ctx->codec->flush(ctx);
> +}
> +
>   void ff_cbs_close(CodedBitstreamContext **ctx_ptr)
>   {
>       CodedBitstreamContext *ctx = *ctx_ptr;
> diff --git a/libavcodec/cbs.h b/libavcodec/cbs.h
> index 3a054aa8f3..635921b11e 100644
> --- a/libavcodec/cbs.h
> +++ b/libavcodec/cbs.h
> @@ -236,6 +236,11 @@ extern const enum AVCodecID ff_cbs_all_codec_ids[];
>   int ff_cbs_init(CodedBitstreamContext **ctx,
>                   enum AVCodecID codec_id, void *log_ctx);
>   
> +/**
> + * Reset all internal state in a context.
> + */
> +void ff_cbs_flush(CodedBitstreamContext *ctx);
> +
>   /**
>    * Close a context and free all internal state.
>    */
> diff --git a/libavcodec/cbs_internal.h b/libavcodec/cbs_internal.h
> index d991e1eedf..faa847aad3 100644
> --- a/libavcodec/cbs_internal.h
> +++ b/libavcodec/cbs_internal.h
> @@ -117,6 +117,9 @@ typedef struct CodedBitstreamType {
>       int (*assemble_fragment)(CodedBitstreamContext *ctx,
>                                CodedBitstreamFragment *frag);
>   
> +    // Reset the codec internal state.
> +    void (*flush)(CodedBitstreamContext *ctx);
> +
>       // Free the codec internal state.
>       void (*close)(CodedBitstreamContext *ctx);
>   } CodedBitstreamType;
> 

This is a good idea!  Patches 1-4 LGTM.

Thanks,

- Mark


More information about the ffmpeg-devel mailing list