diff options
-rw-r--r-- | libavcodec/cbs.c | 6 | ||||
-rw-r--r-- | libavcodec/cbs.h | 5 | ||||
-rw-r--r-- | libavcodec/cbs_internal.h | 3 |
3 files changed, 14 insertions, 0 deletions
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 @@ -237,6 +237,11 @@ 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. */ void ff_cbs_close(CodedBitstreamContext **ctx); 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; |