Go to the documentation of this file.
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)
This structure describes decoded (raw) audio or video data.
int luma_vlc
which VLC set will be used for decoding of luma blocks
SliceInfo si
current slice information
@ RV34_MB_B_FORWARD
B-frame macroblock, forward prediction.
const uint8_t * luma_dc_quant_p
luma subblock DC quantizer for interframes
const VLCElem * first_pattern[4]
VLCs used for decoding coefficients in the first subblock.
@ RV34_MB_B_DIRECT
Bidirectionally predicted B-frame macroblock, no motion vectors.
int(* decode_intra_types)(struct RV34DecContext *r, GetBitContext *gb, int8_t *dst)
int is16
current block has additional 16x16 specific features or not
int ff_rv34_decode_frame(AVCodecContext *avctx, AVFrame *frame, int *got_frame, AVPacket *avpkt)
int weight2
B-frame distance fractions (0.14) used in motion compensation.
VLC tables used by the decoder.
VLC cbp[2][4]
VLCs used for coded block patterns decoding.
const VLCElem * second_pattern[2]
VLCs used for decoding coefficients in the subblocks 2 and 3.
int8_t * intra_types
block types
const RV34VLC * cur_vlcs
VLC set used for current frame decoding.
uint8_t * cbp_chroma
CBP values for chroma subblocks.
const VLCElem * cbppattern[2]
VLCs used for pattern of coded block patterns decoding.
uint8_t * tmp_b_block_uv[4]
const uint8_t * luma_dc_quant_i
luma subblock DC quantizer for intraframes
@ RV34_MB_SKIP
Skipped block.
const VLCElem * third_pattern[2]
VLCs used for decoding coefficients in the last subblock.
int type
slice type (intra, inter)
int ff_rv34_get_start_offset(GetBitContext *gb, int blocks)
common decoding functions
int quant
quantizer used for this slice
int ff_rv34_decode_init(AVCodecContext *avctx)
Initialize decoder.
@ RV34_MB_P_8x8
P-frame macroblock, 8x8 motion compensation partitions.
int dmv[4][2]
differential motion vectors for the current macroblock
int ff_rv34_decode_update_thread_context(AVCodecContext *dst, const AVCodecContext *src)
RV40BlockTypes
RV30 and RV40 Macroblock types.
int vlc_set
VLCs used for this slice.
@ RV34_MB_B_BACKWARD
B-frame macroblock, backward prediction.
#define DECLARE_ALIGNED(n, t, v)
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t intptr_t int int16_t * dst
uint8_t * tmp_b_block_base
@ RV34_MB_P_8x16
P-frame macroblock, 8x16 motion compensation partitions.
uint32_t avail_cache[3 *4]
8x8 block available flags (for MV prediction)
H264PredContext h
functions for 4x4 and 16x16 intra block prediction
int chroma_vlc
which VLC set will be used for decoding of chroma blocks
int ff_rv34_decode_end(AVCodecContext *avctx)
@ RV34_MB_TYPE_INTRA16x16
Intra macroblock with DCs in a separate 4x4 block.
int8_t * intra_types_hist
old block types, used for prediction
int(* decode_mb_info)(struct RV34DecContext *r)
@ RV34_MB_TYPE_INTRA
Intra macroblock.
essential slice information
int intra_types_stride
block types array stride
these buffered frames must be flushed immediately if a new input produces new the filter must not call request_frame to get more It must just process the frame or queue it The task of requesting more frames is left to the filter s request_frame method or the application If a filter has several the filter must be ready for frames arriving randomly on any input any filter with several inputs will most likely require some kind of queuing mechanism It is perfectly acceptable to have a limited queue and to drop frames when the inputs are too unbalanced request_frame For filters that do not use the this method is called when a frame is wanted on an output For a it should directly call filter_frame on the corresponding output For a if there are queued frames already one of these frames should be pushed If the filter should request a frame on one of its repeatedly until at least one frame has been pushed Return or at least make progress towards producing a frame
const VLCElem * coefficient
VLCs used for decoding big coefficients.
int block_type
current block type
main external API structure.
int end
start and end macroblocks of the slice
uint16_t * deblock_coefs
deblock coefficients for each macroblock
int(* parse_slice_header)(struct RV34DecContext *r, GetBitContext *gb, SliceInfo *si)
int * mb_type
internal macroblock types
@ RV34_MB_P_MIX16x16
P-frame macroblock with DCs in a separate 4x4 block, one motion vector.
Context for storing H.264 prediction functions.
int rv30
indicates which RV variant is currently decoded
void(* loop_filter)(struct RV34DecContext *r, int row)
uint16_t * cbp_luma
CBP values for luma subblocks.
@ RV34_MB_P_16x8
P-frame macroblock, 16x8 motion compensation partitions.
This structure stores compressed data.
@ RV34_MB_P_16x16
P-frame macroblock, one motion frame.
@ RV34_MB_B_BIDIR
Bidirectionally predicted B-frame macroblock, two motion vectors.
uint8_t * tmp_b_block_y[2]
temporary blocks for RV4 weighted MC