FFmpeg
Macros | Functions | Variables
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"
#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 SEIMessageTypeDescriptorff_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 []
 

Macro Definition Documentation

◆ HEADER

#define HEADER (   name)
Value:
do { \
ff_cbs_trace_header(ctx, name); \
} while (0)

Definition at line 28 of file cbs_sei.c.

◆ CHECK

#define CHECK (   call)
Value:
do { \
err = (call); \
if (err < 0) \
return err; \
} while (0)

Definition at line 32 of file cbs_sei.c.

◆ FUNC_NAME2

#define FUNC_NAME2 (   rw,
  codec,
  name 
)    cbs_ ## codec ## _ ## rw ## _ ## name

Definition at line 38 of file cbs_sei.c.

◆ FUNC_NAME1

#define FUNC_NAME1 (   rw,
  codec,
  name 
)    FUNC_NAME2(rw, codec, name)

Definition at line 39 of file cbs_sei.c.

◆ FUNC_NAME2_EXPORT

#define FUNC_NAME2_EXPORT (   rw,
  codec,
  name 
)    ff_cbs_ ## codec ## _ ## rw ## _ ## name

Definition at line 40 of file cbs_sei.c.

◆ FUNC_NAME1_EXPORT

#define FUNC_NAME1_EXPORT (   rw,
  codec,
  name 
)    FUNC_NAME2_EXPORT(rw, codec, name)

Definition at line 41 of file cbs_sei.c.

◆ FUNC_SEI

#define FUNC_SEI (   name)    FUNC_NAME1(READWRITE, sei, name)

Definition at line 42 of file cbs_sei.c.

◆ FUNC_SEI_EXPORT

#define FUNC_SEI_EXPORT (   name)    FUNC_NAME1_EXPORT(READWRITE, sei, name)

Definition at line 43 of file cbs_sei.c.

◆ SEI_FUNC

#define SEI_FUNC (   name,
  args 
)
Value:
static int FUNC_SEI(name) args; \
static int FUNC_SEI(name ## _internal)(CodedBitstreamContext *ctx, \
RWContext *rw, void *cur, \
SEIMessageState *state) \
{ \
return FUNC_SEI(name)(ctx, rw, cur, state); \
} \
static int FUNC_SEI(name) args

Definition at line 45 of file cbs_sei.c.

◆ SUBSCRIPTS

#define SUBSCRIPTS (   subs,
  ... 
)    (subs > 0 ? ((int[subs + 1]){ subs, __VA_ARGS__ }) : NULL)

Definition at line 55 of file cbs_sei.c.

◆ u

#define u (   width,
  name,
  range_min,
  range_max 
)    xu(width, name, current->name, range_min, range_max, 0, )

Definition at line 57 of file cbs_sei.c.

◆ flag

#define flag (   name)    ub(1, name)

Definition at line 59 of file cbs_sei.c.

◆ ue

#define ue (   name,
  range_min,
  range_max 
)    xue(name, current->name, range_min, range_max, 0, )

Definition at line 60 of file cbs_sei.c.

◆ i

#define i (   width,
  name,
  range_min,
  range_max 
)    xi(width, name, current->name, range_min, range_max, 0, )

Definition at line 62 of file cbs_sei.c.

◆ ib

#define ib (   width,
  name 
)    xi(width, name, current->name, MIN_INT_BITS(width), MAX_INT_BITS(width), 0, )

Definition at line 64 of file cbs_sei.c.

◆ se

#define se (   name,
  range_min,
  range_max 
)    xse(name, current->name, range_min, range_max, 0, )

Definition at line 66 of file cbs_sei.c.

◆ us

#define us (   width,
  name,
  range_min,
  range_max,
  subs,
  ... 
)    xu(width, name, current->name, range_min, range_max, subs, __VA_ARGS__)

Definition at line 69 of file cbs_sei.c.

◆ ubs

#define ubs (   width,
  name,
  subs,
  ... 
)    xu(width, name, current->name, 0, MAX_UINT_BITS(width), subs, __VA_ARGS__)

Definition at line 71 of file cbs_sei.c.

◆ flags

#define flags (   name,
  subs,
  ... 
)    xu(1, name, current->name, 0, 1, subs, __VA_ARGS__)

Definition at line 73 of file cbs_sei.c.

◆ ues

#define ues (   name,
  range_min,
  range_max,
  subs,
  ... 
)    xue(name, current->name, range_min, range_max, subs, __VA_ARGS__)

Definition at line 75 of file cbs_sei.c.

◆ is

#define is (   width,
  name,
  range_min,
  range_max,
  subs,
  ... 
)    xi(width, name, current->name, range_min, range_max, subs, __VA_ARGS__)

Definition at line 77 of file cbs_sei.c.

◆ ibs

#define ibs (   width,
  name,
  subs,
  ... 
)    xi(width, name, current->name, MIN_INT_BITS(width), MAX_INT_BITS(width), subs, __VA_ARGS__)

Definition at line 79 of file cbs_sei.c.

◆ ses

#define ses (   name,
  range_min,
  range_max,
  subs,
  ... 
)    xse(name, current->name, range_min, range_max, subs, __VA_ARGS__)

Definition at line 81 of file cbs_sei.c.

◆ fixed

#define fixed (   width,
  name,
  value 
)
Value:
do { \
av_unused uint32_t fixed_value = value; \
xu(width, name, fixed_value, value, value, 0, ); \
} while (0)

Definition at line 84 of file cbs_sei.c.

◆ READ

#define READ

Definition at line 90 of file cbs_sei.c.

◆ READWRITE [1/2]

#define READWRITE   read

Definition at line 168 of file cbs_sei.c.

◆ RWContext [1/2]

#define RWContext   GetBitContext

Definition at line 169 of file cbs_sei.c.

◆ ub [1/2]

#define ub (   width,
  name 
)
Value:
do { \
uint32_t value; \
CHECK(ff_cbs_read_simple_unsigned(ctx, rw, width, #name, \
&value)); \
current->name = value; \
} while (0)

Definition at line 171 of file cbs_sei.c.

◆ xu [1/2]

#define xu (   width,
  name,
  var,
  range_min,
  range_max,
  subs,
  ... 
)
Value:
do { \
uint32_t value; \
CHECK(ff_cbs_read_unsigned(ctx, rw, width, #name, \
SUBSCRIPTS(subs, __VA_ARGS__), \
&value, range_min, range_max)); \
var = value; \
} while (0)

Definition at line 176 of file cbs_sei.c.

◆ xue [1/2]

#define xue (   name,
  var,
  range_min,
  range_max,
  subs,
  ... 
)
Value:
do { \
uint32_t value; \
SUBSCRIPTS(subs, __VA_ARGS__), \
&value, range_min, range_max)); \
var = value; \
} while (0)

Definition at line 182 of file cbs_sei.c.

◆ xi [1/2]

#define xi (   width,
  name,
  var,
  range_min,
  range_max,
  subs,
  ... 
)
Value:
do { \
int32_t value; \
CHECK(ff_cbs_read_signed(ctx, rw, width, #name, \
SUBSCRIPTS(subs, __VA_ARGS__), \
&value, range_min, range_max)); \
var = value; \
} while (0)

Definition at line 188 of file cbs_sei.c.

◆ xse [1/2]

#define xse (   name,
  var,
  range_min,
  range_max,
  subs,
  ... 
)
Value:
do { \
int32_t value; \
SUBSCRIPTS(subs, __VA_ARGS__), \
&value, range_min, range_max)); \
var = value; \
} while (0)

Definition at line 194 of file cbs_sei.c.

◆ infer [1/2]

#define infer (   name,
  value 
)
Value:
do { \
current->name = value; \
} while (0)

Definition at line 201 of file cbs_sei.c.

◆ more_rbsp_data [1/2]

#define more_rbsp_data (   var)    ((var) = ff_cbs_h2645_read_more_rbsp_data(rw))

Definition at line 211 of file cbs_sei.c.

◆ bit_position [1/2]

#define bit_position (   rw)    (get_bits_count(rw))

Definition at line 213 of file cbs_sei.c.

◆ byte_alignment [1/2]

#define byte_alignment (   rw)    (get_bits_count(rw) % 8)

Definition at line 214 of file cbs_sei.c.

◆ allocate [1/2]

#define allocate (   name,
  size 
)
Value:
do { \
if (!name) \
return AVERROR(ENOMEM); \
} while (0)

Definition at line 216 of file cbs_sei.c.

◆ FUNC [1/2]

#define FUNC (   name)    FUNC_SEI_EXPORT(name)

Definition at line 224 of file cbs_sei.c.

◆ WRITE

#define WRITE

Definition at line 167 of file cbs_sei.c.

◆ READWRITE [2/2]

#define READWRITE   write

Definition at line 168 of file cbs_sei.c.

◆ RWContext [2/2]

#define RWContext   PutBitContext

Definition at line 169 of file cbs_sei.c.

◆ ub [2/2]

#define ub (   width,
  name 
)
Value:
do { \
uint32_t value = current->name; \
CHECK(ff_cbs_write_simple_unsigned(ctx, rw, width, #name, \
value)); \
} while (0)

Definition at line 171 of file cbs_sei.c.

◆ xu [2/2]

#define xu (   width,
  name,
  var,
  range_min,
  range_max,
  subs,
  ... 
)
Value:
do { \
uint32_t value = var; \
CHECK(ff_cbs_write_unsigned(ctx, rw, width, #name, \
SUBSCRIPTS(subs, __VA_ARGS__), \
value, range_min, range_max)); \
} while (0)

Definition at line 176 of file cbs_sei.c.

◆ xue [2/2]

#define xue (   name,
  var,
  range_min,
  range_max,
  subs,
  ... 
)
Value:
do { \
uint32_t value = var; \
SUBSCRIPTS(subs, __VA_ARGS__), \
value, range_min, range_max)); \
} while (0)

Definition at line 182 of file cbs_sei.c.

◆ xi [2/2]

#define xi (   width,
  name,
  var,
  range_min,
  range_max,
  subs,
  ... 
)
Value:
do { \
int32_t value = var; \
CHECK(ff_cbs_write_signed(ctx, rw, width, #name, \
SUBSCRIPTS(subs, __VA_ARGS__), \
value, range_min, range_max)); \
} while (0)

Definition at line 188 of file cbs_sei.c.

◆ xse [2/2]

#define xse (   name,
  var,
  range_min,
  range_max,
  subs,
  ... 
)
Value:
do { \
int32_t value = var; \
SUBSCRIPTS(subs, __VA_ARGS__), \
value, range_min, range_max)); \
} while (0)

Definition at line 194 of file cbs_sei.c.

◆ infer [2/2]

#define infer (   name,
  value 
)
Value:
do { \
if (current->name != (value)) { \
av_log(ctx->log_ctx, AV_LOG_ERROR, \
"%s does not match inferred value: " \
"%"PRId64", but should be %"PRId64".\n", \
#name, (int64_t)current->name, (int64_t)(value)); \
} \
} while (0)

Definition at line 201 of file cbs_sei.c.

◆ more_rbsp_data [2/2]

#define more_rbsp_data (   var)    (var)

Definition at line 211 of file cbs_sei.c.

◆ bit_position [2/2]

#define bit_position (   rw)    (put_bits_count(rw))

Definition at line 213 of file cbs_sei.c.

◆ byte_alignment [2/2]

#define byte_alignment (   rw)    (put_bits_count(rw) % 8)

Definition at line 214 of file cbs_sei.c.

◆ allocate [2/2]

#define allocate (   name,
  size 
)
Value:
do { \
if (!name) { \
av_log(ctx->log_ctx, AV_LOG_ERROR, "%s must be set " \
"for writing.\n", #name); \
} \
} while (0)

Definition at line 216 of file cbs_sei.c.

◆ FUNC [2/2]

#define FUNC (   name)    FUNC_SEI_EXPORT(name)

Definition at line 224 of file cbs_sei.c.

◆ SEI_MESSAGE_RW

#define SEI_MESSAGE_RW (   codec,
  name 
)
Value:
.read = cbs_ ## codec ## _read_ ## name ## _internal, \
.write = cbs_ ## codec ## _write_ ## name ## _internal

Definition at line 589 of file cbs_sei.c.

Function Documentation

◆ cbs_free_user_data_registered()

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

Definition at line 228 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 234 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 240 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 266 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 291 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 301 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 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().

◆ 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 514 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 547 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 567 of file cbs_sei.c.

Referenced by h264_metadata_handle_display_orientation(), and h264_metadata_update_fragment().

◆ ff_cbs_sei_find_type()

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

Variable Documentation

◆ cbs_sei_common_types

const SEIMessageTypeDescriptor cbs_sei_common_types[]
static

Definition at line 593 of file cbs_sei.c.

Referenced by ff_cbs_sei_find_type().

◆ cbs_sei_h274_types

const SEIMessageTypeDescriptor cbs_sei_h274_types[]
static
Initial value:

Definition at line 651 of file cbs_sei.c.

Referenced by ff_cbs_sei_find_type().

name
it s the only field you need to keep assuming you have a context There is some magic you don t need to care about around this just let it vf default minimum maximum flags name is the option name
Definition: writing_filters.txt:88
AVERROR
Filter the word “frame” indicates either a video frame or a group of audio as stored in an AVFrame structure Format for each input and each output the list of supported formats For video that means pixel format For audio that means channel sample they are references to shared objects When the negotiation mechanism computes the intersection of the formats supported at each end of a all references to both lists are replaced with a reference to the intersection And when a single format is eventually chosen for a link amongst the remaining all references to the list are updated That means that if a filter requires that its input and output have the same format amongst a supported all it has to do is use a reference to the same list of formats query_formats can leave some formats unset and return AVERROR(EAGAIN) to cause the negotiation mechanism toagain later. That can be used by filters with complex requirements to use the format negotiated on one link to set the formats supported on another. Frame references ownership and permissions
SEIRawFrameFieldInformation
Definition: cbs_sei.h:130
ff_cbs_read_ue_golomb
int ff_cbs_read_ue_golomb(CodedBitstreamContext *ctx, GetBitContext *gbc, const char *name, const int *subscripts, uint32_t *write_to, uint32_t range_min, uint32_t range_max)
Definition: cbs_h2645.c:41
int64_t
long long int64_t
Definition: coverity.c:34
CodedBitstreamContext
Context structure for coded bitstream operations.
Definition: cbs.h:226
SUBSCRIPTS
#define SUBSCRIPTS(subs,...)
Definition: cbs_sei.c:55
av_refstruct_allocz
static void * av_refstruct_allocz(size_t size)
Equivalent to av_refstruct_alloc_ext(size, 0, NULL, NULL)
Definition: refstruct.h:105
ff_cbs_write_ue_golomb
int ff_cbs_write_ue_golomb(CodedBitstreamContext *ctx, PutBitContext *pbc, const char *name, const int *subscripts, uint32_t value, uint32_t range_min, uint32_t range_max)
Definition: cbs_h2645.c:145
AV_LOG_ERROR
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
Definition: log.h:210
ctx
static AVFormatContext * ctx
Definition: movenc.c:49
SEI_MESSAGE_TYPE_END
#define SEI_MESSAGE_TYPE_END
Definition: cbs_sei.h:202
ff_cbs_read_se_golomb
int ff_cbs_read_se_golomb(CodedBitstreamContext *ctx, GetBitContext *gbc, const char *name, const int *subscripts, int32_t *write_to, int32_t range_min, int32_t range_max)
Definition: cbs_h2645.c:90
sei
static int FUNC() sei(CodedBitstreamContext *ctx, RWContext *rw, H264RawSEI *current)
Definition: cbs_h264_syntax_template.c:858
size
int size
Definition: twinvq_data.h:10344
SEI_MESSAGE_RW
#define SEI_MESSAGE_RW(codec, name)
Definition: cbs_sei.c:589
ff_cbs_write_se_golomb
int ff_cbs_write_se_golomb(CodedBitstreamContext *ctx, PutBitContext *pbc, const char *name, const int *subscripts, int32_t value, int32_t range_min, int32_t range_max)
Definition: cbs_h2645.c:177
state
static struct @559 state
FUNC_SEI
#define FUNC_SEI(name)
Definition: cbs_sei.c:42
value
it s the only field you need to keep assuming you have a context There is some magic you don t need to care about around this just let it vf default value
Definition: writing_filters.txt:86
SEI_TYPE_DISPLAY_ORIENTATION
@ SEI_TYPE_DISPLAY_ORIENTATION
Definition: sei.h:77
AV_INPUT_BUFFER_PADDING_SIZE
#define AV_INPUT_BUFFER_PADDING_SIZE
Definition: defs.h:40
SEIRawDisplayOrientation
Definition: cbs_sei.h:123
AVERROR_INVALIDDATA
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
Definition: error.h:61
SEI_TYPE_FRAME_FIELD_INFO
@ SEI_TYPE_FRAME_FIELD_INFO
Definition: sei.h:126
width
#define width
Definition: dsp.h:89
SEIRawFilmGrainCharacteristics
Definition: cbs_sei.h:102
SEI_TYPE_FILM_GRAIN_CHARACTERISTICS
@ SEI_TYPE_FILM_GRAIN_CHARACTERISTICS
Definition: sei.h:49