summaryrefslogtreecommitdiff
path: root/libavcodec/cbs_internal.h
diff options
context:
space:
mode:
authorMark Thompson <sw@jkqxz.net>2020-07-27 17:32:19 +0100
committerMark Thompson <sw@jkqxz.net>2020-09-02 00:00:57 +0100
commit225f2878853e1e4980d55707c68a14595a639ad3 (patch)
tree5bba66dee6b3244e1d0976b66f0ba0510cac0e7a /libavcodec/cbs_internal.h
parentbc7a7e0d65bd72b317b2c4b84fac505ba3db7556 (diff)
cbs: Add macros to support defining unit type tables
Diffstat (limited to 'libavcodec/cbs_internal.h')
-rw-r--r--libavcodec/cbs_internal.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/libavcodec/cbs_internal.h b/libavcodec/cbs_internal.h
index 282492bc88..35159f9c5f 100644
--- a/libavcodec/cbs_internal.h
+++ b/libavcodec/cbs_internal.h
@@ -167,6 +167,30 @@ int ff_cbs_write_signed(CodedBitstreamContext *ctx, PutBitContext *pbc,
#define MIN_INT_BITS(length) (-(INT64_C(1) << ((length) - 1)))
+#define CBS_UNIT_TYPE_POD(type, structure) { \
+ .nb_unit_types = 1, \
+ .unit_types = { type }, \
+ .content_type = CBS_CONTENT_TYPE_POD, \
+ .content_size = sizeof(structure), \
+ }
+#define CBS_UNIT_TYPE_INTERNAL_REF(type, structure, ref_field) { \
+ .nb_unit_types = 1, \
+ .unit_types = { type }, \
+ .content_type = CBS_CONTENT_TYPE_INTERNAL_REFS, \
+ .content_size = sizeof(structure), \
+ .nb_ref_offsets = 1, \
+ .ref_offsets = { offsetof(structure, ref_field) }, \
+ }
+#define CBS_UNIT_TYPE_COMPLEX(type, structure, free_func) { \
+ .nb_unit_types = 1, \
+ .unit_types = { type }, \
+ .content_type = CBS_CONTENT_TYPE_COMPLEX, \
+ .content_size = sizeof(structure), \
+ .content_free = free_func, \
+ }
+#define CBS_UNIT_TYPE_END_OF_LIST { .nb_unit_types = 0 }
+
+
extern const CodedBitstreamType ff_cbs_type_av1;
extern const CodedBitstreamType ff_cbs_type_h264;
extern const CodedBitstreamType ff_cbs_type_h265;