#include "config.h"
#include "cabac.h"
#include "cabac_functions.h"
#include "internal.h"
#include "dsputil.h"
#include "avcodec.h"
#include "h264.h"
#include "h264data.h"
#include "h264_mvpred.h"
#include "golomb.h"
#include <assert.h>
Go to the source code of this file.
Defines | |
#define | CABAC 1 |
#define | UNCHECKED_BITSTREAM_READER 1 |
#define | DECODE_CABAC_MB_MVD(h,list,n) |
#define | CABAC_ON_STACK |
#define | CC &cc |
#define | DECODE_SIGNIFICANCE(coefs, sig_off, last_off) |
#define | STORE_BLOCK(type) |
Functions | |
void | ff_h264_init_cabac_states (H264Context *h) |
static int | decode_cabac_field_decoding_flag (H264Context *h) |
static int | decode_cabac_intra_mb_type (H264Context *h, int ctx_base, int intra_slice) |
static int | decode_cabac_mb_skip (H264Context *h, int mb_x, int mb_y) |
static int | decode_cabac_mb_intra4x4_pred_mode (H264Context *h, int pred_mode) |
static int | decode_cabac_mb_chroma_pre_mode (H264Context *h) |
static int | decode_cabac_mb_cbp_luma (H264Context *h) |
static int | decode_cabac_mb_cbp_chroma (H264Context *h) |
static int | decode_cabac_p_mb_sub_type (H264Context *h) |
static int | decode_cabac_b_mb_sub_type (H264Context *h) |
static int | decode_cabac_mb_ref (H264Context *h, int list, int n) |
static int | decode_cabac_mb_mvd (H264Context *h, int ctxbase, int amvd, int *mvda) |
static av_always_inline int | get_cabac_cbf_ctx (H264Context *h, int cat, int idx, int max_coeff, int is_dc) |
static av_always_inline void | decode_cabac_residual_internal (H264Context *h, DCTELEM *block, int cat, int n, const uint8_t *scantable, const uint32_t *qmul, int max_coeff, int is_dc, int chroma422) |
static void | decode_cabac_residual_dc_internal (H264Context *h, DCTELEM *block, int cat, int n, const uint8_t *scantable, int max_coeff) |
static void | decode_cabac_residual_dc_internal_422 (H264Context *h, DCTELEM *block, int cat, int n, const uint8_t *scantable, int max_coeff) |
static void | decode_cabac_residual_nondc_internal (H264Context *h, DCTELEM *block, int cat, int n, const uint8_t *scantable, const uint32_t *qmul, int max_coeff) |
static av_always_inline void | decode_cabac_residual_dc (H264Context *h, DCTELEM *block, int cat, int n, const uint8_t *scantable, int max_coeff) |
static av_always_inline void | decode_cabac_residual_dc_422 (H264Context *h, DCTELEM *block, int cat, int n, const uint8_t *scantable, int max_coeff) |
static av_always_inline void | decode_cabac_residual_nondc (H264Context *h, DCTELEM *block, int cat, int n, const uint8_t *scantable, const uint32_t *qmul, int max_coeff) |
static av_always_inline void | decode_cabac_luma_residual (H264Context *h, const uint8_t *scan, const uint8_t *scan8x8, int pixel_shift, int mb_type, int cbp, int p) |
int | ff_h264_decode_mb_cabac (H264Context *h) |
Decode a macroblock. | |
Variables | |
static const int8_t | cabac_context_init_I [1024][2] |
static const int8_t | cabac_context_init_PB [3][1024][2] |
Definition in file h264_cabac.c.
#define CABAC 1 |
Definition at line 28 of file h264_cabac.c.
#define CABAC_ON_STACK |
#define CC &cc |
Referenced by decode_cabac_residual_internal().
#define DECODE_CABAC_MB_MVD | ( | h, | |||
list, | |||||
n | ) |
Value:
{\ int amvd0 = h->mvd_cache[list][scan8[n] - 1][0] +\ h->mvd_cache[list][scan8[n] - 8][0];\ int amvd1 = h->mvd_cache[list][scan8[n] - 1][1] +\ h->mvd_cache[list][scan8[n] - 8][1];\ \ mx += decode_cabac_mb_mvd( h, 40, amvd0, &mpx );\ my += decode_cabac_mb_mvd( h, 47, amvd1, &mpy );\ }
Definition at line 1524 of file h264_cabac.c.
Referenced by ff_h264_decode_mb_cabac().
#define DECODE_SIGNIFICANCE | ( | coefs, | |||
sig_off, | |||||
last_off | ) |
Value:
for(last= 0; last < coefs; last++) { \ uint8_t *sig_ctx = significant_coeff_ctx_base + sig_off; \ if( get_cabac( CC, sig_ctx )) { \ uint8_t *last_ctx = last_coeff_ctx_base + last_off; \ index[coeff_count++] = last; \ if( get_cabac( CC, last_ctx ) ) { \ last= max_coeff; \ break; \ } \ } \ }\ if( last == max_coeff -1 ) {\ index[coeff_count++] = last;\ }
Referenced by decode_cabac_residual_internal().
#define STORE_BLOCK | ( | type | ) |
Referenced by decode_cabac_residual_internal(), and decode_residual().
#define UNCHECKED_BITSTREAM_READER 1 |
Definition at line 29 of file h264_cabac.c.
static int decode_cabac_b_mb_sub_type | ( | H264Context * | h | ) | [static] |
static int decode_cabac_field_decoding_flag | ( | H264Context * | h | ) | [static] |
static int decode_cabac_intra_mb_type | ( | H264Context * | h, | |
int | ctx_base, | |||
int | intra_slice | |||
) | [static] |
static av_always_inline void decode_cabac_luma_residual | ( | H264Context * | h, | |
const uint8_t * | scan, | |||
const uint8_t * | scan8x8, | |||
int | pixel_shift, | |||
int | mb_type, | |||
int | cbp, | |||
int | p | |||
) | [static] |
static int decode_cabac_mb_cbp_chroma | ( | H264Context * | h | ) | [static] |
static int decode_cabac_mb_cbp_luma | ( | H264Context * | h | ) | [static] |
static int decode_cabac_mb_chroma_pre_mode | ( | H264Context * | h | ) | [static] |
static int decode_cabac_mb_intra4x4_pred_mode | ( | H264Context * | h, | |
int | pred_mode | |||
) | [static] |
static int decode_cabac_mb_mvd | ( | H264Context * | h, | |
int | ctxbase, | |||
int | amvd, | |||
int * | mvda | |||
) | [static] |
Definition at line 1488 of file h264_cabac.c.
static int decode_cabac_mb_ref | ( | H264Context * | h, | |
int | list, | |||
int | n | |||
) | [static] |
static int decode_cabac_mb_skip | ( | H264Context * | h, | |
int | mb_x, | |||
int | mb_y | |||
) | [static] |
static int decode_cabac_p_mb_sub_type | ( | H264Context * | h | ) | [static] |
static av_always_inline void decode_cabac_residual_dc | ( | H264Context * | h, | |
DCTELEM * | block, | |||
int | cat, | |||
int | n, | |||
const uint8_t * | scantable, | |||
int | max_coeff | |||
) | [static] |
Definition at line 1776 of file h264_cabac.c.
Referenced by decode_cabac_luma_residual(), and ff_h264_decode_mb_cabac().
static av_always_inline void decode_cabac_residual_dc_422 | ( | H264Context * | h, | |
DCTELEM * | block, | |||
int | cat, | |||
int | n, | |||
const uint8_t * | scantable, | |||
int | max_coeff | |||
) | [static] |
static void decode_cabac_residual_dc_internal | ( | H264Context * | h, | |
DCTELEM * | block, | |||
int | cat, | |||
int | n, | |||
const uint8_t * | scantable, | |||
int | max_coeff | |||
) | [static] |
static void decode_cabac_residual_dc_internal_422 | ( | H264Context * | h, | |
DCTELEM * | block, | |||
int | cat, | |||
int | n, | |||
const uint8_t * | scantable, | |||
int | max_coeff | |||
) | [static] |
static av_always_inline void decode_cabac_residual_internal | ( | H264Context * | h, | |
DCTELEM * | block, | |||
int | cat, | |||
int | n, | |||
const uint8_t * | scantable, | |||
const uint32_t * | qmul, | |||
int | max_coeff, | |||
int | is_dc, | |||
int | chroma422 | |||
) | [static] |
Definition at line 1565 of file h264_cabac.c.
Referenced by decode_cabac_residual_dc_internal(), decode_cabac_residual_dc_internal_422(), and decode_cabac_residual_nondc_internal().
static av_always_inline void decode_cabac_residual_nondc | ( | H264Context * | h, | |
DCTELEM * | block, | |||
int | cat, | |||
int | n, | |||
const uint8_t * | scantable, | |||
const uint32_t * | qmul, | |||
int | max_coeff | |||
) | [static] |
Definition at line 1798 of file h264_cabac.c.
Referenced by decode_cabac_luma_residual(), and ff_h264_decode_mb_cabac().
static void decode_cabac_residual_nondc_internal | ( | H264Context * | h, | |
DCTELEM * | block, | |||
int | cat, | |||
int | n, | |||
const uint8_t * | scantable, | |||
const uint32_t * | qmul, | |||
int | max_coeff | |||
) | [static] |
int ff_h264_decode_mb_cabac | ( | H264Context * | h | ) |
Decode a macroblock.
Decode a CABAC coded macroblock.
Definition at line 1865 of file h264_cabac.c.
Referenced by decode_slice().
void ff_h264_init_cabac_states | ( | H264Context * | h | ) |
static av_always_inline int get_cabac_cbf_ctx | ( | H264Context * | h, | |
int | cat, | |||
int | idx, | |||
int | max_coeff, | |||
int | is_dc | |||
) | [static] |
Definition at line 1535 of file h264_cabac.c.
Referenced by decode_cabac_residual_dc(), decode_cabac_residual_dc_422(), and decode_cabac_residual_nondc().
const int8_t cabac_context_init_I[1024][2] [static] |
const int8_t cabac_context_init_PB[3][1024][2] [static] |