FFmpeg  4.4
Macros | Functions | Variables
cbs_h2645.c File Reference
#include "libavutil/attributes.h"
#include "libavutil/avassert.h"
#include "bytestream.h"
#include "cbs.h"
#include "cbs_internal.h"
#include "cbs_h264.h"
#include "cbs_h265.h"
#include "h264.h"
#include "h264_sei.h"
#include "h2645_parse.h"
#include "hevc.h"
#include "hevc_sei.h"
#include "cbs_sei_syntax_template.c"
#include "cbs_h264_syntax_template.c"
#include "cbs_h265_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_H264(name)   FUNC_NAME1(READWRITE, h264, name)
 
#define FUNC_H265(name)   FUNC_NAME1(READWRITE, h265, name)
 
#define FUNC_SEI(name)   FUNC_NAME1(READWRITE, sei, name)
 
#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 ub(width, name)    xu(width, name, current->name, 0, MAX_UINT_BITS(width), 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 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) = 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(name)
 
#define FUNC(name)   FUNC_H264(name)
 
#define FUNC(name)   FUNC_H265(name)
 
#define WRITE
 
#define READWRITE   write
 
#define RWContext   PutBitContext
 
#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(name)
 
#define FUNC(name)   FUNC_H264(name)
 
#define FUNC(name)   FUNC_H265(name)
 
#define cbs_h2645_replace_ps(h26n, ps_name, ps_var, id_element)
 

Functions

static int 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)
 
static int 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)
 
static int 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)
 
static int 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)
 
static int cbs_h265_payload_extension_present (GetBitContext *gbc, uint32_t payload_size, int cur_pos)
 
static int cbs_h2645_read_more_rbsp_data (GetBitContext *gbc)
 
static int cbs_h2645_fragment_add_nals (CodedBitstreamContext *ctx, CodedBitstreamFragment *frag, const H2645Packet *packet)
 
static int cbs_h2645_split_fragment (CodedBitstreamContext *ctx, CodedBitstreamFragment *frag, int header)
 
 cbs_h2645_replace_ps (cbs_h2645_replace_ps(4, cbs_h2645_replace_ps(SPS, cbs_h2645_replace_ps(sps, seq_parameter_set_id)
 
static int cbs_h265_read_nal_unit (CodedBitstreamContext *ctx, CodedBitstreamUnit *unit)
 
static int cbs_h2645_write_slice_data (CodedBitstreamContext *ctx, PutBitContext *pbc, const uint8_t *data, size_t data_size, int data_bit_start)
 
static int cbs_h264_write_nal_unit (CodedBitstreamContext *ctx, CodedBitstreamUnit *unit, PutBitContext *pbc)
 
static int cbs_h265_write_nal_unit (CodedBitstreamContext *ctx, CodedBitstreamUnit *unit, PutBitContext *pbc)
 
static int cbs_h2645_unit_requires_zero_byte (enum AVCodecID codec_id, CodedBitstreamUnitType type, int nal_unit_index)
 
static int cbs_h2645_assemble_fragment (CodedBitstreamContext *ctx, CodedBitstreamFragment *frag)
 
static void cbs_h264_flush (CodedBitstreamContext *ctx)
 
static void cbs_h264_close (CodedBitstreamContext *ctx)
 
static void cbs_h265_flush (CodedBitstreamContext *ctx)
 
static void cbs_h265_close (CodedBitstreamContext *ctx)
 
static void cbs_h264_free_sei (void *opaque, uint8_t *content)
 
static void cbs_h265_free_sei (void *opaque, uint8_t *content)
 
const SEIMessageTypeDescriptorff_cbs_sei_find_type (CodedBitstreamContext *ctx, int payload_type)
 Find the type descriptor for the given payload type. More...
 

Variables

static const CodedBitstreamUnitTypeDescriptor cbs_h264_unit_types []
 
static const CodedBitstreamUnitTypeDescriptor cbs_h265_unit_types []
 
const CodedBitstreamType ff_cbs_type_h264
 
const CodedBitstreamType ff_cbs_type_h265
 
static const SEIMessageTypeDescriptor cbs_sei_common_types []
 
static const SEIMessageTypeDescriptor cbs_sei_h264_types []
 
static const SEIMessageTypeDescriptor cbs_sei_h265_types []
 

Macro Definition Documentation

◆ HEADER

#define HEADER (   name)
Value:
do { \
ff_cbs_trace_header(ctx, name); \
} while (0)
const char * name
Definition: qsvenc.c:46
AVFormatContext * ctx
Definition: movenc.c:48

Definition at line 246 of file cbs_h2645.c.

◆ CHECK

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

Definition at line 250 of file cbs_h2645.c.

◆ FUNC_NAME2

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

Definition at line 256 of file cbs_h2645.c.

◆ FUNC_NAME1

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

Definition at line 257 of file cbs_h2645.c.

◆ FUNC_H264

#define FUNC_H264 (   name)    FUNC_NAME1(READWRITE, h264, name)

Definition at line 258 of file cbs_h2645.c.

◆ FUNC_H265

#define FUNC_H265 (   name)    FUNC_NAME1(READWRITE, h265, name)

Definition at line 259 of file cbs_h2645.c.

◆ FUNC_SEI

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

Definition at line 260 of file cbs_h2645.c.

◆ SUBSCRIPTS

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

Definition at line 262 of file cbs_h2645.c.

◆ u

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

Definition at line 264 of file cbs_h2645.c.

◆ ub

#define ub (   width,
  name 
)     xu(width, name, current->name, 0, MAX_UINT_BITS(width), 0, )

Definition at line 266 of file cbs_h2645.c.

◆ flag

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

Definition at line 268 of file cbs_h2645.c.

◆ ue

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

Definition at line 269 of file cbs_h2645.c.

◆ i

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

Definition at line 271 of file cbs_h2645.c.

◆ ib

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

Definition at line 273 of file cbs_h2645.c.

◆ se

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

Definition at line 275 of file cbs_h2645.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 278 of file cbs_h2645.c.

◆ ubs

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

Definition at line 280 of file cbs_h2645.c.

◆ flags

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

Definition at line 282 of file cbs_h2645.c.

◆ ues

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

Definition at line 284 of file cbs_h2645.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 286 of file cbs_h2645.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 288 of file cbs_h2645.c.

◆ ses

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

Definition at line 290 of file cbs_h2645.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)
double value
Definition: eval.c:98
#define width

Definition at line 293 of file cbs_h2645.c.

◆ READ

#define READ

Definition at line 299 of file cbs_h2645.c.

◆ READWRITE [1/2]

#define READWRITE   read

Definition at line 389 of file cbs_h2645.c.

◆ RWContext [1/2]

#define RWContext   GetBitContext

Definition at line 390 of file cbs_h2645.c.

◆ xu [1/2]

#define xu (   width,
  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)
int ff_cbs_read_unsigned(CodedBitstreamContext *ctx, GetBitContext *gbc, int width, const char *name, const int *subscripts, uint32_t *write_to, uint32_t range_min, uint32_t range_max)
Definition: cbs.c:503
#define SUBSCRIPTS(subs,...)
Definition: cbs_h2645.c:262

Definition at line 392 of file cbs_h2645.c.

◆ xue [1/2]

#define xue (   name,
  var,
  range_min,
  range_max,
  subs,
  ... 
)
Value:
do { \
uint32_t value; \
CHECK(cbs_read_ue_golomb(ctx, rw, #name, \
SUBSCRIPTS(subs, __VA_ARGS__), \
&value, range_min, range_max)); \
var = value; \
} while (0)
static int 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:34

Definition at line 398 of file cbs_h2645.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)
int ff_cbs_read_signed(CodedBitstreamContext *ctx, GetBitContext *gbc, int width, const char *name, const int *subscripts, int32_t *write_to, int32_t range_min, int32_t range_max)
Definition: cbs.c:582

Definition at line 404 of file cbs_h2645.c.

◆ xse [1/2]

#define xse (   name,
  var,
  range_min,
  range_max,
  subs,
  ... 
)
Value:
do { \
int32_t value; \
CHECK(cbs_read_se_golomb(ctx, rw, #name, \
SUBSCRIPTS(subs, __VA_ARGS__), \
&value, range_min, range_max)); \
var = value; \
} while (0)
static int 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:86

Definition at line 410 of file cbs_h2645.c.

◆ infer [1/2]

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

Definition at line 417 of file cbs_h2645.c.

◆ more_rbsp_data [1/2]

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

Definition at line 427 of file cbs_h2645.c.

◆ bit_position [1/2]

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

Definition at line 429 of file cbs_h2645.c.

◆ byte_alignment [1/2]

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

Definition at line 430 of file cbs_h2645.c.

◆ allocate [1/2]

#define allocate (   name,
  size 
)
Value:
do { \
name ## _ref = av_buffer_allocz(size + \
if (!name ## _ref) \
return AVERROR(ENOMEM); \
name = name ## _ref->data; \
} while (0)
#define AV_INPUT_BUFFER_PADDING_SIZE
Required number of additionally allocated bytes at the end of the input bitstream for decoding.
Definition: avcodec.h:215
AVBufferRef * av_buffer_allocz(buffer_size_t size)
Same as av_buffer_alloc(), except the returned buffer will be initialized to zero.
Definition: buffer.c:83
#define AVERROR(e)
Definition: error.h:43
int size

Definition at line 432 of file cbs_h2645.c.

◆ FUNC [1/6]

#define FUNC (   name)    FUNC_SEI(name)

Definition at line 448 of file cbs_h2645.c.

◆ FUNC [2/6]

#define FUNC (   name)    FUNC_H264(name)

Definition at line 448 of file cbs_h2645.c.

◆ FUNC [3/6]

#define FUNC (   name)    FUNC_H265(name)

Definition at line 448 of file cbs_h2645.c.

◆ WRITE

#define WRITE

Definition at line 388 of file cbs_h2645.c.

◆ READWRITE [2/2]

#define READWRITE   write

Definition at line 389 of file cbs_h2645.c.

◆ RWContext [2/2]

#define RWContext   PutBitContext

Definition at line 390 of file cbs_h2645.c.

◆ xu [2/2]

#define xu (   width,
  name,
  var,
  range_min,
  range_max,
  subs,
  ... 
)
Value:
do { \
uint32_t value = var; \
SUBSCRIPTS(subs, __VA_ARGS__), \
value, range_min, range_max)); \
} while (0)
int ff_cbs_write_unsigned(CodedBitstreamContext *ctx, PutBitContext *pbc, int width, const char *name, const int *subscripts, uint32_t value, uint32_t range_min, uint32_t range_max)
Definition: cbs.c:546

Definition at line 392 of file cbs_h2645.c.

◆ xue [2/2]

#define xue (   name,
  var,
  range_min,
  range_max,
  subs,
  ... 
)
Value:
do { \
uint32_t value = var; \
CHECK(cbs_write_ue_golomb(ctx, rw, #name, \
SUBSCRIPTS(subs, __VA_ARGS__), \
value, range_min, range_max)); \
} while (0)
static int 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:142

Definition at line 398 of file cbs_h2645.c.

◆ xi [2/2]

#define xi (   width,
  name,
  var,
  range_min,
  range_max,
  subs,
  ... 
)
Value:
do { \
int32_t value = var; \
SUBSCRIPTS(subs, __VA_ARGS__), \
value, range_min, range_max)); \
} while (0)
int ff_cbs_write_signed(CodedBitstreamContext *ctx, PutBitContext *pbc, int width, const char *name, const int *subscripts, int32_t value, int32_t range_min, int32_t range_max)
Definition: cbs.c:625

Definition at line 404 of file cbs_h2645.c.

◆ xse [2/2]

#define xse (   name,
  var,
  range_min,
  range_max,
  subs,
  ... 
)
Value:
do { \
int32_t value = var; \
CHECK(cbs_write_se_golomb(ctx, rw, #name, \
SUBSCRIPTS(subs, __VA_ARGS__), \
value, range_min, range_max)); \
} while (0)
static int 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:185

Definition at line 410 of file cbs_h2645.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)
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
Definition: error.h:59
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
Definition: log.h:194

Definition at line 417 of file cbs_h2645.c.

◆ more_rbsp_data [2/2]

#define more_rbsp_data (   var)    (var)

Definition at line 427 of file cbs_h2645.c.

◆ bit_position [2/2]

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

Definition at line 429 of file cbs_h2645.c.

◆ byte_alignment [2/2]

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

Definition at line 430 of file cbs_h2645.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 432 of file cbs_h2645.c.

◆ FUNC [4/6]

#define FUNC (   name)    FUNC_SEI(name)

Definition at line 448 of file cbs_h2645.c.

◆ FUNC [5/6]

#define FUNC (   name)    FUNC_H264(name)

Definition at line 448 of file cbs_h2645.c.

◆ FUNC [6/6]

#define FUNC (   name)    FUNC_H265(name)

Definition at line 448 of file cbs_h2645.c.

◆ cbs_h2645_replace_ps

#define cbs_h2645_replace_ps (   h26n,
  ps_name,
  ps_var,
  id_element 
)
Value:
static int cbs_h26 ## h26n ## _replace_ ## ps_var(CodedBitstreamContext *ctx, \
{ \
CodedBitstreamH26 ## h26n ## Context *priv = ctx->priv_data; \
H26 ## h26n ## Raw ## ps_name *ps_var = unit->content; \
unsigned int id = ps_var->id_element; \
int err; \
if (id >= FF_ARRAY_ELEMS(priv->ps_var)) { \
av_log(ctx->log_ctx, AV_LOG_ERROR, "Invalid " #ps_name \
" id : %d.\n", id); \
} \
if (err < 0) \
return err; \
if (priv->ps_var[id] == priv->active_ ## ps_var) \
priv->active_ ## ps_var = NULL ; \
av_buffer_unref(&priv->ps_var ## _ref[id]); \
av_assert0(unit->content_ref); \
priv->ps_var ## _ref[id] = av_buffer_ref(unit->content_ref); \
if (!priv->ps_var ## _ref[id]) \
return AVERROR(ENOMEM); \
priv->ps_var[id] = (H26 ## h26n ## Raw ## ps_name *)priv->ps_var ## _ref[id]->data; \
return 0; \
}
int ff_cbs_make_unit_refcounted(CodedBitstreamContext *ctx, CodedBitstreamUnit *unit)
Make the content of a unit refcounted.
Definition: cbs.c:963
#define NULL
Definition: coverity.c:32
enum AVCodecID id
AVBufferRef * av_buffer_ref(AVBufferRef *buf)
Create a new reference to an AVBuffer.
Definition: buffer.c:93
#define FF_ARRAY_ELEMS(a)
void * priv_data
Format private data.
Definition: avformat.h:1260
Context structure for coded bitstream operations.
Definition: cbs.h:170
Coded bitstream unit structure.
Definition: cbs.h:66
Definition: async.c:56

Definition at line 664 of file cbs_h2645.c.

Function Documentation

◆ cbs_read_ue_golomb()

static int 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 
)
static

Definition at line 34 of file cbs_h2645.c.

◆ cbs_read_se_golomb()

static int 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 
)
static

Definition at line 86 of file cbs_h2645.c.

◆ cbs_write_ue_golomb()

static int 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 
)
static

Definition at line 142 of file cbs_h2645.c.

◆ cbs_write_se_golomb()

static int 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 
)
static

Definition at line 185 of file cbs_h2645.c.

◆ cbs_h265_payload_extension_present()

static int cbs_h265_payload_extension_present ( GetBitContext gbc,
uint32_t  payload_size,
int  cur_pos 
)
static

Definition at line 238 of file cbs_h2645.c.

Referenced by sei_buffering_period().

◆ cbs_h2645_read_more_rbsp_data()

static int cbs_h2645_read_more_rbsp_data ( GetBitContext gbc)
static

◆ cbs_h2645_fragment_add_nals()

static int cbs_h2645_fragment_add_nals ( CodedBitstreamContext ctx,
CodedBitstreamFragment frag,
const H2645Packet packet 
)
static

Definition at line 471 of file cbs_h2645.c.

Referenced by cbs_h2645_split_fragment().

◆ cbs_h2645_split_fragment()

static int cbs_h2645_split_fragment ( CodedBitstreamContext ctx,
CodedBitstreamFragment frag,
int  header 
)
static

Definition at line 505 of file cbs_h2645.c.

◆ cbs_h2645_replace_ps()

cbs_h2645_replace_ps ( cbs_h2645_replace_ps(  4,
cbs_h2645_replace_ps(  SPS,
cbs_h2645_replace_ps(  sps,
seq_parameter_set_id   
)

Definition at line 691 of file cbs_h2645.c.

◆ cbs_h265_read_nal_unit()

static int cbs_h265_read_nal_unit ( CodedBitstreamContext ctx,
CodedBitstreamUnit unit 
)
static

Definition at line 816 of file cbs_h2645.c.

◆ cbs_h2645_write_slice_data()

static int cbs_h2645_write_slice_data ( CodedBitstreamContext ctx,
PutBitContext pbc,
const uint8_t data,
size_t  data_size,
int  data_bit_start 
)
static

Definition at line 937 of file cbs_h2645.c.

Referenced by cbs_h264_write_nal_unit(), and cbs_h265_write_nal_unit().

◆ cbs_h264_write_nal_unit()

static int cbs_h264_write_nal_unit ( CodedBitstreamContext ctx,
CodedBitstreamUnit unit,
PutBitContext pbc 
)
static

Definition at line 995 of file cbs_h2645.c.

◆ cbs_h265_write_nal_unit()

static int cbs_h265_write_nal_unit ( CodedBitstreamContext ctx,
CodedBitstreamUnit unit,
PutBitContext pbc 
)
static

Definition at line 1112 of file cbs_h2645.c.

◆ cbs_h2645_unit_requires_zero_byte()

static int cbs_h2645_unit_requires_zero_byte ( enum AVCodecID  codec_id,
CodedBitstreamUnitType  type,
int  nal_unit_index 
)
static

Definition at line 1224 of file cbs_h2645.c.

Referenced by cbs_h2645_assemble_fragment().

◆ cbs_h2645_assemble_fragment()

static int cbs_h2645_assemble_fragment ( CodedBitstreamContext ctx,
CodedBitstreamFragment frag 
)
static

Definition at line 1240 of file cbs_h2645.c.

◆ cbs_h264_flush()

static void cbs_h264_flush ( CodedBitstreamContext ctx)
static

Definition at line 1320 of file cbs_h2645.c.

◆ cbs_h264_close()

static void cbs_h264_close ( CodedBitstreamContext ctx)
static

Definition at line 1338 of file cbs_h2645.c.

◆ cbs_h265_flush()

static void cbs_h265_flush ( CodedBitstreamContext ctx)
static

Definition at line 1351 of file cbs_h2645.c.

◆ cbs_h265_close()

static void cbs_h265_close ( CodedBitstreamContext ctx)
static

Definition at line 1373 of file cbs_h2645.c.

◆ cbs_h264_free_sei()

static void cbs_h264_free_sei ( void opaque,
uint8_t content 
)
static

Definition at line 1388 of file cbs_h2645.c.

◆ cbs_h265_free_sei()

static void cbs_h265_free_sei ( void opaque,
uint8_t content 
)
static

Definition at line 1424 of file cbs_h2645.c.

◆ 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 1640 of file cbs_h2645.c.

Referenced by ff_cbs_sei_add_message(), and message().

Variable Documentation

◆ cbs_h264_unit_types

const CodedBitstreamUnitTypeDescriptor cbs_h264_unit_types[]
static
Initial value:
= {
{
.nb_unit_types = 3,
.unit_types = {
},
.content_size = sizeof(H264RawSlice),
.nb_ref_offsets = 1,
.ref_offsets = { 0x42 },
},
}
static void cbs_h264_free_sei(void *opaque, uint8_t *content)
Definition: cbs_h2645.c:1388
#define CBS_UNIT_TYPE_END_OF_LIST
Definition: cbs_internal.h:201
#define CBS_UNIT_TYPE_INTERNAL_REF(type, structure, ref_field)
Definition: cbs_internal.h:186
@ CBS_CONTENT_TYPE_INTERNAL_REFS
Definition: cbs_internal.h:34
#define CBS_UNIT_TYPE_POD(type, structure)
Definition: cbs_internal.h:180
#define CBS_UNIT_TYPE_COMPLEX(type, structure, free_func)
Definition: cbs_internal.h:194
@ H264_NAL_END_STREAM
Definition: h264.h:45
@ H264_NAL_END_SEQUENCE
Definition: h264.h:44
@ H264_NAL_AUXILIARY_SLICE
Definition: h264.h:53
@ H264_NAL_PPS
Definition: h264.h:42
@ H264_NAL_SPS
Definition: h264.h:41
@ H264_NAL_SLICE
Definition: h264.h:35
@ H264_NAL_FILLER_DATA
Definition: h264.h:46
@ H264_NAL_SPS_EXT
Definition: h264.h:47
@ H264_NAL_SEI
Definition: h264.h:40
@ H264_NAL_AUD
Definition: h264.h:43
@ H264_NAL_IDR_SLICE
Definition: h264.h:39

Definition at line 1395 of file cbs_h2645.c.

◆ cbs_h265_unit_types

const CodedBitstreamUnitTypeDescriptor cbs_h265_unit_types[]
static

Definition at line 1431 of file cbs_h2645.c.

◆ ff_cbs_type_h264

const CodedBitstreamType ff_cbs_type_h264
Initial value:
= {
.codec_id = AV_CODEC_ID_H264,
.priv_data_size = sizeof(CodedBitstreamH264Context),
.unit_types = cbs_h264_unit_types,
.split_fragment = &cbs_h2645_split_fragment,
.read_unit = &cbs_h264_read_nal_unit,
.write_unit = &cbs_h264_write_nal_unit,
.assemble_fragment = &cbs_h2645_assemble_fragment,
.close = &cbs_h264_close,
}
static void flush(AVCodecContext *avctx)
static void cbs_h264_close(CodedBitstreamContext *ctx)
Definition: cbs_h2645.c:1338
static void cbs_h264_flush(CodedBitstreamContext *ctx)
Definition: cbs_h2645.c:1320
static int cbs_h2645_assemble_fragment(CodedBitstreamContext *ctx, CodedBitstreamFragment *frag)
Definition: cbs_h2645.c:1240
static int cbs_h264_write_nal_unit(CodedBitstreamContext *ctx, CodedBitstreamUnit *unit, PutBitContext *pbc)
Definition: cbs_h2645.c:995
static int cbs_h2645_split_fragment(CodedBitstreamContext *ctx, CodedBitstreamFragment *frag, int header)
Definition: cbs_h2645.c:505
static const CodedBitstreamUnitTypeDescriptor cbs_h264_unit_types[]
Definition: cbs_h2645.c:1395
@ AV_CODEC_ID_H264
Definition: codec_id.h:76

Definition at line 1476 of file cbs_h2645.c.

◆ ff_cbs_type_h265

const CodedBitstreamType ff_cbs_type_h265
Initial value:
= {
.codec_id = AV_CODEC_ID_HEVC,
.priv_data_size = sizeof(CodedBitstreamH265Context),
.unit_types = cbs_h265_unit_types,
.split_fragment = &cbs_h2645_split_fragment,
.read_unit = &cbs_h265_read_nal_unit,
.write_unit = &cbs_h265_write_nal_unit,
.assemble_fragment = &cbs_h2645_assemble_fragment,
.close = &cbs_h265_close,
}
static int cbs_h265_read_nal_unit(CodedBitstreamContext *ctx, CodedBitstreamUnit *unit)
Definition: cbs_h2645.c:816
static void cbs_h265_flush(CodedBitstreamContext *ctx)
Definition: cbs_h2645.c:1351
static const CodedBitstreamUnitTypeDescriptor cbs_h265_unit_types[]
Definition: cbs_h2645.c:1431
static void cbs_h265_close(CodedBitstreamContext *ctx)
Definition: cbs_h2645.c:1373
static int cbs_h265_write_nal_unit(CodedBitstreamContext *ctx, CodedBitstreamUnit *unit, PutBitContext *pbc)
Definition: cbs_h2645.c:1112
@ AV_CODEC_ID_HEVC
Definition: codec_id.h:223

Definition at line 1492 of file cbs_h2645.c.

◆ cbs_sei_common_types

const SEIMessageTypeDescriptor cbs_sei_common_types[]
static

Definition at line 1508 of file cbs_h2645.c.

Referenced by ff_cbs_sei_find_type().

◆ cbs_sei_h264_types

const SEIMessageTypeDescriptor cbs_sei_h264_types[]
static

Definition at line 1548 of file cbs_h2645.c.

Referenced by ff_cbs_sei_find_type().

◆ cbs_sei_h265_types

const SEIMessageTypeDescriptor cbs_sei_h265_types[]
static

Definition at line 1582 of file cbs_h2645.c.

Referenced by ff_cbs_sei_find_type().