27 #ifndef AVCODEC_RV34_H
28 #define AVCODEC_RV34_H
38 #define MB_TYPE_SEPARATE_DC 0x01000000
39 #define IS_SEPARATE_DC(a) ((a) & MB_TYPE_SEPARATE_DC)
Libavcodec external API header.
#define DECLARE_ALIGNED(n, t, v)
Declare a variable that is aligned in memory.
H.264 / AVC / MPEG-4 prediction functions.
typedef void(RENAME(mix_any_func_type))
RV40BlockTypes
RV30 and RV40 Macroblock types.
@ RV34_MB_TYPE_INTRA
Intra macroblock.
@ RV34_MB_P_MIX16x16
P-frame macroblock with DCs in a separate 4x4 block, one motion vector.
@ RV34_MB_P_16x8
P-frame macroblock, 16x8 motion compensation partitions.
@ RV34_MB_B_BIDIR
Bidirectionally predicted B-frame macroblock, two motion vectors.
@ RV34_MB_B_BACKWARD
B-frame macroblock, backward prediction.
@ RV34_MB_B_DIRECT
Bidirectionally predicted B-frame macroblock, no motion vectors.
@ RV34_MB_P_16x16
P-frame macroblock, one motion frame.
@ RV34_MB_P_8x16
P-frame macroblock, 8x16 motion compensation partitions.
@ RV34_MB_P_8x8
P-frame macroblock, 8x8 motion compensation partitions.
@ RV34_MB_B_FORWARD
B-frame macroblock, forward prediction.
@ RV34_MB_TYPE_INTRA16x16
Intra macroblock with DCs in a separate 4x4 block.
@ RV34_MB_SKIP
Skipped block.
int ff_rv34_decode_init(AVCodecContext *avctx)
Initialize decoder.
int ff_rv34_decode_frame(AVCodecContext *avctx, void *data, int *got_frame, AVPacket *avpkt)
int ff_rv34_get_start_offset(GetBitContext *gb, int blocks)
common decoding functions
int ff_rv34_decode_end(AVCodecContext *avctx)
int ff_rv34_decode_update_thread_context(AVCodecContext *dst, const AVCodecContext *src)
RV30/40 decoder motion compensation functions.
main external API structure.
This structure stores compressed data.
Context for storing H.264 prediction functions.
int is16
current block has additional 16x16 specific features or not
int rv30
indicates which RV variant is currently decoded
void(* loop_filter)(struct RV34DecContext *r, int row)
int luma_vlc
which VLC set will be used for decoding of luma blocks
uint16_t * deblock_coefs
deblock coefficients for each macroblock
RV34VLC * cur_vlcs
VLC set used for current frame decoding.
uint8_t * cbp_chroma
CBP values for chroma subblocks.
SliceInfo si
current slice information
uint16_t * cbp_luma
CBP values for luma subblocks.
int(* parse_slice_header)(struct RV34DecContext *r, GetBitContext *gb, SliceInfo *si)
int intra_types_stride
block types array stride
int weight2
B-frame distance fractions (0.14) used in motion compensation.
H264PredContext h
functions for 4x4 and 16x16 intra block prediction
int8_t * intra_types
block types
int * mb_type
internal macroblock types
uint8_t * tmp_b_block_base
uint8_t * tmp_b_block_y[2]
temporary blocks for RV4 weighted MC
int(* decode_intra_types)(struct RV34DecContext *r, GetBitContext *gb, int8_t *dst)
int chroma_vlc
which VLC set will be used for decoding of chroma blocks
int8_t * intra_types_hist
old block types, used for prediction
int block_type
current block type
uint32_t avail_cache[3 *4]
8x8 block available flags (for MV prediction)
int dmv[4][2]
differential motion vectors for the current macroblock
const uint8_t * luma_dc_quant_i
luma subblock DC quantizer for intraframes
int(* decode_mb_info)(struct RV34DecContext *r)
const uint8_t * luma_dc_quant_p
luma subblock DC quantizer for interframes
uint8_t * tmp_b_block_uv[4]
VLC tables used by the decoder.
VLC cbppattern[2]
VLCs used for pattern of coded block patterns decoding.
VLC cbp[2][4]
VLCs used for coded block patterns decoding.
VLC second_pattern[2]
VLCs used for decoding coefficients in the subblocks 2 and 3.
VLC third_pattern[2]
VLCs used for decoding coefficients in the last subblock.
VLC first_pattern[4]
VLCs used for decoding coefficients in the first subblock.
VLC coefficient
VLCs used for decoding big coefficients.
essential slice information
int vlc_set
VLCs used for this slice.
int end
start and end macroblocks of the slice
int quant
quantizer used for this slice
int type
slice type (intra, inter)