FFmpeg
Data Structures | Macros | Enumerations | Functions | Variables
cbs_internal.h File Reference
#include <stdint.h>
#include "libavutil/buffer.h"
#include "libavutil/log.h"
#include "cbs.h"
#include "codec_id.h"
#include "get_bits.h"
#include "put_bits.h"

Go to the source code of this file.

Data Structures

struct  CodedBitstreamUnitTypeDescriptor
 
struct  CodedBitstreamType
 

Macros

#define MAX_UINT_BITS(length)   ((UINT64_C(1) << (length)) - 1)
 
#define MAX_INT_BITS(length)   ((INT64_C(1) << ((length) - 1)) - 1)
 
#define MIN_INT_BITS(length)   (-(INT64_C(1) << ((length) - 1)))
 
#define CBS_UNIT_TYPE_POD(type, structure)
 
#define CBS_UNIT_TYPE_INTERNAL_REF(type, structure, ref_field)
 
#define CBS_UNIT_TYPE_COMPLEX(type, structure, free_func)
 
#define CBS_UNIT_TYPE_END_OF_LIST   { .nb_unit_types = 0 }
 

Enumerations

enum  CBSContentType { CBS_CONTENT_TYPE_POD, CBS_CONTENT_TYPE_INTERNAL_REFS, CBS_CONTENT_TYPE_COMPLEX }
 
enum  { CBS_MAX_UNIT_TYPES = 3, CBS_MAX_REF_OFFSETS = 2, CBS_UNIT_TYPE_RANGE = -1 }
 

Functions

void ff_cbs_trace_header (CodedBitstreamContext *ctx, const char *name)
 
void ff_cbs_trace_syntax_element (CodedBitstreamContext *ctx, int position, const char *name, const int *subscripts, const char *bitstring, int64_t value)
 
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)
 
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)
 
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)
 
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)
 

Variables

const CodedBitstreamType ff_cbs_type_av1
 
const CodedBitstreamType ff_cbs_type_h264
 
const CodedBitstreamType ff_cbs_type_h265
 
const CodedBitstreamType ff_cbs_type_jpeg
 
const CodedBitstreamType ff_cbs_type_mpeg2
 
const CodedBitstreamType ff_cbs_type_vp9
 

Macro Definition Documentation

◆ MAX_UINT_BITS

#define MAX_UINT_BITS (   length)    ((UINT64_C(1) << (length)) - 1)

Definition at line 174 of file cbs_internal.h.

◆ MAX_INT_BITS

#define MAX_INT_BITS (   length)    ((INT64_C(1) << ((length) - 1)) - 1)

Definition at line 178 of file cbs_internal.h.

◆ MIN_INT_BITS

#define MIN_INT_BITS (   length)    (-(INT64_C(1) << ((length) - 1)))

Definition at line 182 of file cbs_internal.h.

◆ CBS_UNIT_TYPE_POD

#define CBS_UNIT_TYPE_POD (   type,
  structure 
)
Value:
{ \
.nb_unit_types = 1, \
.unit_types = { type }, \
.content_type = CBS_CONTENT_TYPE_POD, \
.content_size = sizeof(structure), \
}

Definition at line 185 of file cbs_internal.h.

◆ CBS_UNIT_TYPE_INTERNAL_REF

#define CBS_UNIT_TYPE_INTERNAL_REF (   type,
  structure,
  ref_field 
)
Value:
{ \
.nb_unit_types = 1, \
.unit_types = { type }, \
.content_type = CBS_CONTENT_TYPE_INTERNAL_REFS, \
.content_size = sizeof(structure), \
.nb_ref_offsets = 1, \
.ref_offsets = { offsetof(structure, ref_field) }, \
}

Definition at line 191 of file cbs_internal.h.

◆ CBS_UNIT_TYPE_COMPLEX

#define CBS_UNIT_TYPE_COMPLEX (   type,
  structure,
  free_func 
)
Value:
{ \
.nb_unit_types = 1, \
.unit_types = { type }, \
.content_type = CBS_CONTENT_TYPE_COMPLEX, \
.content_size = sizeof(structure), \
.content_free = free_func, \
}

Definition at line 199 of file cbs_internal.h.

◆ CBS_UNIT_TYPE_END_OF_LIST

#define CBS_UNIT_TYPE_END_OF_LIST   { .nb_unit_types = 0 }

Definition at line 206 of file cbs_internal.h.

Enumeration Type Documentation

◆ CBSContentType

Enumerator
CBS_CONTENT_TYPE_POD 
CBS_CONTENT_TYPE_INTERNAL_REFS 
CBS_CONTENT_TYPE_COMPLEX 

Definition at line 33 of file cbs_internal.h.

◆ anonymous enum

anonymous enum
Enumerator
CBS_MAX_UNIT_TYPES 
CBS_MAX_REF_OFFSETS 
CBS_UNIT_TYPE_RANGE 

Definition at line 45 of file cbs_internal.h.

Function Documentation

◆ ff_cbs_trace_header()

void ff_cbs_trace_header ( CodedBitstreamContext ctx,
const char *  name 
)

Definition at line 480 of file cbs.c.

◆ ff_cbs_trace_syntax_element()

void ff_cbs_trace_syntax_element ( CodedBitstreamContext ctx,
int  position,
const char *  name,
const int subscripts,
const char *  bitstring,
int64_t  value 
)

◆ ff_cbs_read_unsigned()

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 at line 539 of file cbs.c.

Referenced by cbs_av1_read_leb128(), and cbs_av1_read_subexp().

◆ ff_cbs_write_unsigned()

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 at line 582 of file cbs.c.

Referenced by cbs_av1_write_leb128(), and cbs_av1_write_subexp().

◆ ff_cbs_read_signed()

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 at line 618 of file cbs.c.

◆ ff_cbs_write_signed()

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 at line 661 of file cbs.c.

Variable Documentation

◆ ff_cbs_type_av1

const CodedBitstreamType ff_cbs_type_av1

Definition at line 1321 of file cbs_av1.c.

◆ ff_cbs_type_h264

const CodedBitstreamType ff_cbs_type_h264

Definition at line 1476 of file cbs_h2645.c.

◆ ff_cbs_type_h265

const CodedBitstreamType ff_cbs_type_h265

Definition at line 1492 of file cbs_h2645.c.

◆ ff_cbs_type_jpeg

const CodedBitstreamType ff_cbs_type_jpeg

Definition at line 461 of file cbs_jpeg.c.

◆ ff_cbs_type_mpeg2

const CodedBitstreamType ff_cbs_type_mpeg2

Definition at line 421 of file cbs_mpeg2.c.

◆ ff_cbs_type_vp9

const CodedBitstreamType ff_cbs_type_vp9

Definition at line 649 of file cbs_vp9.c.

CBS_CONTENT_TYPE_POD
@ CBS_CONTENT_TYPE_POD
Definition: cbs_internal.h:35
CBS_CONTENT_TYPE_INTERNAL_REFS
@ CBS_CONTENT_TYPE_INTERNAL_REFS
Definition: cbs_internal.h:39
type
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 type
Definition: writing_filters.txt:86
CBS_CONTENT_TYPE_COMPLEX
@ CBS_CONTENT_TYPE_COMPLEX
Definition: cbs_internal.h:42