[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