@ -2016,7 +2016,8 @@ static int vc1_decode_p_block(VC1Context *v, DCTELEM block[64], int n, int mquan
if ( i = = 1 )
v - > vc1dsp . vc1_inv_trans_8x8_dc ( dst , linesize , block ) ;
else {
v - > vc1dsp . vc1_inv_trans_8x8_add ( dst , linesize , block ) ;
v - > vc1dsp . vc1_inv_trans_8x8 ( block ) ;
s - > dsp . add_pixels_clamped ( block , dst , linesize ) ;
}
}
break ;
@ -2258,7 +2259,7 @@ static int vc1_decode_p_mb(VC1Context *v)
{
MpegEncContext * s = & v - > s ;
GetBitContext * gb = & s - > gb ;
int i ;
int i , j ;
int mb_pos = s - > mb_x + s - > mb_y * s - > mb_stride ;
int cbp ; /* cbp decoding stuff */
int mqdiff , mquant ; /* MB quantization */
@ -2288,8 +2289,6 @@ static int vc1_decode_p_mb(VC1Context *v)
{
if ( ! skipped )
{
vc1_idct_func idct8x8_fn ;
GET_MVDATA ( dmv_x , dmv_y ) ;
if ( s - > mb_intra ) {
@ -2324,7 +2323,6 @@ static int vc1_decode_p_mb(VC1Context *v)
VC1_TTMB_VLC_BITS , 2 ) ;
if ( ! s - > mb_intra ) vc1_mc_1mv ( v , 0 ) ;
dst_idx = 0 ;
idct8x8_fn = v - > vc1dsp . vc1_inv_trans_8x8_put_signed [ ! ! v - > rangeredfrm ] ;
for ( i = 0 ; i < 6 ; i + + )
{
s - > dc_val [ 0 ] [ s - > block_index [ i ] ] = 0 ;
@ -2342,9 +2340,9 @@ static int vc1_decode_p_mb(VC1Context *v)
vc1_decode_intra_block ( v , s - > block [ i ] , i , val , mquant , ( i & 4 ) ? v - > codingset2 : v - > codingset ) ;
if ( ( i > 3 ) & & ( s - > flags & CODEC_FLAG_GRAY ) ) continue ;
idct8x8_fn ( s - > dest [ dst_idx ] + off ,
i & 4 ? s - > uvlinesize : s - > linesize ,
s - > block [ i ] ) ;
v - > vc1dsp . vc1_inv_trans_8x8 ( s - > block [ i ] ) ;
if ( v - > rangeredfrm ) for ( j = 0 ; j < 64 ; j + + ) s - > block [ i ] [ j ] < < = 1 ;
s - > dsp . put_signed_pixels_clamped ( s - > block [ i ] , s - > dest [ dst_idx ] + off , i & 4 ? s - > uvlinesize : s - > linesize ) ;
if ( v - > pq > = 9 & & v - > overlap ) {
if ( v - > c_avail )
v - > vc1dsp . vc1_h_overlap ( s - > dest [ dst_idx ] + off , i & 4 ? s - > uvlinesize : s - > linesize ) ;
@ -2380,7 +2378,6 @@ static int vc1_decode_p_mb(VC1Context *v)
{
int intra_count = 0 , coded_inter = 0 ;
int is_intra [ 6 ] , is_coded [ 6 ] ;
vc1_idct_func idct8x8_fn ;
/* Get CBPCY */
cbp = get_vlc2 ( & v - > s . gb , v - > cbpcy_vlc - > table , VC1_CBPCY_P_VLC_BITS , 2 ) ;
for ( i = 0 ; i < 6 ; i + + )
@ -2431,7 +2428,6 @@ static int vc1_decode_p_mb(VC1Context *v)
}
if ( ! v - > ttmbf & & coded_inter )
ttmb = get_vlc2 ( gb , ff_vc1_ttmb_vlc [ v - > tt_index ] . table , VC1_TTMB_VLC_BITS , 2 ) ;
idct8x8_fn = v - > vc1dsp . vc1_inv_trans_8x8_put_signed [ ! ! v - > rangeredfrm ] ;
for ( i = 0 ; i < 6 ; i + + )
{
dst_idx + = i > > 2 ;
@ -2447,9 +2443,9 @@ static int vc1_decode_p_mb(VC1Context *v)
vc1_decode_intra_block ( v , s - > block [ i ] , i , is_coded [ i ] , mquant , ( i & 4 ) ? v - > codingset2 : v - > codingset ) ;
if ( ( i > 3 ) & & ( s - > flags & CODEC_FLAG_GRAY ) ) continue ;
idct8x8_fn ( s - > dest [ dst_idx ] + off ,
( i & 4 ) ? s - > uvlinesize : s - > linesize ,
s - > block [ i ] ) ;
v - > vc1dsp . vc1_inv_trans_8x8 ( s - > block [ i ] ) ;
if ( v - > rangeredfrm ) for ( j = 0 ; j < 64 ; j + + ) s - > block [ i ] [ j ] < < = 1 ;
s - > dsp . put_signed_pixels_clamped ( s - > block [ i ] , s - > dest [ dst_idx ] + off , ( i & 4 ) ? s - > uvlinesize : s - > linesize ) ;
if ( v - > pq > = 9 & & v - > overlap ) {
if ( v - > c_avail )
v - > vc1dsp . vc1_h_overlap ( s - > dest [ dst_idx ] + off , i & 4 ? s - > uvlinesize : s - > linesize ) ;
@ -2497,7 +2493,7 @@ static void vc1_decode_b_mb(VC1Context *v)
{
MpegEncContext * s = & v - > s ;
GetBitContext * gb = & s - > gb ;
int i ;
int i , j ;
int mb_pos = s - > mb_x + s - > mb_y * s - > mb_stride ;
int cbp = 0 ; /* cbp decoding stuff */
int mqdiff , mquant ; /* MB quantization */
@ -2510,7 +2506,6 @@ static void vc1_decode_b_mb(VC1Context *v)
int skipped , direct ;
int dmv_x [ 2 ] , dmv_y [ 2 ] ;
int bmvtype = BMV_TYPE_BACKWARD ;
vc1_idct_func idct8x8_fn ;
mquant = v - > pq ; /* Loosy initialization */
s - > mb_intra = 0 ;
@ -2608,7 +2603,6 @@ static void vc1_decode_b_mb(VC1Context *v)
}
}
dst_idx = 0 ;
idct8x8_fn = v - > vc1dsp . vc1_inv_trans_8x8_put_signed [ ! ! v - > rangeredfrm ] ;
for ( i = 0 ; i < 6 ; i + + )
{
s - > dc_val [ 0 ] [ s - > block_index [ i ] ] = 0 ;
@ -2626,9 +2620,9 @@ static void vc1_decode_b_mb(VC1Context *v)
vc1_decode_intra_block ( v , s - > block [ i ] , i , val , mquant , ( i & 4 ) ? v - > codingset2 : v - > codingset ) ;
if ( ( i > 3 ) & & ( s - > flags & CODEC_FLAG_GRAY ) ) continue ;
idct8x8_fn ( s - > dest [ dst_idx ] + off ,
i & 4 ? s - > uvlinesize : s - > linesize ,
s - > block [ i ] ) ;
v - > vc1dsp . vc1_inv_trans_8x8 ( s - > block [ i ] ) ;
if ( v - > rangeredfrm ) for ( j = 0 ; j < 64 ; j + + ) s - > block [ i ] [ j ] < < = 1 ;
s - > dsp . put_signed_pixels_clamped ( s - > block [ i ] , s - > dest [ dst_idx ] + off , i & 4 ? s - > uvlinesize : s - > linesize ) ;
} else if ( val ) {
vc1_decode_p_block ( v , s - > block [ i ] , i , mquant , ttmb , first_block , s - > dest [ dst_idx ] + off , ( i & 4 ) ? s - > uvlinesize : s - > linesize , ( i & 4 ) & & ( s - > flags & CODEC_FLAG_GRAY ) , NULL ) ;
if ( ! v - > ttmbf & & ttmb < 8 ) ttmb = - 1 ;
@ -2641,12 +2635,11 @@ static void vc1_decode_b_mb(VC1Context *v)
*/
static void vc1_decode_i_blocks ( VC1Context * v )
{
int k ;
int k , j ;
MpegEncContext * s = & v - > s ;
int cbp , val ;
uint8_t * coded_val ;
int mb_pos ;
vc1_idct_func idct8x8_fn ;
/* select codingmode used for VLC tables selection */
switch ( v - > y_ac_table_index ) {
@ -2681,10 +2674,6 @@ static void vc1_decode_i_blocks(VC1Context *v)
s - > mb_x = s - > mb_y = 0 ;
s - > mb_intra = 1 ;
s - > first_slice_line = 1 ;
if ( v - > pq > = 9 & & v - > overlap ) {
idct8x8_fn = v - > vc1dsp . vc1_inv_trans_8x8_put_signed [ ! ! v - > rangeredfrm ] ;
} else
idct8x8_fn = v - > vc1dsp . vc1_inv_trans_8x8_put [ ! ! v - > rangeredfrm ] ;
for ( s - > mb_y = 0 ; s - > mb_y < s - > mb_height ; s - > mb_y + + ) {
s - > mb_x = 0 ;
ff_init_block_index ( s ) ;
@ -2721,9 +2710,14 @@ static void vc1_decode_i_blocks(VC1Context *v)
vc1_decode_i_block ( v , s - > block [ k ] , k , val , ( k < 4 ) ? v - > codingset : v - > codingset2 ) ;
if ( k > 3 & & ( s - > flags & CODEC_FLAG_GRAY ) ) continue ;
idct8x8_fn ( dst [ k ] ,
k & 4 ? s - > uvlinesize : s - > linesize ,
s - > block [ k ] ) ;
v - > vc1dsp . vc1_inv_trans_8x8 ( s - > block [ k ] ) ;
if ( v - > pq > = 9 & & v - > overlap ) {
if ( v - > rangeredfrm ) for ( j = 0 ; j < 64 ; j + + ) s - > block [ k ] [ j ] < < = 1 ;
s - > dsp . put_signed_pixels_clamped ( s - > block [ k ] , dst [ k ] , k & 4 ? s - > uvlinesize : s - > linesize ) ;
} else {
if ( v - > rangeredfrm ) for ( j = 0 ; j < 64 ; j + + ) s - > block [ k ] [ j ] = ( s - > block [ k ] [ j ] - 64 ) < < 1 ;
s - > dsp . put_pixels_clamped ( s - > block [ k ] , dst [ k ] , k & 4 ? s - > uvlinesize : s - > linesize ) ;
}
}
if ( v - > pq > = 9 & & v - > overlap ) {
@ -2781,7 +2775,6 @@ static void vc1_decode_i_blocks_adv(VC1Context *v, int mby_start, int mby_end)
int mqdiff ;
int overlap ;
GetBitContext * gb = & s - > gb ;
vc1_idct_func idct8x8_fn ;
/* select codingmode used for VLC tables selection */
switch ( v - > y_ac_table_index ) {
@ -2819,7 +2812,6 @@ static void vc1_decode_i_blocks_adv(VC1Context *v, int mby_start, int mby_end)
memset ( & s - > coded_block [ s - > block_index [ 0 ] - s - > b8_stride ] , 0 ,
s - > b8_stride * sizeof ( * s - > coded_block ) ) ;
}
idct8x8_fn = v - > vc1dsp . vc1_inv_trans_8x8_put_signed [ 0 ] ;
for ( ; s - > mb_y < mby_end ; s - > mb_y + + ) {
s - > mb_x = 0 ;
ff_init_block_index ( s ) ;
@ -2876,9 +2868,9 @@ static void vc1_decode_i_blocks_adv(VC1Context *v, int mby_start, int mby_end)
vc1_decode_i_block_adv ( v , s - > block [ k ] , k , val , ( k < 4 ) ? v - > codingset : v - > codingset2 , mquant ) ;
if ( k > 3 & & ( s - > flags & CODEC_FLAG_GRAY ) ) continue ;
idct8x8_fn ( dst [ k ] ,
k & 4 ? s - > uvlinesize : s - > linesize ,
s - > block [ k ] ) ;
v - > vc1dsp . vc1_inv_trans_8x8 ( s - > block [ k ] ) ;
s - > dsp . put_signed_pixels_clamped ( s - > block [ k ] , dst [ k ] ,
k & 4 ? s - > uvlinesize : s - > linesize ) ;
}
if ( overlap ) {