FFmpeg
|
Go to the source code of this file.
Data Structures | |
struct | CodedBitstreamUnit |
Coded bitstream unit structure. More... | |
struct | CodedBitstreamFragment |
Coded bitstream fragment structure, combining one or more units. More... | |
struct | CodedBitstreamContext |
Context structure for coded bitstream operations. More... | |
Typedefs | |
typedef uint32_t | CodedBitstreamUnitType |
The codec-specific type of a bitstream unit. More... | |
Functions | |
int | ff_cbs_init (CodedBitstreamContext **ctx, enum AVCodecID codec_id, void *log_ctx) |
Create and initialise a new context for the given codec. More... | |
void | ff_cbs_close (CodedBitstreamContext **ctx) |
Close a context and free all internal state. More... | |
int | ff_cbs_read_extradata (CodedBitstreamContext *ctx, CodedBitstreamFragment *frag, const AVCodecParameters *par) |
Read the extradata bitstream found in codec parameters into a fragment, then split into units and decompose. More... | |
int | ff_cbs_read_packet (CodedBitstreamContext *ctx, CodedBitstreamFragment *frag, const AVPacket *pkt) |
Read the data bitstream from a packet into a fragment, then split into units and decompose. More... | |
int | ff_cbs_read (CodedBitstreamContext *ctx, CodedBitstreamFragment *frag, const uint8_t *data, size_t size) |
Read a bitstream from a memory region into a fragment, then split into units and decompose. More... | |
int | ff_cbs_write_fragment_data (CodedBitstreamContext *ctx, CodedBitstreamFragment *frag) |
Write the content of the fragment to its own internal buffer. More... | |
int | ff_cbs_write_extradata (CodedBitstreamContext *ctx, AVCodecParameters *par, CodedBitstreamFragment *frag) |
Write the bitstream of a fragment to the extradata in codec parameters. More... | |
int | ff_cbs_write_packet (CodedBitstreamContext *ctx, AVPacket *pkt, CodedBitstreamFragment *frag) |
Write the bitstream of a fragment to a packet. More... | |
void | ff_cbs_fragment_reset (CodedBitstreamContext *ctx, CodedBitstreamFragment *frag) |
Free the units contained in a fragment as well as the fragment's own data buffer, but not the units array itself. More... | |
void | ff_cbs_fragment_free (CodedBitstreamContext *ctx, CodedBitstreamFragment *frag) |
Free the units array of a fragment in addition to what ff_cbs_fragment_reset does. More... | |
int | ff_cbs_alloc_unit_content (CodedBitstreamContext *ctx, CodedBitstreamUnit *unit, size_t size, void(*free)(void *opaque, uint8_t *content)) |
Allocate a new internal content buffer of the given size in the unit. More... | |
int | ff_cbs_alloc_unit_data (CodedBitstreamContext *ctx, CodedBitstreamUnit *unit, size_t size) |
Allocate a new internal data buffer of the given size in the unit. More... | |
int | ff_cbs_insert_unit_content (CodedBitstreamContext *ctx, CodedBitstreamFragment *frag, int position, CodedBitstreamUnitType type, void *content, AVBufferRef *content_buf) |
Insert a new unit into a fragment with the given content. More... | |
int | ff_cbs_insert_unit_data (CodedBitstreamContext *ctx, CodedBitstreamFragment *frag, int position, CodedBitstreamUnitType type, uint8_t *data, size_t data_size, AVBufferRef *data_buf) |
Insert a new unit into a fragment with the given data bitstream. More... | |
void | ff_cbs_delete_unit (CodedBitstreamContext *ctx, CodedBitstreamFragment *frag, int position) |
Delete a unit from a fragment and free all memory it uses. More... | |
Variables | |
enum AVCodecID | ff_cbs_all_codec_ids [] |
Table of all supported codec IDs. More... | |
typedef uint32_t CodedBitstreamUnitType |
int ff_cbs_init | ( | CodedBitstreamContext ** | ctx, |
enum AVCodecID | codec_id, | ||
void * | log_ctx | ||
) |
Create and initialise a new context for the given codec.
Definition at line 74 of file cbs.c.
Referenced by av1_frame_merge_init(), av1_frame_split_init(), av1_metadata_init(), av1_parser_init(), filter_units_init(), h264_metadata_init(), h264_redundant_pps_init(), h265_metadata_init(), mpeg2_metadata_init(), trace_headers_init(), vaapi_encode_h264_configure(), vaapi_encode_h265_configure(), vaapi_encode_mjpeg_configure(), vaapi_encode_mpeg2_configure(), and vp9_metadata_init().
void ff_cbs_close | ( | CodedBitstreamContext ** | ctx | ) |
Close a context and free all internal state.
Definition at line 115 of file cbs.c.
Referenced by av1_frame_merge_close(), av1_frame_split_close(), av1_metadata_close(), av1_parser_close(), filter_units_close(), h264_metadata_close(), h264_redundant_pps_close(), h265_metadata_close(), mpeg2_metadata_close(), trace_headers_close(), vaapi_encode_h264_close(), vaapi_encode_h265_close(), vaapi_encode_mjpeg_close(), vaapi_encode_mpeg2_close(), and vp9_metadata_close().
int ff_cbs_read_extradata | ( | CodedBitstreamContext * | ctx, |
CodedBitstreamFragment * | frag, | ||
const AVCodecParameters * | par | ||
) |
Read the extradata bitstream found in codec parameters into a fragment, then split into units and decompose.
This also updates the internal state, so will need to be called for codecs with extradata to read parameter sets necessary for further parsing even if the fragment itself is not desired.
The fragment must have been zeroed or reset via ff_cbs_fragment_reset before use.
Definition at line 224 of file cbs.c.
Referenced by av1_frame_split_init(), av1_metadata_init(), filter_units_init(), h264_metadata_init(), h264_redundant_pps_init(), h265_metadata_init(), mpeg2_metadata_init(), and trace_headers_init().
int ff_cbs_read_packet | ( | CodedBitstreamContext * | ctx, |
CodedBitstreamFragment * | frag, | ||
const AVPacket * | pkt | ||
) |
Read the data bitstream from a packet into a fragment, then split into units and decompose.
This also updates the internal state of the coded bitstream context with any persistent data from the fragment which may be required to read following fragments (e.g. parameter sets).
The fragment must have been zeroed or reset via ff_cbs_fragment_reset before use.
Definition at line 242 of file cbs.c.
Referenced by av1_frame_merge_filter(), av1_frame_split_filter(), av1_metadata_filter(), filter_units_filter(), h264_metadata_filter(), h264_redundant_pps_filter(), h265_metadata_filter(), mpeg2_metadata_filter(), trace_headers(), and vp9_metadata_filter().
int ff_cbs_read | ( | CodedBitstreamContext * | ctx, |
CodedBitstreamFragment * | frag, | ||
const uint8_t * | data, | ||
size_t | size | ||
) |
Read a bitstream from a memory region into a fragment, then split into units and decompose.
This also updates the internal state of the coded bitstream context with any persistent data from the fragment which may be required to read following fragments (e.g. parameter sets).
The fragment must have been zeroed or reset via ff_cbs_fragment_reset before use.
Definition at line 269 of file cbs.c.
Referenced by av1_metadata_update_side_data(), av1_parser_parse(), h264_metadata_update_side_data(), and h265_metadata_update_side_data().
int ff_cbs_write_fragment_data | ( | CodedBitstreamContext * | ctx, |
CodedBitstreamFragment * | frag | ||
) |
Write the content of the fragment to its own internal buffer.
Writes the content of all units and then assembles them into a new data buffer. When modifying the content of decomposed units, this can be used to regenerate the bitstream form of units or the whole fragment so that it can be extracted for other use.
This also updates the internal state of the coded bitstream context with any persistent data from the fragment which may be required to write following fragments (e.g. parameter sets).
Definition at line 340 of file cbs.c.
Referenced by av1_metadata_update_side_data(), ff_cbs_write_extradata(), ff_cbs_write_packet(), h264_metadata_update_side_data(), h265_metadata_update_side_data(), vaapi_encode_h264_write_access_unit(), vaapi_encode_h265_write_access_unit(), vaapi_encode_mjpeg_write_image_header(), and vaapi_encode_mpeg2_write_fragment().
int ff_cbs_write_extradata | ( | CodedBitstreamContext * | ctx, |
AVCodecParameters * | par, | ||
CodedBitstreamFragment * | frag | ||
) |
Write the bitstream of a fragment to the extradata in codec parameters.
Modifies context and fragment as ff_cbs_write_fragment_data does and replaces any existing extradata in the structure.
Definition at line 376 of file cbs.c.
Referenced by av1_metadata_init(), filter_units_init(), h264_metadata_init(), h264_redundant_pps_init(), h265_metadata_init(), and mpeg2_metadata_init().
int ff_cbs_write_packet | ( | CodedBitstreamContext * | ctx, |
AVPacket * | pkt, | ||
CodedBitstreamFragment * | frag | ||
) |
Write the bitstream of a fragment to a packet.
Modifies context and fragment as ff_cbs_write_fragment_data does.
On success, the packet's buf is unreferenced and its buf, data and size fields are set to the corresponding values from the newly updated fragment; other fields are not touched. On failure, the packet is not touched at all.
Definition at line 401 of file cbs.c.
Referenced by av1_frame_merge_filter(), av1_metadata_filter(), filter_units_filter(), h264_metadata_filter(), h264_redundant_pps_filter(), h265_metadata_filter(), mpeg2_metadata_filter(), and vp9_metadata_filter().
void ff_cbs_fragment_reset | ( | CodedBitstreamContext * | ctx, |
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 142 of file cbs.c.
Referenced by av1_frame_merge_filter(), av1_frame_merge_flush(), av1_frame_split_filter(), av1_frame_split_flush(), av1_frame_split_init(), av1_metadata_filter(), av1_metadata_init(), av1_metadata_update_side_data(), av1_parser_parse(), ff_cbs_fragment_free(), filter_units_filter(), filter_units_init(), h264_metadata_filter(), h264_metadata_init(), h264_metadata_update_side_data(), h264_redundant_pps_filter(), h264_redundant_pps_init(), h265_metadata_filter(), h265_metadata_init(), h265_metadata_update_side_data(), mpeg2_metadata_filter(), mpeg2_metadata_init(), trace_headers(), trace_headers_init(), vaapi_encode_h264_write_extra_header(), vaapi_encode_h264_write_sequence_header(), vaapi_encode_h264_write_slice_header(), vaapi_encode_h265_write_extra_header(), vaapi_encode_h265_write_sequence_header(), vaapi_encode_h265_write_slice_header(), vaapi_encode_mjpeg_write_image_header(), vaapi_encode_mpeg2_write_picture_header(), vaapi_encode_mpeg2_write_sequence_header(), and vp9_metadata_filter().
void ff_cbs_fragment_free | ( | CodedBitstreamContext * | ctx, |
CodedBitstreamFragment * | frag | ||
) |
Free the units array of a fragment in addition to what ff_cbs_fragment_reset does.
Definition at line 157 of file cbs.c.
Referenced by av1_frame_merge_close(), av1_frame_split_close(), av1_metadata_close(), av1_parser_close(), filter_units_close(), h264_metadata_close(), h264_redundant_pps_close(), h265_metadata_close(), mpeg2_metadata_close(), trace_headers_close(), vaapi_encode_h264_close(), vaapi_encode_h265_close(), vaapi_encode_mjpeg_close(), vaapi_encode_mpeg2_close(), and vp9_metadata_close().
int ff_cbs_alloc_unit_content | ( | CodedBitstreamContext * | ctx, |
CodedBitstreamUnit * | unit, | ||
size_t | size, | ||
void(*)(void *opaque, uint8_t *content) | free | ||
) |
Allocate a new internal content buffer of the given size in the unit.
The content will be zeroed.
int ff_cbs_alloc_unit_data | ( | CodedBitstreamContext * | ctx, |
CodedBitstreamUnit * | unit, | ||
size_t | size | ||
) |
Allocate a new internal data buffer of the given size in the unit.
The data buffer will have input padding.
Definition at line 665 of file cbs.c.
Referenced by cbs_write_unit_data().
int ff_cbs_insert_unit_content | ( | CodedBitstreamContext * | ctx, |
CodedBitstreamFragment * | frag, | ||
int | position, | ||
CodedBitstreamUnitType | type, | ||
void * | content, | ||
AVBufferRef * | content_buf | ||
) |
Insert a new unit into a fragment with the given content.
The content structure continues to be owned by the caller if content_buf is not supplied.
Definition at line 722 of file cbs.c.
Referenced by av1_frame_merge_filter(), av1_metadata_filter(), ff_cbs_h264_add_sei_message(), h264_metadata_filter(), h265_metadata_filter(), mpeg2_metadata_update_fragment(), vaapi_encode_h264_add_nal(), vaapi_encode_h265_add_nal(), vaapi_encode_mjpeg_write_image_header(), and vaapi_encode_mpeg2_add_header().
int ff_cbs_insert_unit_data | ( | CodedBitstreamContext * | ctx, |
CodedBitstreamFragment * | frag, | ||
int | position, | ||
CodedBitstreamUnitType | type, | ||
uint8_t * | data, | ||
size_t | data_size, | ||
AVBufferRef * | data_buf | ||
) |
Insert a new unit into 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 759 of file cbs.c.
Referenced by cbs_av1_split_fragment(), cbs_h2645_fragment_add_nals(), cbs_jpeg_split_fragment(), cbs_mpeg2_split_fragment(), and cbs_vp9_split_fragment().
void ff_cbs_delete_unit | ( | CodedBitstreamContext * | ctx, |
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 799 of file cbs.c.
Referenced by av1_metadata_filter(), ff_cbs_h264_delete_sei_message(), filter_units_filter(), h264_metadata_filter(), h264_redundant_pps_filter(), and h265_metadata_filter().