|
FFmpeg
|
#include <string.h>#include "libavutil/avassert.h"#include "libavutil/buffer.h"#include "libavutil/common.h"#include "libavutil/mem.h"#include "libavutil/opt.h"#include "avcodec.h"#include "cbs.h"#include "cbs_internal.h"#include "libavutil/refstruct.h"Go to the source code of this file.
Functions | |
| av_cold int CBS_FUNC | init (CodedBitstreamContext **ctx_ptr, enum AVCodecID codec_id, void *log_ctx) |
| Create and initialise a new context for the given codec. | |
| av_cold void CBS_FUNC | flush (CodedBitstreamContext *ctx) |
| Reset all internal state in a context. | |
| av_cold void CBS_FUNC | close (CodedBitstreamContext **ctx_ptr) |
| Close a context and free all internal state. | |
| static void | cbs_unit_uninit (CodedBitstreamUnit *unit) |
| void CBS_FUNC | fragment_reset (CodedBitstreamFragment *frag) |
| Free the units contained in a fragment as well as the fragment's own data buffer, but not the units array itself. | |
| av_cold void CBS_FUNC | fragment_free (CodedBitstreamFragment *frag) |
| Free the units array of a fragment in addition to what ff_cbs_fragment_reset does. | |
| void CBS_FUNC | trace_header (CodedBitstreamContext *ctx, const char *name) |
| void CBS_FUNC | trace_read_log (void *trace_context, GetBitContext *gbc, int length, const char *str, const int *subscripts, int64_t value) |
| Helper function for read tracing which formats the syntax element and logs the result. | |
| void CBS_FUNC | trace_write_log (void *trace_context, PutBitContext *pbc, int length, const char *str, const int *subscripts, int64_t value) |
| Helper function for write tracing which formats the syntax element and logs the result. | |
| static int | cbs_insert_unit (CodedBitstreamFragment *frag, int position) |
| int CBS_FUNC | insert_unit_content (CodedBitstreamFragment *frag, int position, CodedBitstreamUnitType type, void *content, void *content_ref) |
| Insert a new unit into a fragment with the given content. | |
| static int | cbs_insert_unit_data (CodedBitstreamFragment *frag, CodedBitstreamUnitType type, uint8_t *data, size_t data_size, AVBufferRef *data_buf, int position) |
| int CBS_FUNC | append_unit_data (CodedBitstreamFragment *frag, CodedBitstreamUnitType type, uint8_t *data, size_t data_size, AVBufferRef *data_buf) |
| Add a new unit to a fragment with the given data bitstream. | |
| void CBS_FUNC | delete_unit (CodedBitstreamFragment *frag, int position) |
| Delete a unit from a fragment and free all memory it uses. | |
| static void | cbs_default_free_unit_content (AVRefStructOpaque opaque, void *content) |
| static CodedBitstreamUnitTypeDescriptor * | cbs_find_unit_type_desc (CodedBitstreamContext *ctx, CodedBitstreamUnit *unit) |
| static void * | cbs_alloc_content (CodedBitstreamUnitTypeDescriptor *desc) |
| int CBS_FUNC | alloc_unit_content (CodedBitstreamContext *ctx, CodedBitstreamUnit *unit) |
| Allocate a new internal content buffer matching the type of the unit. | |
| static int | cbs_clone_noncomplex_unit_content (void **clonep, const CodedBitstreamUnit *unit, CodedBitstreamUnitTypeDescriptor *desc) |
| static int | cbs_clone_unit_content (CodedBitstreamContext *ctx, CodedBitstreamUnit *unit) |
| int CBS_FUNC | make_unit_refcounted (CodedBitstreamContext *ctx, CodedBitstreamUnit *unit) |
| Make the content of a unit refcounted. | |
| int CBS_FUNC | make_unit_writable (CodedBitstreamContext *ctx, CodedBitstreamUnit *unit) |
| Make the content of a unit writable so that internal fields can be modified. | |
| void CBS_FUNC | discard_units (CodedBitstreamContext *ctx, CodedBitstreamFragment *frag, enum AVDiscard skip, int flags) |
| Discard units according to 'skip'. | |
Variables | |
| static const CodedBitstreamType *const | cbs_type_table [] |
| av_cold int CBS_FUNC init | ( | CodedBitstreamContext ** | ctx_ptr, |
| enum AVCodecID | codec_id, | ||
| void * | log_ctx ) |
| av_cold void CBS_FUNC flush | ( | CodedBitstreamContext * | ctx | ) |
| av_cold void CBS_FUNC close | ( | CodedBitstreamContext ** | ctx_ptr | ) |
|
static |
Definition at line 137 of file cbs.c.
Referenced by delete_unit(), and fragment_reset().
| void CBS_FUNC fragment_reset | ( | CodedBitstreamFragment * | frag | ) |
Free the units contained in a fragment as well as the fragment's own data buffer, but not the units array itself.
Definition at line 148 of file cbs.c.
Referenced by fragment_free(), fragment_reset(), and write_packet().
| av_cold void CBS_FUNC fragment_free | ( | CodedBitstreamFragment * | frag | ) |
Free the units array of a fragment in addition to what ff_cbs_fragment_reset does.
Definition at line 162 of file cbs.c.
Referenced by discard_units(), fragment_free(), and write_packet().
| void CBS_FUNC trace_header | ( | CodedBitstreamContext * | ctx, |
| const char * | name ) |
Definition at line 481 of file cbs.c.
Referenced by trace_header().
| void CBS_FUNC trace_read_log | ( | void * | trace_context, |
| struct GetBitContext * | gbc, | ||
| int | length, | ||
| const char * | str, | ||
| const int * | subscripts, | ||
| int64_t | value ) |
Helper function for read tracing which formats the syntax element and logs the result.
Trace context should be set to the CodedBitstreamContext.
Definition at line 492 of file cbs.c.
Referenced by trace_read_log(), and trace_write_log().
| void CBS_FUNC trace_write_log | ( | void * | trace_context, |
| struct PutBitContext * | pbc, | ||
| int | length, | ||
| const char * | str, | ||
| const int * | subscripts, | ||
| int64_t | value ) |
Helper function for write tracing which formats the syntax element and logs the result.
Trace context should be set to the CodedBitstreamContext.
Definition at line 552 of file cbs.c.
Referenced by trace_write_log().
|
static |
Definition at line 735 of file cbs.c.
Referenced by cbs_insert_unit_data(), and insert_unit_content().
| int CBS_FUNC insert_unit_content | ( | CodedBitstreamFragment * | frag, |
| int | position, | ||
| CodedBitstreamUnitType | type, | ||
| void * | content, | ||
| void * | content_ref ) |
Insert a new unit into a fragment with the given content.
If content_ref is supplied, it has to be a RefStruct reference backing content; the user keeps ownership of the supplied reference. The content structure continues to be owned by the caller if content_ref is not supplied.
Definition at line 771 of file cbs.c.
Referenced by insert_unit_content(), and write_packet().
|
static |
Definition at line 801 of file cbs.c.
Referenced by append_unit_data().
| int CBS_FUNC append_unit_data | ( | CodedBitstreamFragment * | frag, |
| CodedBitstreamUnitType | type, | ||
| uint8_t * | data, | ||
| size_t | data_size, | ||
| AVBufferRef * | data_buf ) |
Add a new unit to a fragment with the given data bitstream.
If data_buf is not supplied then data must have been allocated with av_malloc() and will on success become owned by the unit after this call or freed on error.
Definition at line 838 of file cbs.c.
Referenced by append_unit_data(), cbs_apv_split_fragment(), cbs_av1_split_fragment(), and write_packet().
| void CBS_FUNC delete_unit | ( | CodedBitstreamFragment * | frag, |
| int | position ) |
Delete a unit from a fragment and free all memory it uses.
Requires position to be >= 0 and < frag->nb_units.
Definition at line 848 of file cbs.c.
Referenced by delete_unit(), discard_units(), and write_packet().
|
static |
Definition at line 864 of file cbs.c.
Referenced by cbs_alloc_content().
|
static |
Definition at line 875 of file cbs.c.
Referenced by alloc_unit_content(), and cbs_clone_unit_content().
|
static |
Definition at line 902 of file cbs.c.
Referenced by alloc_unit_content(), and cbs_clone_noncomplex_unit_content().
| int CBS_FUNC alloc_unit_content | ( | CodedBitstreamContext * | ctx, |
| CodedBitstreamUnit * | unit ) |
Allocate a new internal content buffer matching the type of the unit.
The content will be zeroed.
Definition at line 911 of file cbs.c.
Referenced by alloc_unit_content(), cbs_apv_read_unit(), cbs_av1_read_unit(), and write_packet().
|
static |
Definition at line 930 of file cbs.c.
Referenced by cbs_clone_unit_content().
|
static |
Definition at line 989 of file cbs.c.
Referenced by make_unit_refcounted(), and make_unit_writable().
| int CBS_FUNC make_unit_refcounted | ( | CodedBitstreamContext * | ctx, |
| CodedBitstreamUnit * | unit ) |
Make the content of a unit refcounted.
If the unit is not refcounted, this will do a deep copy of the unit content to new refcounted buffers.
It is not valid to call this function on a unit which does not have decomposed content.
Definition at line 1023 of file cbs.c.
Referenced by cbs_av1_write_obu(), make_unit_refcounted(), and write_packet().
| int CBS_FUNC make_unit_writable | ( | CodedBitstreamContext * | ctx, |
| CodedBitstreamUnit * | unit ) |
Make the content of a unit writable so that internal fields can be modified.
If it is known that there are no other references to the content of the unit, does nothing and returns success. Otherwise (including the case where the unit content is not refcounted), it does a full clone of the content (including any internal buffers) to make a new copy, and replaces the existing references inside the unit with that.
It is not valid to call this function on a unit which does not have decomposed content.
Definition at line 1032 of file cbs.c.
Referenced by make_unit_writable(), and write_packet().
| void CBS_FUNC discard_units | ( | CodedBitstreamContext * | ctx, |
| CodedBitstreamFragment * | frag, | ||
| enum AVDiscard | skip, | ||
| int | flags ) |
Discard units according to 'skip'.
Definition at line 1049 of file cbs.c.
Referenced by discard_units().
|
static |