summaryrefslogtreecommitdiff
path: root/libavcodec/cbs.c
diff options
context:
space:
mode:
authorJames Almer <jamrial@gmail.com>2020-11-15 18:55:38 -0300
committerJames Almer <jamrial@gmail.com>2021-01-04 16:28:29 -0300
commit9caf132462de6fe9b68644703c953c899c4e5bb8 (patch)
tree966e838bb0a7f853ebb59f38c24825318e6c9972 /libavcodec/cbs.c
parent0cd8769207f1a89fc2236aab9da1c77f5a0b490a (diff)
downloadffmpeg-9caf132462de6fe9b68644703c953c899c4e5bb8.tar.gz
avcodec/cbs: add an AVClass to CodedBitstreamType for option handling
So unit parsing may be configured with caller set options. Signed-off-by: James Almer <jamrial@gmail.com>
Diffstat (limited to 'libavcodec/cbs.c')
-rw-r--r--libavcodec/cbs.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/libavcodec/cbs.c b/libavcodec/cbs.c
index e7025cce07..d7efac5b93 100644
--- a/libavcodec/cbs.c
+++ b/libavcodec/cbs.c
@@ -23,6 +23,7 @@
#include "libavutil/avassert.h"
#include "libavutil/buffer.h"
#include "libavutil/common.h"
+#include "libavutil/opt.h"
#include "cbs.h"
#include "cbs_internal.h"
@@ -101,6 +102,10 @@ int ff_cbs_init(CodedBitstreamContext **ctx_ptr,
av_freep(&ctx);
return AVERROR(ENOMEM);
}
+ if (type->priv_class) {
+ *(const AVClass **)ctx->priv_data = type->priv_class;
+ av_opt_set_defaults(ctx->priv_data);
+ }
}
ctx->decompose_unit_types = NULL;
@@ -129,6 +134,10 @@ void ff_cbs_close(CodedBitstreamContext **ctx_ptr)
ctx->codec->close(ctx);
av_freep(&ctx->write_buffer);
+
+ if (ctx->codec->priv_class && ctx->priv_data)
+ av_opt_free(ctx->priv_data);
+
av_freep(&ctx->priv_data);
av_freep(ctx_ptr);
}