FFmpeg
Macros | Functions | Variables
h264dec.c File Reference
#include "config_components.h"
#include "libavutil/avassert.h"
#include "libavutil/emms.h"
#include "libavutil/imgutils.h"
#include "libavutil/mem.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, const 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 61 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 67 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 141 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 186 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 265 of file h264dec.c.

Referenced by h264_slice_header_init().

◆ h264_init_pic()

static int h264_init_pic ( H264Picture pic)
static

Definition at line 277 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 290 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 345 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 352 of file h264dec.c.

◆ h264_decode_init()

static av_cold int h264_decode_init ( AVCodecContext avctx)
static

Definition at line 385 of file h264dec.c.

◆ idr()

static void idr ( H264Context h)
static

instantaneous decoder refresh.

Definition at line 445 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 458 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 483 of file h264dec.c.

◆ get_last_needed_nal()

static int get_last_needed_nal ( H264Context h)
static

Definition at line 508 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 562 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 590 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 831 of file h264dec.c.

Referenced by h264_decode_frame().

◆ h264_export_enc_params()

static int h264_export_enc_params ( AVFrame f,
const H264Picture p 
)
static

Definition at line 841 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 914 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 938 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 993 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 1034 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 59 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 383 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 },
{ "skip_gray", "Do not return gray gap frames", OFFSET(skip_gray), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, VD },
{ "noref_gray", "Avoid using gray gap frames as references", OFFSET(noref_gray), AV_OPT_TYPE_BOOL, {.i64 = 1}, 0, 1, VD },
{ NULL },
}

Definition at line 1107 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 1117 of file h264dec.c.

◆ ff_h264_decoder

const FFCodec ff_h264_decoder

Definition at line 1124 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:1107
VD
#define VD
Definition: av1dec.c:1560
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
Underlying C type is int.
Definition: opt.h:259
AV_OPT_TYPE_BOOL
@ AV_OPT_TYPE_BOOL
Underlying C type is int.
Definition: opt.h:327