FFmpeg
Functions
cbs_sei.c File Reference
#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"

Go to the source code of this file.

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...
 

Function Documentation

◆ cbs_free_user_data_registered()

static void cbs_free_user_data_registered ( AVRefStructOpaque  unused,
void *  obj 
)
static

Definition at line 28 of file cbs_sei.c.

Referenced by ff_cbs_sei_alloc_message_payload().

◆ cbs_free_user_data_unregistered()

static void cbs_free_user_data_unregistered ( AVRefStructOpaque  unused,
void *  obj 
)
static

Definition at line 34 of file cbs_sei.c.

Referenced by ff_cbs_sei_alloc_message_payload().

◆ ff_cbs_sei_alloc_message_payload()

int ff_cbs_sei_alloc_message_payload ( SEIRawMessage message,
const SEIMessageTypeDescriptor desc 
)

Allocate a new payload for the given SEI message.

Definition at line 40 of file cbs_sei.c.

Referenced by message().

◆ ff_cbs_sei_list_add()

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 66 of file cbs_sei.c.

Referenced by ff_cbs_sei_add_message(), and message_list().

◆ ff_cbs_sei_free_message_list()

void ff_cbs_sei_free_message_list ( SEIRawMessageList list)

Free all SEI messages in a message list.

Definition at line 91 of file cbs_sei.c.

Referenced by cbs_h264_free_sei(), cbs_h265_free_sei(), and cbs_h266_free_sei().

◆ cbs_sei_get_unit()

static int cbs_sei_get_unit ( CodedBitstreamContext ctx,
CodedBitstreamFragment au,
int  prefix,
CodedBitstreamUnit **  sei_unit 
)
static

Definition at line 101 of file cbs_sei.c.

Referenced by ff_cbs_sei_add_message().

◆ cbs_sei_get_message_list()

static int cbs_sei_get_message_list ( CodedBitstreamContext ctx,
CodedBitstreamUnit unit,
SEIRawMessageList **  list 
)
static

◆ ff_cbs_sei_add_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 267 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().

◆ ff_cbs_sei_find_message()

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 314 of file cbs_sei.c.

Referenced by h264_metadata_handle_display_orientation().

◆ cbs_sei_delete_message()

static void cbs_sei_delete_message ( SEIRawMessageList list,
int  position 
)
static

Definition at line 347 of file cbs_sei.c.

Referenced by ff_cbs_sei_delete_message_type().

◆ 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 367 of file cbs_sei.c.

Referenced by h264_metadata_handle_display_orientation(), and h264_metadata_update_fragment().