|
FFmpeg
|
#include "libavutil/mem.h"#include "cbs.h"#include "cbs_internal.h"#include "cbs_h264.h"#include "cbs_h265.h"#include "cbs_h266.h"#include "cbs_sei.h"#include "libavutil/refstruct.h"#include "cbs_sei_syntax_template.c"Go to the source code of this file.
Macros | |
| #define | HEADER(name) |
| #define | CHECK(call) |
| #define | FUNC_NAME2(rw, codec, name) cbs_ ## codec ## _ ## rw ## _ ## name |
| #define | FUNC_NAME1(rw, codec, name) FUNC_NAME2(rw, codec, name) |
| #define | FUNC_NAME2_EXPORT(rw, codec, name) ff_cbs_ ## codec ## _ ## rw ## _ ## name |
| #define | FUNC_NAME1_EXPORT(rw, codec, name) FUNC_NAME2_EXPORT(rw, codec, name) |
| #define | FUNC_SEI(name) FUNC_NAME1(READWRITE, sei, name) |
| #define | FUNC_SEI_EXPORT(name) FUNC_NAME1_EXPORT(READWRITE, sei, name) |
| #define | SEI_FUNC(name, args) |
| #define | SUBSCRIPTS(subs, ...) (subs > 0 ? ((int[subs + 1]){ subs, __VA_ARGS__ }) : NULL) |
| #define | u(width, name, range_min, range_max) xu(width, name, current->name, range_min, range_max, 0, ) |
| #define | flag(name) ub(1, name) |
| #define | ue(name, range_min, range_max) xue(name, current->name, range_min, range_max, 0, ) |
| #define | i(width, name, range_min, range_max) xi(width, name, current->name, range_min, range_max, 0, ) |
| #define | ib(width, name) xi(width, name, current->name, MIN_INT_BITS(width), MAX_INT_BITS(width), 0, ) |
| #define | se(name, range_min, range_max) xse(name, current->name, range_min, range_max, 0, ) |
| #define | us(width, name, range_min, range_max, subs, ...) xu(width, name, current->name, range_min, range_max, subs, __VA_ARGS__) |
| #define | ubs(width, name, subs, ...) xu(width, name, current->name, 0, MAX_UINT_BITS(width), subs, __VA_ARGS__) |
| #define | flags(name, subs, ...) xu(1, name, current->name, 0, 1, subs, __VA_ARGS__) |
| #define | ues(name, range_min, range_max, subs, ...) xue(name, current->name, range_min, range_max, subs, __VA_ARGS__) |
| #define | is(width, name, range_min, range_max, subs, ...) xi(width, name, current->name, range_min, range_max, subs, __VA_ARGS__) |
| #define | ibs(width, name, subs, ...) xi(width, name, current->name, MIN_INT_BITS(width), MAX_INT_BITS(width), subs, __VA_ARGS__) |
| #define | ses(name, range_min, range_max, subs, ...) xse(name, current->name, range_min, range_max, subs, __VA_ARGS__) |
| #define | fixed(width, name, value) |
| #define | READ |
| #define | READWRITE read |
| #define | RWContext GetBitContext |
| #define | ub(width, name) |
| #define | xu(width, name, var, range_min, range_max, subs, ...) |
| #define | xue(name, var, range_min, range_max, subs, ...) |
| #define | xi(width, name, var, range_min, range_max, subs, ...) |
| #define | xse(name, var, range_min, range_max, subs, ...) |
| #define | infer(name, value) |
| #define | more_rbsp_data(var) ((var) = ff_cbs_h2645_read_more_rbsp_data(rw)) |
| #define | bit_position(rw) (get_bits_count(rw)) |
| #define | byte_alignment(rw) (get_bits_count(rw) % 8) |
| #define | allocate(name, size) |
| #define | FUNC(name) FUNC_SEI_EXPORT(name) |
| #define | WRITE |
| #define | READWRITE write |
| #define | RWContext PutBitContext |
| #define | ub(width, name) |
| #define | xu(width, name, var, range_min, range_max, subs, ...) |
| #define | xue(name, var, range_min, range_max, subs, ...) |
| #define | xi(width, name, var, range_min, range_max, subs, ...) |
| #define | xse(name, var, range_min, range_max, subs, ...) |
| #define | infer(name, value) |
| #define | more_rbsp_data(var) (var) |
| #define | bit_position(rw) (put_bits_count(rw)) |
| #define | byte_alignment(rw) (put_bits_count(rw) % 8) |
| #define | allocate(name, size) |
| #define | FUNC(name) FUNC_SEI_EXPORT(name) |
| #define | SEI_MESSAGE_RW(codec, name) |
Functions | |
| static void | cbs_free_user_data_registered (AVRefStructOpaque unused, void *obj) |
| static void | cbs_free_user_data_unregistered (AVRefStructOpaque unused, void *obj) |
| int | ff_cbs_sei_alloc_message_payload (SEIRawMessage *message, const SEIMessageTypeDescriptor *desc) |
| Allocate a new payload for the given SEI message. More... | |
| int | ff_cbs_sei_list_add (SEIRawMessageList *list) |
| Allocate a new empty SEI message in a message list. More... | |
| void | ff_cbs_sei_free_message_list (SEIRawMessageList *list) |
| Free all SEI messages in a message list. More... | |
| static int | cbs_sei_get_unit (CodedBitstreamContext *ctx, CodedBitstreamFragment *au, int prefix, CodedBitstreamUnit **sei_unit) |
| static int | cbs_sei_get_message_list (CodedBitstreamContext *ctx, CodedBitstreamUnit *unit, SEIRawMessageList **list) |
| int | ff_cbs_sei_add_message (CodedBitstreamContext *ctx, CodedBitstreamFragment *au, int prefix, uint32_t payload_type, void *payload_data, void *payload_ref) |
| Add an SEI message to an access unit. More... | |
| int | ff_cbs_sei_find_message (CodedBitstreamContext *ctx, CodedBitstreamFragment *au, uint32_t payload_type, SEIRawMessage **iter) |
| Iterate over messages with the given payload type in an access unit. More... | |
| static void | cbs_sei_delete_message (SEIRawMessageList *list, int position) |
| void | ff_cbs_sei_delete_message_type (CodedBitstreamContext *ctx, CodedBitstreamFragment *au, uint32_t payload_type) |
| Delete all messages with the given payload type from an access unit. More... | |
| const SEIMessageTypeDescriptor * | ff_cbs_sei_find_type (CodedBitstreamContext *ctx, int payload_type) |
| Find the type descriptor for the given payload type. More... | |
Variables | |
| static const SEIMessageTypeDescriptor | cbs_sei_common_types [] |
| static const SEIMessageTypeDescriptor | cbs_sei_h274_types [] |
| #define HEADER | ( | name | ) |
| #define CHECK | ( | call | ) |
| #define FUNC_NAME1 | ( | rw, | |
| codec, | |||
| name | |||
| ) | FUNC_NAME2(rw, codec, name) |
| #define FUNC_NAME1_EXPORT | ( | rw, | |
| codec, | |||
| name | |||
| ) | FUNC_NAME2_EXPORT(rw, codec, name) |
| #define FUNC_SEI_EXPORT | ( | name | ) | FUNC_NAME1_EXPORT(READWRITE, sei, name) |
| #define SEI_FUNC | ( | name, | |
| args | |||
| ) |
| #define SUBSCRIPTS | ( | subs, | |
| ... | |||
| ) | (subs > 0 ? ((int[subs + 1]){ subs, __VA_ARGS__ }) : NULL) |
| #define ib | ( | width, | |
| name | |||
| ) | xi(width, name, current->name, MIN_INT_BITS(width), MAX_INT_BITS(width), 0, ) |
| #define ibs | ( | width, | |
| name, | |||
| subs, | |||
| ... | |||
| ) | xi(width, name, current->name, MIN_INT_BITS(width), MAX_INT_BITS(width), subs, __VA_ARGS__) |
| #define RWContext GetBitContext |
| #define xue | ( | name, | |
| var, | |||
| range_min, | |||
| range_max, | |||
| subs, | |||
| ... | |||
| ) |
| #define xse | ( | name, | |
| var, | |||
| range_min, | |||
| range_max, | |||
| subs, | |||
| ... | |||
| ) |
| #define more_rbsp_data | ( | var | ) | ((var) = ff_cbs_h2645_read_more_rbsp_data(rw)) |
| #define bit_position | ( | rw | ) | (get_bits_count(rw)) |
| #define byte_alignment | ( | rw | ) | (get_bits_count(rw) % 8) |
| #define FUNC | ( | name | ) | FUNC_SEI_EXPORT(name) |
| #define RWContext PutBitContext |
| #define xue | ( | name, | |
| var, | |||
| range_min, | |||
| range_max, | |||
| subs, | |||
| ... | |||
| ) |
| #define xse | ( | name, | |
| var, | |||
| range_min, | |||
| range_max, | |||
| subs, | |||
| ... | |||
| ) |
| #define bit_position | ( | rw | ) | (put_bits_count(rw)) |
| #define byte_alignment | ( | rw | ) | (put_bits_count(rw) % 8) |
| #define FUNC | ( | name | ) | FUNC_SEI_EXPORT(name) |
| #define SEI_MESSAGE_RW | ( | codec, | |
| name | |||
| ) |
|
static |
Definition at line 228 of file cbs_sei.c.
Referenced by ff_cbs_sei_alloc_message_payload().
|
static |
Definition at line 234 of file cbs_sei.c.
Referenced by ff_cbs_sei_alloc_message_payload().
| int ff_cbs_sei_alloc_message_payload | ( | SEIRawMessage * | message, |
| const SEIMessageTypeDescriptor * | desc | ||
| ) |
| int ff_cbs_sei_list_add | ( | SEIRawMessageList * | list | ) |
Allocate a new empty SEI message in a message list.
The new message is in place nb_messages - 1.
Definition at line 266 of file cbs_sei.c.
Referenced by ff_cbs_sei_add_message(), and message_list().
| void ff_cbs_sei_free_message_list | ( | SEIRawMessageList * | list | ) |
Free all SEI messages in a message list.
Definition at line 291 of file cbs_sei.c.
Referenced by cbs_h264_free_sei(), cbs_h265_free_sei(), and cbs_h266_free_sei().
|
static |
Definition at line 301 of file cbs_sei.c.
Referenced by ff_cbs_sei_add_message().
|
static |
Definition at line 429 of file cbs_sei.c.
Referenced by ff_cbs_sei_add_message(), ff_cbs_sei_delete_message_type(), and ff_cbs_sei_find_message().
| int ff_cbs_sei_add_message | ( | CodedBitstreamContext * | ctx, |
| CodedBitstreamFragment * | au, | ||
| int | prefix, | ||
| uint32_t | payload_type, | ||
| void * | payload_data, | ||
| void * | payload_ref | ||
| ) |
Add an SEI message to an access unit.
Will add to an existing SEI NAL unit, or create a new one for the message if there is no suitable existing one.
If set, payload_ref must be a RefStruct reference backing payload_data. This function creates a new reference to payload_ref in this case. If payload_ref is NULL, the new message will not be reference counted.
Definition at line 467 of file cbs_sei.c.
Referenced by h264_metadata_handle_display_orientation(), h264_metadata_update_fragment(), vaapi_encode_h264_write_extra_header(), vaapi_encode_h265_write_extra_header(), and write_extra_headers().
| int ff_cbs_sei_find_message | ( | CodedBitstreamContext * | ctx, |
| CodedBitstreamFragment * | au, | ||
| uint32_t | payload_type, | ||
| SEIRawMessage ** | message | ||
| ) |
Iterate over messages with the given payload type in an access unit.
Set message to NULL in the first call. Returns 0 while more messages are available, AVERROR(ENOENT) when all messages have been found.
Definition at line 514 of file cbs_sei.c.
Referenced by h264_metadata_handle_display_orientation().
|
static |
Definition at line 547 of file cbs_sei.c.
Referenced by ff_cbs_sei_delete_message_type().
| void ff_cbs_sei_delete_message_type | ( | CodedBitstreamContext * | ctx, |
| CodedBitstreamFragment * | au, | ||
| uint32_t | payload_type | ||
| ) |
Delete all messages with the given payload type from an access unit.
Definition at line 567 of file cbs_sei.c.
Referenced by h264_metadata_handle_display_orientation(), and h264_metadata_update_fragment().
| const SEIMessageTypeDescriptor* ff_cbs_sei_find_type | ( | CodedBitstreamContext * | ctx, |
| int | payload_type | ||
| ) |
Find the type descriptor for the given payload type.
Returns NULL if the payload type is not known.
Definition at line 673 of file cbs_sei.c.
Referenced by ff_cbs_sei_add_message(), and message().
|
static |
Definition at line 593 of file cbs_sei.c.
Referenced by ff_cbs_sei_find_type().
|
static |
Definition at line 651 of file cbs_sei.c.
Referenced by ff_cbs_sei_find_type().
1.8.17