@ -227,7 +227,7 @@ static void vc1_put_blocks_clamped(VC1Context *v, int put_signed)
* @ param _dmv_y Vertical differential for decoded MV
*/
# define GET_MVDATA(_dmv_x, _dmv_y) \
index = 1 + get_vlc2 ( gb , ff_vc1_mv_diff_vlc [ s - > mv_table_index ] . table , \
index = 1 + get_vlc2 ( gb , ff_vc1_mv_diff_vlc [ s - > mv_table_index ] , \
VC1_MV_DIFF_VLC_BITS , 2 ) ; \
if ( index > 36 ) { \
mb_has_coeffs = 1 ; \
@ -282,7 +282,7 @@ static av_always_inline void get_mvdata_interlaced(VC1Context *v, int *dmv_x,
}
extend_x = v - > dmvrange & 1 ;
extend_y = ( v - > dmvrange > > 1 ) & 1 ;
index = get_vlc2 ( gb , v - > imv_vlc - > table , bits , 3 ) ;
index = get_vlc2 ( gb , v - > imv_vlc , bits , 3 ) ;
if ( index = = esc ) {
* dmv_x = get_bits ( gb , v - > k_x ) ;
* dmv_y = get_bits ( gb , v - > k_y ) ;
@ -519,7 +519,7 @@ static int vc1_decode_ac_coeff(VC1Context *v, int *last, int *skip,
GetBitContext * gb = & v - > s . gb ;
int index , run , level , lst , sign ;
index = get_vlc2 ( gb , ff_vc1_ac_coeff_table [ codingset ] . table , AC_VLC_BITS , 3 ) ;
index = get_vlc2 ( gb , ff_vc1_ac_coeff_table [ codingset ] , AC_VLC_BITS , 3 ) ;
if ( index < 0 )
return index ;
if ( index ! = ff_vc1_ac_sizes [ codingset ] - 1 ) {
@ -530,7 +530,7 @@ static int vc1_decode_ac_coeff(VC1Context *v, int *last, int *skip,
} else {
int escape = decode210 ( gb ) ;
if ( escape ! = 2 ) {
index = get_vlc2 ( gb , ff_vc1_ac_coeff_table [ codingset ] . table , AC_VLC_BITS , 3 ) ;
index = get_vlc2 ( gb , ff_vc1_ac_coeff_table [ codingset ] , AC_VLC_BITS , 3 ) ;
if ( index > = ff_vc1_ac_sizes [ codingset ] - 1U )
return AVERROR_INVALIDDATA ;
run = vc1_index_decode_table [ codingset ] [ index ] [ 0 ] ;
@ -1124,10 +1124,10 @@ static int vc1_decode_p_block(VC1Context *v, int16_t block[64], int n,
s - > bdsp . clear_block ( block ) ;
if ( ttmb = = - 1 ) {
ttblk = ff_vc1_ttblk_to_tt [ v - > tt_index ] [ get_vlc2 ( gb , ff_vc1_ttblk_vlc [ v - > tt_index ] . table , VC1_TTBLK_VLC_BITS , 1 ) ] ;
ttblk = ff_vc1_ttblk_to_tt [ v - > tt_index ] [ get_vlc2 ( gb , ff_vc1_ttblk_vlc [ v - > tt_index ] , VC1_TTBLK_VLC_BITS , 1 ) ] ;
}
if ( ttblk = = TT_4X4 ) {
subblkpat = ~ ( get_vlc2 ( gb , ff_vc1_subblkpat_vlc [ v - > tt_index ] . table , VC1_SUBBLKPAT_VLC_BITS , 1 ) + 1 ) ;
subblkpat = ~ ( get_vlc2 ( gb , ff_vc1_subblkpat_vlc [ v - > tt_index ] , VC1_SUBBLKPAT_VLC_BITS , 1 ) + 1 ) ;
}
if ( ( ttblk ! = TT_8X8 & & ttblk ! = TT_4X4 )
& & ( ( v - > ttmbf | | ( ttmb ! = - 1 & & ( ttmb & 8 ) & & ! first_block ) )
@ -1328,7 +1328,7 @@ static int vc1_decode_p_mb(VC1Context *v)
} else if ( mb_has_coeffs ) {
if ( s - > mb_intra )
s - > ac_pred = get_bits1 ( gb ) ;
cbp = get_vlc2 ( & v - > s . gb , v - > cbpcy_vlc - > table , VC1_CBPCY_P_VLC_BITS , 2 ) ;
cbp = get_vlc2 ( & v - > s . gb , v - > cbpcy_vlc , VC1_CBPCY_P_VLC_BITS , 2 ) ;
GET_MQUANT ( ) ;
} else {
mquant = v - > pq ;
@ -1337,7 +1337,7 @@ static int vc1_decode_p_mb(VC1Context *v)
s - > current_picture . qscale_table [ mb_pos ] = mquant ;
if ( ! v - > ttmbf & & ! s - > mb_intra & & mb_has_coeffs )
ttmb = get_vlc2 ( gb , ff_vc1_ttmb_vlc [ v - > tt_index ] . table ,
ttmb = get_vlc2 ( gb , ff_vc1_ttmb_vlc [ v - > tt_index ] ,
VC1_TTMB_VLC_BITS , 2 ) ;
if ( ! s - > mb_intra ) ff_vc1_mc_1mv ( v , 0 ) ;
dst_idx = 0 ;
@ -1393,7 +1393,7 @@ static int vc1_decode_p_mb(VC1Context *v)
int intra_count = 0 , coded_inter = 0 ;
int is_intra [ 6 ] , is_coded [ 6 ] ;
/* Get CBPCY */
cbp = get_vlc2 ( & v - > s . gb , v - > cbpcy_vlc - > table , VC1_CBPCY_P_VLC_BITS , 2 ) ;
cbp = get_vlc2 ( & v - > s . gb , v - > cbpcy_vlc , VC1_CBPCY_P_VLC_BITS , 2 ) ;
for ( i = 0 ; i < 6 ; i + + ) {
val = ( ( cbp > > ( 5 - i ) ) & 1 ) ;
s - > dc_val [ 0 ] [ s - > block_index [ i ] ] = 0 ;
@ -1445,7 +1445,7 @@ static int vc1_decode_p_mb(VC1Context *v)
s - > ac_pred = 0 ;
}
if ( ! v - > ttmbf & & coded_inter )
ttmb = get_vlc2 ( gb , ff_vc1_ttmb_vlc [ v - > tt_index ] . table , VC1_TTMB_VLC_BITS , 2 ) ;
ttmb = get_vlc2 ( gb , ff_vc1_ttmb_vlc [ v - > tt_index ] , VC1_TTMB_VLC_BITS , 2 ) ;
for ( i = 0 ; i < 6 ; i + + ) {
dst_idx + = i > > 2 ;
off = ( i & 4 ) ? 0 : ( ( i & 1 ) * 8 + ( i & 2 ) * 4 * s - > linesize ) ;
@ -1539,9 +1539,9 @@ static int vc1_decode_p_mb_intfr(VC1Context *v)
skipped = v - > s . mbskip_table [ mb_pos ] ;
if ( ! skipped ) {
if ( v - > fourmvswitch )
idx_mbmode = get_vlc2 ( gb , v - > mbmode_vlc - > table , VC1_INTFR_4MV_MBMODE_VLC_BITS , 2 ) ; // try getting this done
idx_mbmode = get_vlc2 ( gb , v - > mbmode_vlc , VC1_INTFR_4MV_MBMODE_VLC_BITS , 2 ) ; // try getting this done
else
idx_mbmode = get_vlc2 ( gb , v - > mbmode_vlc - > table , VC1_INTFR_NON4MV_MBMODE_VLC_BITS , 2 ) ; // in a single line
idx_mbmode = get_vlc2 ( gb , v - > mbmode_vlc , VC1_INTFR_NON4MV_MBMODE_VLC_BITS , 2 ) ; // in a single line
switch ( ff_vc1_mbmode_intfrp [ v - > fourmvswitch ] [ idx_mbmode ] [ 0 ] ) {
/* store the motion vector type in a flag (useful later) */
case MV_PMODE_INTFR_4MV :
@ -1583,7 +1583,7 @@ static int vc1_decode_p_mb_intfr(VC1Context *v)
fieldtx = v - > fieldtx_plane [ mb_pos ] = get_bits1 ( gb ) ;
mb_has_coeffs = get_bits1 ( gb ) ;
if ( mb_has_coeffs )
cbp = 1 + get_vlc2 ( & v - > s . gb , v - > cbpcy_vlc - > table , VC1_CBPCY_P_VLC_BITS , 2 ) ;
cbp = 1 + get_vlc2 ( & v - > s . gb , v - > cbpcy_vlc , VC1_CBPCY_P_VLC_BITS , 2 ) ;
v - > s . ac_pred = v - > acpred_plane [ mb_pos ] = get_bits1 ( gb ) ;
GET_MQUANT ( ) ;
s - > current_picture . qscale_table [ mb_pos ] = mquant ;
@ -1617,13 +1617,13 @@ static int vc1_decode_p_mb_intfr(VC1Context *v)
} else { // inter MB
mb_has_coeffs = ff_vc1_mbmode_intfrp [ v - > fourmvswitch ] [ idx_mbmode ] [ 3 ] ;
if ( mb_has_coeffs )
cbp = 1 + get_vlc2 ( & v - > s . gb , v - > cbpcy_vlc - > table , VC1_CBPCY_P_VLC_BITS , 2 ) ;
cbp = 1 + get_vlc2 ( & v - > s . gb , v - > cbpcy_vlc , VC1_CBPCY_P_VLC_BITS , 2 ) ;
if ( ff_vc1_mbmode_intfrp [ v - > fourmvswitch ] [ idx_mbmode ] [ 0 ] = = MV_PMODE_INTFR_2MV_FIELD ) {
v - > twomvbp = get_vlc2 ( gb , v - > twomvbp_vlc - > table , VC1_2MV_BLOCK_PATTERN_VLC_BITS , 1 ) ;
v - > twomvbp = get_vlc2 ( gb , v - > twomvbp_vlc , VC1_2MV_BLOCK_PATTERN_VLC_BITS , 1 ) ;
} else {
if ( ( ff_vc1_mbmode_intfrp [ v - > fourmvswitch ] [ idx_mbmode ] [ 0 ] = = MV_PMODE_INTFR_4MV )
| | ( ff_vc1_mbmode_intfrp [ v - > fourmvswitch ] [ idx_mbmode ] [ 0 ] = = MV_PMODE_INTFR_4MV_FIELD ) ) {
v - > fourmvbp = get_vlc2 ( gb , v - > fourmvbp_vlc - > table , VC1_4MV_BLOCK_PATTERN_VLC_BITS , 1 ) ;
v - > fourmvbp = get_vlc2 ( gb , v - > fourmvbp_vlc , VC1_4MV_BLOCK_PATTERN_VLC_BITS , 1 ) ;
}
}
s - > mb_intra = v - > is_intra [ s - > mb_x ] = 0 ;
@ -1672,7 +1672,7 @@ static int vc1_decode_p_mb_intfr(VC1Context *v)
GET_MQUANT ( ) ; // p. 227
s - > current_picture . qscale_table [ mb_pos ] = mquant ;
if ( ! v - > ttmbf & & cbp )
ttmb = get_vlc2 ( gb , ff_vc1_ttmb_vlc [ v - > tt_index ] . table , VC1_TTMB_VLC_BITS , 2 ) ;
ttmb = get_vlc2 ( gb , ff_vc1_ttmb_vlc [ v - > tt_index ] , VC1_TTMB_VLC_BITS , 2 ) ;
for ( i = 0 ; i < 6 ; i + + ) {
s - > dc_val [ 0 ] [ s - > block_index [ i ] ] = 0 ;
dst_idx + = i > > 2 ;
@ -1742,7 +1742,7 @@ static int vc1_decode_p_mb_intfi(VC1Context *v)
mquant = v - > pq ; /* Lossy initialization */
idx_mbmode = get_vlc2 ( gb , v - > mbmode_vlc - > table , VC1_IF_MBMODE_VLC_BITS , 2 ) ;
idx_mbmode = get_vlc2 ( gb , v - > mbmode_vlc , VC1_IF_MBMODE_VLC_BITS , 2 ) ;
if ( idx_mbmode < = 1 ) { // intra MB
v - > is_intra [ s - > mb_x ] = 0x3f ; // Set the bitfield to all 1.
s - > mb_intra = 1 ;
@ -1757,7 +1757,7 @@ static int vc1_decode_p_mb_intfi(VC1Context *v)
v - > s . ac_pred = v - > acpred_plane [ mb_pos ] = get_bits1 ( gb ) ;
mb_has_coeffs = idx_mbmode & 1 ;
if ( mb_has_coeffs )
cbp = 1 + get_vlc2 ( & v - > s . gb , v - > cbpcy_vlc - > table , VC1_ICBPCY_VLC_BITS , 2 ) ;
cbp = 1 + get_vlc2 ( & v - > s . gb , v - > cbpcy_vlc , VC1_ICBPCY_VLC_BITS , 2 ) ;
dst_idx = 0 ;
for ( i = 0 ; i < 6 ; i + + ) {
v - > a_avail = v - > c_avail = 0 ;
@ -1792,7 +1792,7 @@ static int vc1_decode_p_mb_intfi(VC1Context *v)
ff_vc1_mc_1mv ( v , 0 ) ;
mb_has_coeffs = ! ( idx_mbmode & 2 ) ;
} else { // 4-MV
v - > fourmvbp = get_vlc2 ( gb , v - > fourmvbp_vlc - > table , VC1_4MV_BLOCK_PATTERN_VLC_BITS , 1 ) ;
v - > fourmvbp = get_vlc2 ( gb , v - > fourmvbp_vlc , VC1_4MV_BLOCK_PATTERN_VLC_BITS , 1 ) ;
for ( i = 0 ; i < 4 ; i + + ) {
dmv_x = dmv_y = pred_flag = 0 ;
if ( v - > fourmvbp & ( 8 > > i ) )
@ -1804,13 +1804,13 @@ static int vc1_decode_p_mb_intfi(VC1Context *v)
mb_has_coeffs = idx_mbmode & 1 ;
}
if ( mb_has_coeffs )
cbp = 1 + get_vlc2 ( & v - > s . gb , v - > cbpcy_vlc - > table , VC1_CBPCY_P_VLC_BITS , 2 ) ;
cbp = 1 + get_vlc2 ( & v - > s . gb , v - > cbpcy_vlc , VC1_CBPCY_P_VLC_BITS , 2 ) ;
if ( cbp ) {
GET_MQUANT ( ) ;
}
s - > current_picture . qscale_table [ mb_pos ] = mquant ;
if ( ! v - > ttmbf & & cbp ) {
ttmb = get_vlc2 ( gb , ff_vc1_ttmb_vlc [ v - > tt_index ] . table , VC1_TTMB_VLC_BITS , 2 ) ;
ttmb = get_vlc2 ( gb , ff_vc1_ttmb_vlc [ v - > tt_index ] , VC1_TTMB_VLC_BITS , 2 ) ;
}
dst_idx = 0 ;
for ( i = 0 ; i < 6 ; i + + ) {
@ -1914,12 +1914,12 @@ static int vc1_decode_b_mb(VC1Context *v)
return 0 ;
}
if ( direct ) {
cbp = get_vlc2 ( & v - > s . gb , v - > cbpcy_vlc - > table , VC1_CBPCY_P_VLC_BITS , 2 ) ;
cbp = get_vlc2 ( & v - > s . gb , v - > cbpcy_vlc , VC1_CBPCY_P_VLC_BITS , 2 ) ;
GET_MQUANT ( ) ;
s - > mb_intra = 0 ;
s - > current_picture . qscale_table [ mb_pos ] = mquant ;
if ( ! v - > ttmbf )
ttmb = get_vlc2 ( gb , ff_vc1_ttmb_vlc [ v - > tt_index ] . table , VC1_TTMB_VLC_BITS , 2 ) ;
ttmb = get_vlc2 ( gb , ff_vc1_ttmb_vlc [ v - > tt_index ] , VC1_TTMB_VLC_BITS , 2 ) ;
dmv_x [ 0 ] = dmv_y [ 0 ] = dmv_x [ 1 ] = dmv_y [ 1 ] = 0 ;
ff_vc1_pred_b_mv ( v , dmv_x , dmv_y , direct , bmvtype ) ;
vc1_b_mc ( v , dmv_x , dmv_y , direct , bmvtype ) ;
@ -1952,11 +1952,11 @@ static int vc1_decode_b_mb(VC1Context *v)
}
if ( s - > mb_intra )
s - > ac_pred = get_bits1 ( gb ) ;
cbp = get_vlc2 ( & v - > s . gb , v - > cbpcy_vlc - > table , VC1_CBPCY_P_VLC_BITS , 2 ) ;
cbp = get_vlc2 ( & v - > s . gb , v - > cbpcy_vlc , VC1_CBPCY_P_VLC_BITS , 2 ) ;
GET_MQUANT ( ) ;
s - > current_picture . qscale_table [ mb_pos ] = mquant ;
if ( ! v - > ttmbf & & ! s - > mb_intra & & mb_has_coeffs )
ttmb = get_vlc2 ( gb , ff_vc1_ttmb_vlc [ v - > tt_index ] . table , VC1_TTMB_VLC_BITS , 2 ) ;
ttmb = get_vlc2 ( gb , ff_vc1_ttmb_vlc [ v - > tt_index ] , VC1_TTMB_VLC_BITS , 2 ) ;
}
}
dst_idx = 0 ;
@ -2025,7 +2025,7 @@ static int vc1_decode_b_mb_intfi(VC1Context *v)
mquant = v - > pq ; /* Lossy initialization */
s - > mb_intra = 0 ;
idx_mbmode = get_vlc2 ( gb , v - > mbmode_vlc - > table , VC1_IF_MBMODE_VLC_BITS , 2 ) ;
idx_mbmode = get_vlc2 ( gb , v - > mbmode_vlc , VC1_IF_MBMODE_VLC_BITS , 2 ) ;
if ( idx_mbmode < = 1 ) { // intra MB
v - > is_intra [ s - > mb_x ] = 0x3f ; // Set the bitfield to all 1.
s - > mb_intra = 1 ;
@ -2040,7 +2040,7 @@ static int vc1_decode_b_mb_intfi(VC1Context *v)
v - > s . ac_pred = v - > acpred_plane [ mb_pos ] = get_bits1 ( gb ) ;
mb_has_coeffs = idx_mbmode & 1 ;
if ( mb_has_coeffs )
cbp = 1 + get_vlc2 ( & v - > s . gb , v - > cbpcy_vlc - > table , VC1_ICBPCY_VLC_BITS , 2 ) ;
cbp = 1 + get_vlc2 ( & v - > s . gb , v - > cbpcy_vlc , VC1_ICBPCY_VLC_BITS , 2 ) ;
dst_idx = 0 ;
for ( i = 0 ; i < 6 ; i + + ) {
v - > a_avail = v - > c_avail = 0 ;
@ -2118,7 +2118,7 @@ static int vc1_decode_b_mb_intfi(VC1Context *v)
if ( fwd )
bmvtype = BMV_TYPE_FORWARD ;
v - > bmvtype = bmvtype ;
v - > fourmvbp = get_vlc2 ( gb , v - > fourmvbp_vlc - > table , VC1_4MV_BLOCK_PATTERN_VLC_BITS , 1 ) ;
v - > fourmvbp = get_vlc2 ( gb , v - > fourmvbp_vlc , VC1_4MV_BLOCK_PATTERN_VLC_BITS , 1 ) ;
for ( i = 0 ; i < 4 ; i + + ) {
dmv_x [ 0 ] = dmv_y [ 0 ] = pred_flag [ 0 ] = 0 ;
dmv_x [ 1 ] = dmv_y [ 1 ] = pred_flag [ 1 ] = 0 ;
@ -2134,13 +2134,13 @@ static int vc1_decode_b_mb_intfi(VC1Context *v)
mb_has_coeffs = idx_mbmode & 1 ;
}
if ( mb_has_coeffs )
cbp = 1 + get_vlc2 ( & v - > s . gb , v - > cbpcy_vlc - > table , VC1_CBPCY_P_VLC_BITS , 2 ) ;
cbp = 1 + get_vlc2 ( & v - > s . gb , v - > cbpcy_vlc , VC1_CBPCY_P_VLC_BITS , 2 ) ;
if ( cbp ) {
GET_MQUANT ( ) ;
}
s - > current_picture . qscale_table [ mb_pos ] = mquant ;
if ( ! v - > ttmbf & & cbp ) {
ttmb = get_vlc2 ( gb , ff_vc1_ttmb_vlc [ v - > tt_index ] . table , VC1_TTMB_VLC_BITS , 2 ) ;
ttmb = get_vlc2 ( gb , ff_vc1_ttmb_vlc [ v - > tt_index ] , VC1_TTMB_VLC_BITS , 2 ) ;
}
dst_idx = 0 ;
for ( i = 0 ; i < 6 ; i + + ) {
@ -2200,7 +2200,7 @@ static int vc1_decode_b_mb_intfr(VC1Context *v)
skipped = v - > s . mbskip_table [ mb_pos ] ;
if ( ! skipped ) {
idx_mbmode = get_vlc2 ( gb , v - > mbmode_vlc - > table , VC1_INTFR_NON4MV_MBMODE_VLC_BITS , 2 ) ;
idx_mbmode = get_vlc2 ( gb , v - > mbmode_vlc , VC1_INTFR_NON4MV_MBMODE_VLC_BITS , 2 ) ;
if ( ff_vc1_mbmode_intfrp [ 0 ] [ idx_mbmode ] [ 0 ] = = MV_PMODE_INTFR_2MV_FIELD ) {
twomv = 1 ;
v - > blk_mv_type [ s - > block_index [ 0 ] ] = 1 ;
@ -2228,7 +2228,7 @@ static int vc1_decode_b_mb_intfr(VC1Context *v)
fieldtx = v - > fieldtx_plane [ mb_pos ] = get_bits1 ( gb ) ;
mb_has_coeffs = get_bits1 ( gb ) ;
if ( mb_has_coeffs )
cbp = 1 + get_vlc2 ( & v - > s . gb , v - > cbpcy_vlc - > table , VC1_CBPCY_P_VLC_BITS , 2 ) ;
cbp = 1 + get_vlc2 ( & v - > s . gb , v - > cbpcy_vlc , VC1_CBPCY_P_VLC_BITS , 2 ) ;
v - > s . ac_pred = v - > acpred_plane [ mb_pos ] = get_bits1 ( gb ) ;
GET_MQUANT ( ) ;
s - > current_picture . qscale_table [ mb_pos ] = mquant ;
@ -2323,12 +2323,12 @@ static int vc1_decode_b_mb_intfr(VC1Context *v)
if ( ! skipped ) { // inter MB
mb_has_coeffs = ff_vc1_mbmode_intfrp [ 0 ] [ idx_mbmode ] [ 3 ] ;
if ( mb_has_coeffs )
cbp = 1 + get_vlc2 ( & v - > s . gb , v - > cbpcy_vlc - > table , VC1_CBPCY_P_VLC_BITS , 2 ) ;
cbp = 1 + get_vlc2 ( & v - > s . gb , v - > cbpcy_vlc , VC1_CBPCY_P_VLC_BITS , 2 ) ;
if ( ! direct ) {
if ( bmvtype = = BMV_TYPE_INTERPOLATED & & twomv ) {
v - > fourmvbp = get_vlc2 ( gb , v - > fourmvbp_vlc - > table , VC1_4MV_BLOCK_PATTERN_VLC_BITS , 1 ) ;
v - > fourmvbp = get_vlc2 ( gb , v - > fourmvbp_vlc , VC1_4MV_BLOCK_PATTERN_VLC_BITS , 1 ) ;
} else if ( bmvtype = = BMV_TYPE_INTERPOLATED | | twomv ) {
v - > twomvbp = get_vlc2 ( gb , v - > twomvbp_vlc - > table , VC1_2MV_BLOCK_PATTERN_VLC_BITS , 1 ) ;
v - > twomvbp = get_vlc2 ( gb , v - > twomvbp_vlc , VC1_2MV_BLOCK_PATTERN_VLC_BITS , 1 ) ;
}
}
@ -2438,7 +2438,7 @@ static int vc1_decode_b_mb_intfr(VC1Context *v)
GET_MQUANT ( ) ; // p. 227
s - > current_picture . qscale_table [ mb_pos ] = mquant ;
if ( ! v - > ttmbf & & cbp )
ttmb = get_vlc2 ( gb , ff_vc1_ttmb_vlc [ v - > tt_index ] . table , VC1_TTMB_VLC_BITS , 2 ) ;
ttmb = get_vlc2 ( gb , ff_vc1_ttmb_vlc [ v - > tt_index ] , VC1_TTMB_VLC_BITS , 2 ) ;
for ( i = 0 ; i < 6 ; i + + ) {
s - > dc_val [ 0 ] [ s - > block_index [ i ] ] = 0 ;
dst_idx + = i > > 2 ;