diff options
author | Andreas Rheinhardt <andreas.rheinhardt@gmail.com> | 2019-11-17 08:34:35 +0100 |
---|---|---|
committer | James Almer <jamrial@gmail.com> | 2019-12-31 16:57:37 -0300 |
commit | 1cf238d3bfefdfd3345ca262f57e08a798bb0d90 (patch) | |
tree | 4586fc542d44b5baae1e999453781e0834579a97 /libavcodec/cbs.h | |
parent | cb3a59ca82d070628a4ea12ffa91155328e6a05d (diff) | |
download | ffmpeg-1cf238d3bfefdfd3345ca262f57e08a798bb0d90.tar.gz |
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>
(cherry picked from commit 7c92eaace2b338e0b3acc18e1543b365610578fd)
Diffstat (limited to 'libavcodec/cbs.h')
-rw-r--r-- | libavcodec/cbs.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/libavcodec/cbs.h b/libavcodec/cbs.h index fe57e7b2a5..1974cf3e66 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; |