21 #ifndef AVCODEC_AV1_PARSE_H
22 #define AVCODEC_AV1_PARSE_H
31 #define MAX_OBU_HEADER_SIZE (2 + 8)
94 for (
i = 0;
i < 8;
i++) {
96 ret |= (
int64_t)(
byte & 0x7f) << (
i * 7);
105 int *temporal_id,
int *spatial_id)
108 int ret, extension_flag, has_size_flag;
123 if (extension_flag) {
128 *temporal_id = *spatial_id = 0;
131 *obu_size = has_size_flag ?
leb128(&gb)
132 : buf_size - 1 - extension_flag;
139 size = *obu_size + *start_pos;
155 if (
size > INT_MAX / 8)
161 while (
size > 0 && buf[
size - 1] == 0)
169 if (
size > INT_MAX / 8)
void ff_av1_packet_uninit(AV1Packet *pkt)
Free all the allocated memory in the packet.
static int64_t leb128(GetBitContext *gb)
static int parse_obu_header(const uint8_t *buf, int buf_size, int64_t *obu_size, int *start_pos, int *type, int *temporal_id, int *spatial_id)
int ff_av1_packet_split(AV1Packet *pkt, const uint8_t *buf, int length, void *logctx)
Split an input packet into OBUs.
#define MAX_OBU_HEADER_SIZE
int ff_av1_extract_obu(AV1OBU *obu, const uint8_t *buf, int length, void *logctx)
Extract an OBU from a raw bitstream.
static int get_obu_bit_length(const uint8_t *buf, int size, int type)
Libavcodec external API header.
bitstream reader API header.
static int get_bits_left(GetBitContext *gb)
static unsigned int get_bits1(GetBitContext *s)
static void skip_bits(GetBitContext *s, int n)
static int init_get_bits8(GetBitContext *s, const uint8_t *buffer, int byte_size)
Initialize GetBitContext.
static int get_bits_count(const GetBitContext *s)
static void skip_bits1(GetBitContext *s)
static unsigned int get_bits(GetBitContext *s, int n)
Read 1-25 bits.
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
int size_bits
Size, in bits, of just the data, excluding the trailing_one_bit and any trailing padding.
GetBitContext gb
GetBitContext initialized to the start of the payload.
int raw_size
Size of entire OBU, including header.
An input packet split into OBUs.
unsigned obus_allocated_size