summaryrefslogtreecommitdiff
path: root/libavcodec/cbs.h
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2019-11-17 08:34:35 +0100
committerMark Thompson <sw@jkqxz.net>2019-11-17 23:31:44 +0000
commit7c92eaace2b338e0b3acc18e1543b365610578fd (patch)
tree51f9343c4cf5bfbb156c3a303f0839df57bcb31e /libavcodec/cbs.h
parent5d8d9e032cafa88e99046478090dd5a629e3d51c (diff)
avcodec/cbs: Factor out common code for writing units
All cbs-functions to write units share a common pattern: 1. They check whether they have a write buffer (that is used to store the unit's data until the needed size becomes known after writing the unit when a dedicated buffer will be allocated). 2. They use this buffer for a PutBitContext. 3. The (codec-specific) writing takes place through the PutBitContext. 4. The return value is checked. AVERROR(ENOSPC) here always indicates that the buffer was too small and leads to a reallocation of said buffer. 5. The final buffer will be allocated and the data copied. This commit factors this common code out in a single function in cbs.c. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Diffstat (limited to 'libavcodec/cbs.h')
-rw-r--r--libavcodec/cbs.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/libavcodec/cbs.h b/libavcodec/cbs.h
index 7c341bffe7..cdb777d111 100644
--- a/libavcodec/cbs.h
+++ b/libavcodec/cbs.h
@@ -210,6 +210,13 @@ typedef struct CodedBitstreamContext {
* From AV_LOG_*; defaults to AV_LOG_TRACE.
*/
int trace_level;
+
+ /**
+ * Write buffer. Used as intermediate buffer when writing units.
+ * For internal use of cbs only.
+ */
+ uint8_t *write_buffer;
+ size_t write_buffer_size;
} CodedBitstreamContext;