# HG changeset patch # User michael # Date 1264258256 0 # Node ID eb5f0ccb6a98253f43f47cdf4e224baf32ce8c22 # Parent 2e8fbfc278d5f9eefaf3376ccee4dadfa6edb55c Optimize filter_mb_mbaff_edge*() diff -r 2e8fbfc278d5 -r eb5f0ccb6a98 h264_loopfilter.c --- a/h264_loopfilter.c Sat Jan 23 13:54:02 2010 +0000 +++ b/h264_loopfilter.c Sat Jan 23 14:50:56 2010 +0000 @@ -136,20 +136,16 @@ static void filter_mb_mbaff_edgev( H264Context *h, uint8_t *pix, int stride, int16_t bS[4], int bsi, int qp ) { int i; + int index_a = qp + h->slice_alpha_c0_offset; + int alpha = (alpha_table+52)[index_a]; + int beta = (beta_table+52)[qp + h->slice_beta_offset]; for( i = 0; i < 8; i++, pix += stride) { - int index_a; - int alpha; - int beta; const int bS_index = (i >> 1) * bsi; if( bS[bS_index] == 0 ) { continue; } - index_a = qp + h->slice_alpha_c0_offset; - alpha = (alpha_table+52)[index_a]; - beta = (beta_table+52)[qp + h->slice_beta_offset]; - if( bS[bS_index] < 4 ) { const int tc0 = (tc0_table+52)[index_a][bS[bS_index]]; const int p0 = pix[-1]; @@ -166,10 +162,12 @@ int i_delta; if( FFABS( p2 - p0 ) < beta ) { + if(tc0) pix[-2] = p1 + av_clip( ( p2 + ( ( p0 + q0 + 1 ) >> 1 ) - ( p1 << 1 ) ) >> 1, -tc0, tc0 ); tc++; } if( FFABS( q2 - q0 ) < beta ) { + if(tc0) pix[1] = q1 + av_clip( ( q2 + ( ( p0 + q0 + 1 ) >> 1 ) - ( q1 << 1 ) ) >> 1, -tc0, tc0 ); tc++; } @@ -227,20 +225,16 @@ } static void filter_mb_mbaff_edgecv( H264Context *h, uint8_t *pix, int stride, int16_t bS[4], int bsi, int qp ) { int i; + int index_a = qp + h->slice_alpha_c0_offset; + int alpha = (alpha_table+52)[index_a]; + int beta = (beta_table+52)[qp + h->slice_beta_offset]; for( i = 0; i < 4; i++, pix += stride) { - int index_a; - int alpha; - int beta; const int bS_index = i*bsi; if( bS[bS_index] == 0 ) { continue; } - index_a = qp + h->slice_alpha_c0_offset; - alpha = (alpha_table+52)[index_a]; - beta = (beta_table+52)[qp + h->slice_beta_offset]; - if( bS[bS_index] < 4 ) { const int tc = (tc0_table+52)[index_a][bS[bS_index]] + 1; const int p0 = pix[-1];