FFmpeg  4.0
Macros | Functions
h2645_parse.c File Reference
#include <string.h>
#include "config.h"
#include "libavutil/intmath.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/mem.h"
#include "bytestream.h"
#include "hevc.h"
#include "h2645_parse.h"

Go to the source code of this file.

Macros

#define STARTCODE_TEST
 

Functions

int ff_h2645_extract_rbsp (const uint8_t *src, int length, H2645RBSP *rbsp, H2645NAL *nal, int small_padding)
 Extract the raw (unescaped) bitstream. More...
 
static const char * nal_unit_name (int nal_type)
 
static int get_bit_length (H2645NAL *nal, int skip_trailing_zeros)
 
static int hevc_parse_nal_header (H2645NAL *nal, void *logctx)
 
static int h264_parse_nal_header (H2645NAL *nal, void *logctx)
 
static int find_next_start_code (const uint8_t *buf, const uint8_t *next_avc)
 
int ff_h2645_packet_split (H2645Packet *pkt, const uint8_t *buf, int length, void *logctx, int is_nalff, int nal_length_size, enum AVCodecID codec_id, int small_padding)
 Split an input packet into NAL units. More...
 
void ff_h2645_packet_uninit (H2645Packet *pkt)
 Free all the allocated memory in the packet. More...
 

Macro Definition Documentation

◆ STARTCODE_TEST

#define STARTCODE_TEST
Value:
if (i + 2 < length && src[i + 1] == 0 && src[i + 2] <= 3) { \
if (src[i + 2] != 3 && src[i + 2] != 0) { \
/* startcode, so we must be past the end */ \
length = i; \
} \
break; \
}
#define src
Definition: vp8dsp.c:254
const char int length
Definition: avisynth_c.h:768

Referenced by ff_h2645_extract_rbsp().

Function Documentation

◆ ff_h2645_extract_rbsp()

int ff_h2645_extract_rbsp ( const uint8_t src,
int  length,
H2645RBSP rbsp,
H2645NAL nal,
int  small_padding 
)

Extract the raw (unescaped) bitstream.

Definition at line 33 of file h2645_parse.c.

Referenced by ff_h2645_packet_split(), generate_fake_vps(), and parse_nal_units().

◆ nal_unit_name()

static const char* nal_unit_name ( int  nal_type)
static

Definition at line 148 of file h2645_parse.c.

Referenced by hevc_parse_nal_header().

◆ get_bit_length()

static int get_bit_length ( H2645NAL nal,
int  skip_trailing_zeros 
)
static

Definition at line 180 of file h2645_parse.c.

Referenced by ff_h2645_packet_split().

◆ hevc_parse_nal_header()

static int hevc_parse_nal_header ( H2645NAL nal,
void logctx 
)
static
Returns
AVERROR_INVALIDDATA if the packet is not a valid NAL unit, 0 if the unit should be skipped, 1 otherwise

Definition at line 209 of file h2645_parse.c.

Referenced by ff_h2645_packet_split().

◆ h264_parse_nal_header()

static int h264_parse_nal_header ( H2645NAL nal,
void logctx 
)
static

Definition at line 231 of file h2645_parse.c.

Referenced by ff_h2645_packet_split().

◆ find_next_start_code()

static int find_next_start_code ( const uint8_t buf,
const uint8_t next_avc 
)
static

Definition at line 248 of file h2645_parse.c.

Referenced by ff_h2645_packet_split().

◆ ff_h2645_packet_split()

int ff_h2645_packet_split ( H2645Packet pkt,
const uint8_t buf,
int  length,
void logctx,
int  is_nalff,
int  nal_length_size,
enum AVCodecID  codec_id,
int  small_padding 
)

Split an input packet into NAL units.

Definition at line 263 of file h2645_parse.c.

Referenced by cbs_h2645_split_fragment(), decode_extradata_ps(), decode_nal_units(), extract_extradata_h2645(), hevc_decode_nal_units(), and parse_nal_units().

◆ ff_h2645_packet_uninit()

void ff_h2645_packet_uninit ( H2645Packet pkt)