RV30/40 bitstream parsing


Functions

int ff_rv34_get_start_offset (GetBitContext *gb, int mb_size)
static RV34VLCchoose_vlc_set (int quant, int mod, int type)
static int rv34_decode_dquant (GetBitContext *gb, int quant)

Detailed Description

Decode macroblock header and return CBP in case of success, -1 otherwise.

Function Documentation

static RV34VLC* choose_vlc_set ( int  quant,
int  mod,
int  type 
) [inline, static]

Select VLC set for decoding from current quantizer, modifier and frame type.

Definition at line 378 of file rv34.c.

References av_clip(), inter_vlcs, intra_vlcs, and rv34_quant_to_vlc_set.

Referenced by rv34_decode_macroblock(), and rv34_decode_mb_header().

00379 {
00380     if(mod == 2 && quant < 19) quant += 10;
00381     else if(mod && quant < 26) quant += 5;
00382     return type ? &inter_vlcs[rv34_quant_to_vlc_set[1][av_clip(quant, 0, 30)]]
00383                 : &intra_vlcs[rv34_quant_to_vlc_set[0][av_clip(quant, 0, 30)]];
00384 }

int ff_rv34_get_start_offset ( GetBitContext gb,
int  mb_size 
)

Decode starting slice position.

Definition at line 366 of file rv34.c.

References rv34_mb_bits_sizes, and rv34_mb_max_sizes.

Referenced by rv30_parse_slice_header(), and rv40_parse_slice_header().

00367 {
00368     int i;
00369     for(i = 0; i < 5; i++)
00370         if(rv34_mb_max_sizes[i] > mb_size)
00371             break;
00372     return rv34_mb_bits_sizes[i];
00373 }

static int rv34_decode_dquant ( GetBitContext gb,
int  quant 
) [inline, static]

Decode quantizer difference and return modified quantizer.

Definition at line 389 of file rv34.c.

References get_bits(), get_bits1(), and rv34_dquant_tab.

00390 {
00391     if(get_bits1(gb))
00392         return rv34_dquant_tab[get_bits1(gb)][quant];
00393     else
00394         return get_bits(gb, 5);
00395 }


Generated on Thu Nov 20 10:46:07 2008 for libextractor by  doxygen 1.5.1