libavcodec/h264.c File Reference

H.264 / AVC / MPEG4 part10 codec. More...

#include "libavutil/imgutils.h"
#include "internal.h"
#include "dsputil.h"
#include "avcodec.h"
#include "mpegvideo.h"
#include "h264.h"
#include "h264data.h"
#include "h264_mvpred.h"
#include "golomb.h"
#include "mathops.h"
#include "rectangle.h"
#include "thread.h"
#include "vdpau_internal.h"
#include "libavutil/avassert.h"
#include "cabac.h"
#include <assert.h>

Go to the source code of this file.

Defines

#define RS   0
#define hl_motion_fn(sh, bits)
#define IN_RANGE(a, b, size)   (((a) >= (b)) && ((a) < ((b)+(size))))
#define copy_fields(to, from, start_field, end_field)   memcpy(&to->start_field, &from->start_field, (char*)&to->end_field - (char*)&to->start_field)
#define XCHG(a, b, xchg)
#define hl_decode_mb_simple(sh, bits)
 Process a macroblock; this case avoids checks for expensive uncommon cases.
#define T(x)   (x>>2) | ((x<<2) & 0xF)
#define T(x)   (x>>3) | ((x&7)<<3)

Functions

void ff_h264_write_back_intra_pred_mode (H264Context *h)
int ff_h264_check_intra4x4_pred_mode (H264Context *h)
 checks if the top & left blocks are available if needed & changes the dc mode so it only uses the available blocks.
int ff_h264_check_intra_pred_mode (H264Context *h, int mode, int is_chroma)
 checks if the top & left blocks are available if needed & changes the dc mode so it only uses the available blocks.
const uint8_t * ff_h264_decode_nal (H264Context *h, const uint8_t *src, int *dst_length, int *consumed, int length)
 Decode a network abstraction layer unit.
static int ff_h264_decode_rbsp_trailing (H264Context *h, const uint8_t *src)
 Identify the exact end of the bitstream.
static int get_lowest_part_list_y (H264Context *h, Picture *pic, int n, int height, int y_offset, int list)
static void get_lowest_part_y (H264Context *h, int refs[2][48], int n, int height, int y_offset, int list0, int list1, int *nrefs)
static void await_references (H264Context *h)
 Wait until all reference frames are available for MC operations.
static void mc_dir_part (H264Context *h, Picture *pic, int n, int square, int chroma_height, int delta, int list, uint8_t *dest_y, uint8_t *dest_cb, uint8_t *dest_cr, int src_x_offset, int src_y_offset, qpel_mc_func *qpix_op, h264_chroma_mc_func chroma_op, int pixel_shift, int chroma444)
static void mc_part_std (H264Context *h, int n, int square, int chroma_height, int delta, uint8_t *dest_y, uint8_t *dest_cb, uint8_t *dest_cr, int x_offset, int y_offset, qpel_mc_func *qpix_put, h264_chroma_mc_func chroma_put, qpel_mc_func *qpix_avg, h264_chroma_mc_func chroma_avg, int list0, int list1, int pixel_shift, int chroma444)
static void mc_part_weighted (H264Context *h, int n, int square, int chroma_height, int delta, uint8_t *dest_y, uint8_t *dest_cb, uint8_t *dest_cr, int x_offset, int y_offset, qpel_mc_func *qpix_put, h264_chroma_mc_func chroma_put, h264_weight_func luma_weight_op, h264_weight_func chroma_weight_op, h264_biweight_func luma_weight_avg, h264_biweight_func chroma_weight_avg, int list0, int list1, int pixel_shift, int chroma444)
static void mc_part (H264Context *h, int n, int square, int chroma_height, int delta, uint8_t *dest_y, uint8_t *dest_cb, uint8_t *dest_cr, int x_offset, int y_offset, qpel_mc_func *qpix_put, h264_chroma_mc_func chroma_put, qpel_mc_func *qpix_avg, h264_chroma_mc_func chroma_avg, h264_weight_func *weight_op, h264_biweight_func *weight_avg, int list0, int list1, int pixel_shift, int chroma444)
static void prefetch_motion (H264Context *h, int list, int pixel_shift, int chroma444)
static av_always_inline void hl_motion (H264Context *h, uint8_t *dest_y, uint8_t *dest_cb, uint8_t *dest_cr, qpel_mc_func(*qpix_put)[16], h264_chroma_mc_func(*chroma_put), qpel_mc_func(*qpix_avg)[16], h264_chroma_mc_func(*chroma_avg), h264_weight_func *weight_op, h264_biweight_func *weight_avg, int pixel_shift, int chroma444)
 hl_motion_fn (0, 8)
 hl_motion_fn (1, 16)
static void free_tables (H264Context *h, int free_rbsp)
static void init_dequant8_coeff_table (H264Context *h)
static void init_dequant4_coeff_table (H264Context *h)
static void init_dequant_tables (H264Context *h)
int ff_h264_alloc_tables (H264Context *h)
 Allocate tables.
static void clone_tables (H264Context *dst, H264Context *src, int i)
 Mimic alloc_tables(), but for every context thread.
static int context_init (H264Context *h)
 Init context Allocate buffers which are not shared amongst multiple threads.
static int decode_nal_units (H264Context *h, const uint8_t *buf, int buf_size)
static av_cold void common_init (H264Context *h)
int ff_h264_decode_extradata (H264Context *h, const uint8_t *buf, int size)
av_cold int ff_h264_decode_init (AVCodecContext *avctx)
static void copy_picture_range (Picture **to, Picture **from, int count, MpegEncContext *new_base, MpegEncContext *old_base)
static void copy_parameter_set (void **to, void **from, int count, int size)
static int decode_init_thread_copy (AVCodecContext *avctx)
static int decode_update_thread_context (AVCodecContext *dst, const AVCodecContext *src)
int ff_h264_frame_start (H264Context *h)
static void decode_postinit (H264Context *h, int setup_finished)
 Run setup operations that must be run after slice header decoding.
static void backup_mb_border (H264Context *h, uint8_t *src_y, uint8_t *src_cb, uint8_t *src_cr, int linesize, int uvlinesize, int chroma444, int simple)
static void xchg_mb_border (H264Context *h, uint8_t *src_y, uint8_t *src_cb, uint8_t *src_cr, int linesize, int uvlinesize, int xchg, int chroma444, int simple, int pixel_shift)
static av_always_inline int dctcoef_get (DCTELEM *mb, int high_bit_depth, int index)
static av_always_inline void dctcoef_set (DCTELEM *mb, int high_bit_depth, int index, int value)
static av_always_inline void hl_decode_mb_predict_luma (H264Context *h, int mb_type, int is_h264, int simple, int transform_bypass, int pixel_shift, int *block_offset, int linesize, uint8_t *dest_y, int p)
static av_always_inline void hl_decode_mb_idct_luma (H264Context *h, int mb_type, int is_h264, int simple, int transform_bypass, int pixel_shift, int *block_offset, int linesize, uint8_t *dest_y, int p)
static av_always_inline void hl_decode_mb_internal (H264Context *h, int simple, int pixel_shift)
static av_always_inline void hl_decode_mb_444_internal (H264Context *h, int simple, int pixel_shift)
 hl_decode_mb_simple (0, 8)
 hl_decode_mb_simple (1, 16)
static void av_noinline hl_decode_mb_complex (H264Context *h)
 Process a macroblock; this handles edge cases, such as interlacing.
static void av_noinline hl_decode_mb_444_complex (H264Context *h)
static void av_noinline hl_decode_mb_444_simple (H264Context *h)
void ff_h264_hl_decode_mb (H264Context *h)
static int pred_weight_table (H264Context *h)
static void implicit_weight_table (H264Context *h, int field)
 Initialize implicit_weight table.
static void idr (H264Context *h)
 instantaneous decoder refresh.
static void flush_dpb (AVCodecContext *avctx)
static int init_poc (H264Context *h)
static void init_scan_tables (H264Context *h)
 initialize scan tables
static void field_end (H264Context *h, int in_setup)
static void clone_slice (H264Context *dst, H264Context *src)
 Replicate H264 "master" context to thread contexts.
int ff_h264_get_profile (SPS *sps)
 computes profile from profile_idc and constraint_set?_flags
static int decode_slice_header (H264Context *h, H264Context *h0)
 decodes a slice header.
int ff_h264_get_slice_type (const H264Context *h)
 Reconstruct bitstream slice_type.
static int fill_filter_caches (H264Context *h, int mb_type)
static void loop_filter (H264Context *h, int start_x, int end_x)
static void predict_field_decoding_flag (H264Context *h)
static void decode_finish_row (H264Context *h)
 Draw edges and report progress for the last MB row.
static int decode_slice (struct AVCodecContext *avctx, void *arg)
static void execute_decode_slices (H264Context *h, int context_count)
 Call decode_slice() for each context.
static int get_consumed_bytes (MpegEncContext *s, int pos, int buf_size)
 returns the number of bytes consumed for building the current frame
static int decode_frame (AVCodecContext *avctx, void *data, int *data_size, AVPacket *avpkt)
av_cold void ff_h264_free_context (H264Context *h)
 Free any data that may have been allocated in the H264 context like SPS, PPS etc.
av_cold int ff_h264_decode_end (AVCodecContext *avctx)

Variables

static const uint8_t rem6 [QP_MAX_NUM+1]
static const uint8_t div6 [QP_MAX_NUM+1]
static enum PixelFormat hwaccel_pixfmt_list_h264_jpeg_420 []
static const AVProfile profiles []
AVCodec ff_h264_decoder


Detailed Description

H.264 / AVC / MPEG4 part10 codec.

Author:
Michael Niedermayer <michaelni@gmx.at>

Definition in file h264.c.


Define Documentation

#define copy_fields ( to,
from,
start_field,
end_field   )     memcpy(&to->start_field, &from->start_field, (char*)&to->end_field - (char*)&to->start_field)

#define hl_decode_mb_simple ( sh,
bits   ) 

Value:

static void hl_decode_mb_simple_ ## bits(H264Context *h){ \
    hl_decode_mb_internal(h, 1, sh); \
}
Process a macroblock; this case avoids checks for expensive uncommon cases.

Definition at line 2103 of file h264.c.

#define hl_motion_fn ( sh,
bits   ) 

Value:

static av_always_inline void hl_motion_ ## bits(H264Context *h, \
                                       uint8_t *dest_y, \
                                       uint8_t *dest_cb, uint8_t *dest_cr, \
                                       qpel_mc_func (*qpix_put)[16], \
                                       h264_chroma_mc_func (*chroma_put), \
                                       qpel_mc_func (*qpix_avg)[16], \
                                       h264_chroma_mc_func (*chroma_avg), \
                                       h264_weight_func *weight_op, \
                                       h264_biweight_func *weight_avg, \
                                       int chroma444) \
{ \
    hl_motion(h, dest_y, dest_cb, dest_cr, qpix_put, chroma_put, \
              qpix_avg, chroma_avg, weight_op, weight_avg, sh, chroma444); \
}

Definition at line 798 of file h264.c.

#define IN_RANGE ( a,
b,
size   )     (((a) >= (b)) && ((a) < ((b)+(size))))

Definition at line 1129 of file h264.c.

Referenced by copy_picture_range().

#define RS   0

Referenced by ff_h264_decode_nal().

#define T (  )     (x>>3) | ((x&7)<<3)

#define T (  )     (x>>2) | ((x<<2) & 0xF)

#define XCHG ( a,
b,
xchg   ) 

Value:

if (pixel_shift) {\
        if (xchg) {\
            AV_SWAP64(b+0,a+0);\
            AV_SWAP64(b+8,a+8);\
        } else {\
            AV_COPY128(b,a); \
        }\
    } else \
if (xchg) AV_SWAP64(b,a);\
else      AV_COPY64(b,a);

Referenced by xchg_mb_border().


Function Documentation

static void await_references ( H264Context h  )  [static]

Wait until all reference frames are available for MC operations.

Parameters:
h the H264 context

Definition at line 307 of file h264.c.

Referenced by hl_motion().

static void backup_mb_border ( H264Context h,
uint8_t *  src_y,
uint8_t *  src_cb,
uint8_t *  src_cr,
int  linesize,
int  uvlinesize,
int  chroma444,
int  simple 
) [inline, static]

Definition at line 1477 of file h264.c.

Referenced by filter_mb_row(), filter_mb_row_simple(), and loop_filter().

static void clone_slice ( H264Context dst,
H264Context src 
) [static]

Replicate H264 "master" context to thread contexts.

Definition at line 2469 of file h264.c.

Referenced by decode_slice_header().

static void clone_tables ( H264Context dst,
H264Context src,
int  i 
) [static]

Mimic alloc_tables(), but for every context thread.

Definition at line 965 of file h264.c.

Referenced by decode_slice_header().

static av_cold void common_init ( H264Context h  )  [static]

Definition at line 1001 of file h264.c.

static int context_init ( H264Context h  )  [static]

Init context Allocate buffers which are not shared amongst multiple threads.

Definition at line 987 of file h264.c.

Referenced by decode_slice_header(), and decode_update_thread_context().

static void copy_parameter_set ( void **  to,
void **  from,
int  count,
int  size 
) [static]

Definition at line 1142 of file h264.c.

Referenced by decode_update_thread_context().

static void copy_picture_range ( Picture **  to,
Picture **  from,
int  count,
MpegEncContext new_base,
MpegEncContext old_base 
) [static]

Definition at line 1130 of file h264.c.

Referenced by decode_update_thread_context().

static av_always_inline int dctcoef_get ( DCTELEM mb,
int  high_bit_depth,
int  index 
) [static]

static av_always_inline void dctcoef_set ( DCTELEM mb,
int  high_bit_depth,
int  index,
int  value 
) [static]

Definition at line 1644 of file h264.c.

Referenced by hl_decode_mb_predict_luma().

static void decode_finish_row ( H264Context h  )  [static]

Draw edges and report progress for the last MB row.

Definition at line 3406 of file h264.c.

Referenced by decode_slice().

static int decode_frame ( AVCodecContext avctx,
void *  data,
int *  data_size,
AVPacket avpkt 
) [static]

Definition at line 3933 of file h264.c.

static int decode_init_thread_copy ( AVCodecContext avctx  )  [static]

Definition at line 1154 of file h264.c.

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

< thread context

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

Definition at line 3660 of file h264.c.

Referenced by decode_frame(), and ff_h264_decode_extradata().

static void decode_postinit ( H264Context h,
int  setup_finished 
) [static]

Run setup operations that must be run after slice header decoding.

This includes finding the next displayed frame.

Parameters:
h h264 master context
setup_finished enough NALs have been read that we can call ff_thread_finish_setup()

Definition at line 1326 of file h264.c.

Referenced by decode_frame(), and decode_nal_units().

static int decode_slice ( struct AVCodecContext avctx,
void *  arg 
) [static]

Definition at line 3437 of file h264.c.

static int decode_slice_header ( H264Context h,
H264Context h0 
) [static]

decodes a slice header.

This will also call MPV_common_init() and frame_start() as needed.

Parameters:
h h264context
h0 h264 master context (differs from 'h' when doing sliced based parallel decoding)
Returns:
0 if okay, <0 if an error occurred, 1 if decoding must not be multithreaded

Definition at line 2529 of file h264.c.

static int decode_update_thread_context ( AVCodecContext dst,
const AVCodecContext src 
) [static]

Definition at line 1165 of file h264.c.

static void execute_decode_slices ( H264Context h,
int  context_count 
) [static]

Call decode_slice() for each context.

Parameters:
h h264 master context
context_count number of contexts to execute

Definition at line 3625 of file h264.c.

Referenced by decode_nal_units().

int ff_h264_alloc_tables ( H264Context h  ) 

Allocate tables.

needs width/height

Definition at line 918 of file h264.c.

Referenced by decode_slice_header(), decode_update_thread_context(), and svq3_decode_init().

int ff_h264_check_intra4x4_pred_mode ( H264Context h  ) 

checks if the top & left blocks are available if needed & changes the dc mode so it only uses the available blocks.

Check if the top & left blocks are available if needed & change the dc mode so it only uses the available blocks.

Definition at line 75 of file h264.c.

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

int ff_h264_check_intra_pred_mode ( H264Context h,
int  mode,
int  is_chroma 
)

checks if the top & left blocks are available if needed & changes the dc mode so it only uses the available blocks.

Check if the top & left blocks are available if needed & change the dc mode so it only uses the available blocks.

Definition at line 114 of file h264.c.

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

av_cold int ff_h264_decode_end ( AVCodecContext avctx  ) 

Definition at line 4226 of file h264.c.

int ff_h264_decode_extradata ( H264Context h,
const uint8_t *  buf,
int  size 
)

Definition at line 1025 of file h264.c.

Referenced by ff_h264_decode_init(), and h264_parse().

av_cold int ff_h264_decode_init ( AVCodecContext avctx  ) 

Definition at line 1080 of file h264.c.

Referenced by svq3_decode_init().

const uint8_t* ff_h264_decode_nal ( H264Context h,
const uint8_t *  src,
int *  dst_length,
int *  consumed,
int  length 
)

Decode a network abstraction layer unit.

Parameters:
consumed is the number of bytes used as input
length is the length of the array
dst_length is the number of decoded bytes FIXME here or a decode rbsp tailing?
Returns:
decoded bytes, might be src+1 if no escapes

Definition at line 146 of file h264.c.

Referenced by decode_nal_units(), and parse_nal_units().

static int ff_h264_decode_rbsp_trailing ( H264Context h,
const uint8_t *  src 
) [static]

Identify the exact end of the bitstream.

Returns:
the length of the trailing, or 0 if damaged

Definition at line 244 of file h264.c.

Referenced by decode_nal_units().

int ff_h264_frame_start ( H264Context h  ) 

Definition at line 1257 of file h264.c.

Referenced by decode_slice_header(), and svq3_decode_frame().

av_cold void ff_h264_free_context ( H264Context h  ) 

Free any data that may have been allocated in the H264 context like SPS, PPS etc.

Definition at line 4213 of file h264.c.

Referenced by close(), ff_h264_decode_end(), and svq3_decode_end().

int ff_h264_get_profile ( SPS sps  ) 

computes profile from profile_idc and constraint_set?_flags

compute profile from sps

Parameters:
sps SPS
Returns:
profile as defined by FF_PROFILE_H264_*

Definition at line 2500 of file h264.c.

Referenced by decode_slice_header(), and parse_nal_units().

int ff_h264_get_slice_type ( const H264Context h  ) 

Reconstruct bitstream slice_type.

Definition at line 3105 of file h264.c.

Referenced by decode_slice(), and fill_slice_long().

void ff_h264_hl_decode_mb ( H264Context h  ) 

Definition at line 2125 of file h264.c.

Referenced by decode_mb(), decode_slice(), and svq3_decode_frame().

void ff_h264_write_back_intra_pred_mode ( H264Context h  ) 

Definition at line 63 of file h264.c.

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

static void field_end ( H264Context h,
int  in_setup 
) [static]

Definition at line 2415 of file h264.c.

Referenced by decode_frame(), and decode_slice_header().

static int fill_filter_caches ( H264Context h,
int  mb_type 
) [static]

Returns:
non zero if the loop filter can be skiped

Definition at line 3121 of file h264.c.

Referenced by loop_filter().

static void flush_dpb ( AVCodecContext avctx  )  [static]

Definition at line 2283 of file h264.c.

Referenced by decode_slice_header().

static void free_tables ( H264Context h,
int  free_rbsp 
) [static]

Definition at line 816 of file h264.c.

Referenced by decode_slice_header(), ff_h264_alloc_tables(), and ff_h264_free_context().

static int get_consumed_bytes ( MpegEncContext s,
int  pos,
int  buf_size 
) [static]

returns the number of bytes consumed for building the current frame

Definition at line 3926 of file h264.c.

static int get_lowest_part_list_y ( H264Context h,
Picture pic,
int  n,
int  height,
int  y_offset,
int  list 
) [inline, static]

Definition at line 257 of file h264.c.

Referenced by get_lowest_part_y().

static void get_lowest_part_y ( H264Context h,
int  refs[2][48],
int  n,
int  height,
int  y_offset,
int  list0,
int  list1,
int *  nrefs 
) [inline, static]

Definition at line 267 of file h264.c.

Referenced by await_references().

static void av_noinline hl_decode_mb_444_complex ( H264Context h  )  [static]

Definition at line 2117 of file h264.c.

Referenced by ff_h264_hl_decode_mb().

static av_always_inline void hl_decode_mb_444_internal ( H264Context h,
int  simple,
int  pixel_shift 
) [static]

Definition at line 1997 of file h264.c.

Referenced by hl_decode_mb_444_complex(), and hl_decode_mb_444_simple().

static void av_noinline hl_decode_mb_444_simple ( H264Context h  )  [static]

Definition at line 2121 of file h264.c.

Referenced by ff_h264_hl_decode_mb().

static void av_noinline hl_decode_mb_complex ( H264Context h  )  [static]

Process a macroblock; this handles edge cases, such as interlacing.

Definition at line 2113 of file h264.c.

Referenced by ff_h264_hl_decode_mb().

static av_always_inline void hl_decode_mb_idct_luma ( H264Context h,
int  mb_type,
int  is_h264,
int  simple,
int  transform_bypass,
int  pixel_shift,
int *  block_offset,
int  linesize,
uint8_t *  dest_y,
int  p 
) [static]

Definition at line 1754 of file h264.c.

Referenced by hl_decode_mb_444_internal(), and hl_decode_mb_internal().

static av_always_inline void hl_decode_mb_internal ( H264Context h,
int  simple,
int  pixel_shift 
) [static]

Definition at line 1804 of file h264.c.

Referenced by hl_decode_mb_complex().

static av_always_inline void hl_decode_mb_predict_luma ( H264Context h,
int  mb_type,
int  is_h264,
int  simple,
int  transform_bypass,
int  pixel_shift,
int *  block_offset,
int  linesize,
uint8_t *  dest_y,
int  p 
) [static]

Definition at line 1651 of file h264.c.

Referenced by hl_decode_mb_444_internal(), and hl_decode_mb_internal().

hl_decode_mb_simple ( ,
16   
)

hl_decode_mb_simple ( ,
 
)

static av_always_inline void hl_motion ( H264Context h,
uint8_t *  dest_y,
uint8_t *  dest_cb,
uint8_t *  dest_cr,
qpel_mc_func(*)  qpix_put[16],
h264_chroma_mc_func chroma_put,
qpel_mc_func(*)  qpix_avg[16],
h264_chroma_mc_func chroma_avg,
h264_weight_func weight_op,
h264_biweight_func weight_avg,
int  pixel_shift,
int  chroma444 
) [static]

Definition at line 697 of file h264.c.

hl_motion_fn ( ,
16   
)

hl_motion_fn ( ,
 
)

static void idr ( H264Context h  )  [static]

instantaneous decoder refresh.

Definition at line 2274 of file h264.c.

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

static void implicit_weight_table ( H264Context h,
int  field 
) [static]

Initialize implicit_weight table.

Parameters:
field 0/1 initialize the weight for interlaced MBAFF -1 initializes the rest

Definition at line 2210 of file h264.c.

Referenced by decode_slice_header().

static void init_dequant4_coeff_table ( H264Context h  )  [static]

Definition at line 876 of file h264.c.

Referenced by init_dequant_tables().

static void init_dequant8_coeff_table ( H264Context h  )  [static]

Definition at line 850 of file h264.c.

Referenced by init_dequant_tables().

static void init_dequant_tables ( H264Context h  )  [static]

Definition at line 901 of file h264.c.

Referenced by decode_slice_header(), and ff_h264_alloc_tables().

static int init_poc ( H264Context h  )  [static]

Definition at line 2301 of file h264.c.

Referenced by decode_slice_header().

static void init_scan_tables ( H264Context h  )  [static]

initialize scan tables

Definition at line 2382 of file h264.c.

Referenced by decode_slice_header().

static void loop_filter ( H264Context h,
int  start_x,
int  end_x 
) [static]

Definition at line 3332 of file h264.c.

Referenced by decode_slice().

static void mc_dir_part ( H264Context h,
Picture pic,
int  n,
int  square,
int  chroma_height,
int  delta,
int  list,
uint8_t *  dest_y,
uint8_t *  dest_cb,
uint8_t *  dest_cr,
int  src_x_offset,
int  src_y_offset,
qpel_mc_func qpix_op,
h264_chroma_mc_func  chroma_op,
int  pixel_shift,
int  chroma444 
) [inline, static]

Definition at line 458 of file h264.c.

static void mc_part ( H264Context h,
int  n,
int  square,
int  chroma_height,
int  delta,
uint8_t *  dest_y,
uint8_t *  dest_cb,
uint8_t *  dest_cr,
int  x_offset,
int  y_offset,
qpel_mc_func qpix_put,
h264_chroma_mc_func  chroma_put,
qpel_mc_func qpix_avg,
h264_chroma_mc_func  chroma_avg,
h264_weight_func weight_op,
h264_biweight_func weight_avg,
int  list0,
int  list1,
int  pixel_shift,
int  chroma444 
) [inline, static]

Definition at line 656 of file h264.c.

Referenced by hl_motion().

static void mc_part_std ( H264Context h,
int  n,
int  square,
int  chroma_height,
int  delta,
uint8_t *  dest_y,
uint8_t *  dest_cb,
uint8_t *  dest_cr,
int  x_offset,
int  y_offset,
qpel_mc_func qpix_put,
h264_chroma_mc_func  chroma_put,
qpel_mc_func qpix_avg,
h264_chroma_mc_func  chroma_avg,
int  list0,
int  list1,
int  pixel_shift,
int  chroma444 
) [inline, static]

Definition at line 543 of file h264.c.

static void mc_part_weighted ( H264Context h,
int  n,
int  square,
int  chroma_height,
int  delta,
uint8_t *  dest_y,
uint8_t *  dest_cb,
uint8_t *  dest_cr,
int  x_offset,
int  y_offset,
qpel_mc_func qpix_put,
h264_chroma_mc_func  chroma_put,
h264_weight_func  luma_weight_op,
h264_weight_func  chroma_weight_op,
h264_biweight_func  luma_weight_avg,
h264_biweight_func  chroma_weight_avg,
int  list0,
int  list1,
int  pixel_shift,
int  chroma444 
) [inline, static]

Definition at line 582 of file h264.c.

Referenced by mc_part().

static int pred_weight_table ( H264Context h  )  [static]

Definition at line 2144 of file h264.c.

Referenced by decode_slice_header().

static void predict_field_decoding_flag ( H264Context h  )  [static]

Definition at line 3392 of file h264.c.

Referenced by decode_slice().

static void prefetch_motion ( H264Context h,
int  list,
int  pixel_shift,
int  chroma444 
) [inline, static]

Definition at line 676 of file h264.c.

Referenced by hl_motion(), MPV_motion_internal(), and vp8_decode_frame().

static void xchg_mb_border ( H264Context h,
uint8_t *  src_y,
uint8_t *  src_cb,
uint8_t *  src_cr,
int  linesize,
int  uvlinesize,
int  xchg,
int  chroma444,
int  simple,
int  pixel_shift 
) [inline, static]

Definition at line 1552 of file h264.c.

Referenced by hl_decode_mb_444_internal(), hl_decode_mb_internal(), and intra_predict().


Variable Documentation

const uint8_t div6[QP_MAX_NUM+1] [static]

Initial value:

{
0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,10,10,10,10,
}

Definition at line 52 of file h264.c.

Referenced by init_dequant4_coeff_table(), and init_dequant8_coeff_table().

Initial value:

Definition at line 56 of file h264.c.

Referenced by decode_slice_header().

const AVProfile profiles[] [static]

Initial value:

 {
    { FF_PROFILE_H264_BASELINE,             "Baseline"              },
    { FF_PROFILE_H264_CONSTRAINED_BASELINE, "Constrained Baseline"  },
    { FF_PROFILE_H264_MAIN,                 "Main"                  },
    { FF_PROFILE_H264_EXTENDED,             "Extended"              },
    { FF_PROFILE_H264_HIGH,                 "High"                  },
    { FF_PROFILE_H264_HIGH_10,              "High 10"               },
    { FF_PROFILE_H264_HIGH_10_INTRA,        "High 10 Intra"         },
    { FF_PROFILE_H264_HIGH_422,             "High 4:2:2"            },
    { FF_PROFILE_H264_HIGH_422_INTRA,       "High 4:2:2 Intra"      },
    { FF_PROFILE_H264_HIGH_444,             "High 4:4:4"            },
    { FF_PROFILE_H264_HIGH_444_PREDICTIVE,  "High 4:4:4 Predictive" },
    { FF_PROFILE_H264_HIGH_444_INTRA,       "High 4:4:4 Intra"      },
    { FF_PROFILE_H264_CAVLC_444,            "CAVLC 4:4:4"           },
    { FF_PROFILE_UNKNOWN },
}

Definition at line 4240 of file h264.c.

const uint8_t rem6[QP_MAX_NUM+1] [static]

Initial value:

{
0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3,
}

Definition at line 48 of file h264.c.

Referenced by init_dequant4_coeff_table(), and init_dequant8_coeff_table().


Generated on Fri Oct 26 02:38:16 2012 for FFmpeg by  doxygen 1.5.8