aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec
diff options
context:
space:
mode:
authorJames Almer <jamrial@gmail.com>2020-09-24 17:57:42 -0300
committerJames Almer <jamrial@gmail.com>2020-09-29 21:38:27 -0300
commit515b6419ca51f036a2d6dd42841a4be07147f865 (patch)
tree49390097e4abd2135fdd1815caaf01063b758ba3 /libavcodec
parent23d075416544f55a605b1818a8491c818312a62d (diff)
downloadffmpeg-515b6419ca51f036a2d6dd42841a4be07147f865.tar.gz
avcodec/cbs: add a flush callback to CodedBitstreamType
Used to reset the codec's private internal state. Signed-off-by: James Almer <jamrial@gmail.com>
Diffstat (limited to 'libavcodec')
-rw-r--r--libavcodec/cbs.c6
-rw-r--r--libavcodec/cbs.h5
-rw-r--r--libavcodec/cbs_internal.h3
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;