FFmpeg
Macros | Functions | Variables
h264dec.c File Reference
#include "config_components.h"
#include "libavutil/avassert.h"
#include "libavutil/imgutils.h"
#include "libavutil/opt.h"
#include "libavutil/thread.h"
#include "libavutil/video_enc_params.h"

Go to the source code of this file.

Macros

#define UNCHECKED_BITSTREAM_READER   1
 

Functions

int avpriv_h264_has_num_reorder_frames (AVCodecContext *avctx)
 
static void h264_er_decode_mb (void *opaque, int ref, int mv_dir, int mv_type, int(*mv)[2][4][2], int mb_x, int mb_y, int mb_intra, int mb_skipped)
 
void ff_h264_draw_horiz_band (const H264Context *h, H264SliceContext *sl, int y, int height)
 
void ff_h264_free_tables (H264Context *h)
 
int ff_h264_alloc_tables (H264Context *h)
 Allocate tables. More...
 
void ff_h264_slice_context_init (H264Context *h, H264SliceContext *sl)
 Init slice context. More...
 
static int h264_init_pic (H264Picture *pic)
 
static int h264_init_context (AVCodecContext *avctx, H264Context *h)
 
static void h264_free_pic (H264Context *h, H264Picture *pic)
 
static av_cold int h264_decode_end (AVCodecContext *avctx)
 
static av_cold int h264_decode_init (AVCodecContext *avctx)
 
static void idr (H264Context *h)
 instantaneous decoder refresh. More...
 
void ff_h264_flush_change (H264Context *h)
 
static void h264_decode_flush (AVCodecContext *avctx)
 
static int get_last_needed_nal (H264Context *h)
 
static void debug_green_metadata (const H264SEIGreenMetaData *gm, void *logctx)
 
static int decode_nal_units (H264Context *h, const uint8_t *buf, int buf_size)
 
static int get_consumed_bytes (int pos, int buf_size)
 Return the number of bytes consumed for building the current frame. More...
 
static int h264_export_enc_params (AVFrame *f, H264Picture *p)
 
static int output_frame (H264Context *h, AVFrame *dst, H264Picture *srcp)
 
static int is_avcc_extradata (const uint8_t *buf, int buf_size)
 
static int finalize_frame (H264Context *h, AVFrame *dst, H264Picture *out, int *got_frame)
 
static int send_next_delayed_frame (H264Context *h, AVFrame *dst_frame, int *got_frame, int buf_index)
 
static int h264_decode_frame (AVCodecContext *avctx, AVFrame *pict, int *got_frame, AVPacket *avpkt)
 

Variables

const uint16_t ff_h264_mb_sizes [4] = { 256, 384, 512, 768 }
 
static AVOnce h264_vlc_init = AV_ONCE_INIT
 
static const AVOption h264_options []
 
static const AVClass h264_class
 
const FFCodec ff_h264_decoder
 

Detailed Description

H.264 / AVC / MPEG-4 part10 codec.

Author
Michael Niedermayer micha.nosp@m.elni.nosp@m.@gmx..nosp@m.at

Definition in file h264dec.c.

Macro Definition Documentation

◆ UNCHECKED_BITSTREAM_READER

#define UNCHECKED_BITSTREAM_READER   1

Definition at line 28 of file h264dec.c.

Function Documentation

◆ avpriv_h264_has_num_reorder_frames()

int avpriv_h264_has_num_reorder_frames ( AVCodecContext avctx)

Definition at line 57 of file h264dec.c.

Referenced by has_decode_delay_been_guessed().

◆ h264_er_decode_mb()

static void h264_er_decode_mb ( void *  opaque,
int  ref,
int  mv_dir,
int  mv_type,
int(*)  mv[2][4][2],
int  mb_x,
int  mb_y,
int  mb_intra,
int  mb_skipped 
)
static

Definition at line 63 of file h264dec.c.

Referenced by ff_h264_alloc_tables().

◆ ff_h264_draw_horiz_band()

void ff_h264_draw_horiz_band ( const H264Context h,
H264SliceContext sl,
int  y,
int  height 
)

◆ ff_h264_free_tables()

void ff_h264_free_tables ( H264Context h)

Definition at line 134 of file h264dec.c.

Referenced by h264_decode_end(), h264_decode_flush(), and h264_slice_header_init().

◆ ff_h264_alloc_tables()

int ff_h264_alloc_tables ( H264Context h)

Allocate tables.

needs width/height

Definition at line 179 of file h264dec.c.

Referenced by h264_slice_header_init().

◆ ff_h264_slice_context_init()

void ff_h264_slice_context_init ( H264Context h,
H264SliceContext sl 
)

Init slice context.

Definition at line 258 of file h264dec.c.

Referenced by h264_slice_header_init().

◆ h264_init_pic()

static int h264_init_pic ( H264Picture pic)
static

Definition at line 270 of file h264dec.c.

Referenced by h264_init_context().

◆ h264_init_context()

static int h264_init_context ( AVCodecContext avctx,
H264Context h 
)
static

Definition at line 283 of file h264dec.c.

Referenced by h264_decode_init().

◆ h264_free_pic()

static void h264_free_pic ( H264Context h,
H264Picture pic 
)
static

Definition at line 332 of file h264dec.c.

Referenced by h264_decode_end().

◆ h264_decode_end()

static av_cold int h264_decode_end ( AVCodecContext avctx)
static

Definition at line 339 of file h264dec.c.

◆ h264_decode_init()

static av_cold int h264_decode_init ( AVCodecContext avctx)
static

Definition at line 370 of file h264dec.c.

◆ idr()

static void idr ( H264Context h)
static

instantaneous decoder refresh.

Definition at line 432 of file h264dec.c.

Referenced by decode_nal_units(), ff_h264_flush_change(), and h264_probe().

◆ ff_h264_flush_change()

void ff_h264_flush_change ( H264Context h)

Definition at line 445 of file h264dec.c.

Referenced by h264_decode_flush(), h264_decode_init(), and h264_init_ps().

◆ h264_decode_flush()

static void h264_decode_flush ( AVCodecContext avctx)
static

Definition at line 470 of file h264dec.c.

◆ get_last_needed_nal()

static int get_last_needed_nal ( H264Context h)
static

Definition at line 491 of file h264dec.c.

Referenced by decode_nal_units().

◆ debug_green_metadata()

static void debug_green_metadata ( const H264SEIGreenMetaData gm,
void *  logctx 
)
static

Definition at line 545 of file h264dec.c.

Referenced by decode_nal_units().

◆ decode_nal_units()

static int decode_nal_units ( H264Context h,
const uint8_t *  buf,
int  buf_size 
)
static

< number of NALs that need decoding before the next frame thread starts

Definition at line 573 of file h264dec.c.

Referenced by h264_decode_frame().

◆ get_consumed_bytes()

static int get_consumed_bytes ( int  pos,
int  buf_size 
)
static

Return the number of bytes consumed for building the current frame.

Definition at line 800 of file h264dec.c.

Referenced by h264_decode_frame().

◆ h264_export_enc_params()

static int h264_export_enc_params ( AVFrame f,
H264Picture p 
)
static

Definition at line 810 of file h264dec.c.

Referenced by output_frame().

◆ output_frame()

static int output_frame ( H264Context h,
AVFrame dst,
H264Picture srcp 
)
static

◆ is_avcc_extradata()

static int is_avcc_extradata ( const uint8_t *  buf,
int  buf_size 
)
static

Definition at line 875 of file h264dec.c.

Referenced by h264_decode_frame().

◆ finalize_frame()

static int finalize_frame ( H264Context h,
AVFrame dst,
H264Picture out,
int got_frame 
)
static

Definition at line 899 of file h264dec.c.

Referenced by h264_decode_frame(), and send_next_delayed_frame().

◆ send_next_delayed_frame()

static int send_next_delayed_frame ( H264Context h,
AVFrame dst_frame,
int got_frame,
int  buf_index 
)
static

Definition at line 948 of file h264dec.c.

Referenced by h264_decode_frame().

◆ h264_decode_frame()

static int h264_decode_frame ( AVCodecContext avctx,
AVFrame pict,
int got_frame,
AVPacket avpkt 
)
static

Definition at line 981 of file h264dec.c.

Variable Documentation

◆ ff_h264_mb_sizes

const uint16_t ff_h264_mb_sizes[4] = { 256, 384, 512, 768 }

Definition at line 55 of file h264dec.c.

Referenced by ff_h264_decode_mb_cabac(), ff_h264_decode_mb_cavlc(), and hl_decode_mb().

◆ h264_vlc_init

AVOnce h264_vlc_init = AV_ONCE_INIT
static

Definition at line 368 of file h264dec.c.

Referenced by h264_decode_init().

◆ h264_options

const AVOption h264_options[]
static
Initial value:
= {
{ "is_avc", "is avc", OFFSET(is_avc), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, VDX },
{ "nal_length_size", "nal_length_size", OFFSET(nal_length_size), AV_OPT_TYPE_INT, {.i64 = 0}, 0, 4, VDX },
{ "enable_er", "Enable error resilience on damaged frames (unsafe)", OFFSET(enable_er), AV_OPT_TYPE_BOOL, { .i64 = -1 }, -1, 1, VD },
{ "x264_build", "Assume this x264 version if no x264 version found in any SEI", OFFSET(x264_build), AV_OPT_TYPE_INT, {.i64 = -1}, -1, INT_MAX, VD },
{ NULL },
}

Definition at line 1054 of file h264dec.c.

◆ h264_class

const AVClass h264_class
static
Initial value:
= {
.class_name = "H264 Decoder",
.item_name = av_default_item_name,
.option = h264_options,
}

Definition at line 1062 of file h264dec.c.

◆ ff_h264_decoder

const FFCodec ff_h264_decoder

Definition at line 1069 of file h264dec.c.

LIBAVUTIL_VERSION_INT
#define LIBAVUTIL_VERSION_INT
Definition: version.h:85
NULL
#define NULL
Definition: coverity.c:32
av_default_item_name
const char * av_default_item_name(void *ptr)
Return the context name.
Definition: log.c:237
h264_options
static const AVOption h264_options[]
Definition: h264dec.c:1054
VD
#define VD
Definition: av1dec.c:1234
OFFSET
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 keep it simple and lowercase description are in without and describe what they for example set the foo of the bar offset is the offset of the field in your see the OFFSET() macro
AV_OPT_TYPE_INT
@ AV_OPT_TYPE_INT
Definition: opt.h:225
AV_OPT_TYPE_BOOL
@ AV_OPT_TYPE_BOOL
Definition: opt.h:244