summaryrefslogtreecommitdiff
path: root/libavcodec/h264_loopfilter.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2010-01-20 03:00:08 +0000
committerMichael Niedermayer <michaelni@gmx.at>2010-01-20 03:00:08 +0000
commit97775235ecad5d27987feca34afd33f8b011e1e9 (patch)
tree03d79f8424b87f1a151601e901aa26b3143e9a28 /libavcodec/h264_loopfilter.c
parent4cb93f5171cfc91a70ecf47b273b96072cba8699 (diff)
Simplify/Optimize another of the mbaff loop filter cases.
Its faster but too rarely used to make a differnce. Originally committed as revision 21344 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/h264_loopfilter.c')
-rw-r--r--libavcodec/h264_loopfilter.c15
1 files changed, 6 insertions, 9 deletions
diff --git a/libavcodec/h264_loopfilter.c b/libavcodec/h264_loopfilter.c
index fac1f5185e..1567a655b6 100644
--- a/libavcodec/h264_loopfilter.c
+++ b/libavcodec/h264_loopfilter.c
@@ -453,21 +453,18 @@ static av_always_inline void filter_mb_dir(H264Context *h, int mb_x, int mb_y, u
unsigned int tmp_linesize = 2 * linesize;
unsigned int tmp_uvlinesize = 2 * uvlinesize;
int mbn_xy = mb_xy - 2 * s->mb_stride;
- int qp;
- int i, j;
- int16_t bS[4];
+ int j;
for(j=0; j<2; j++, mbn_xy += s->mb_stride){
+ int16_t bS[4];
+ int qp;
if( IS_INTRA(mb_type|s->current_picture.mb_type[mbn_xy]) ) {
*(uint64_t*)bS= 0x0003000300030003ULL;
} else {
- const uint8_t *mbn_nnz = h->non_zero_count[mbn_xy];
+ const uint8_t *mbn_nnz = h->non_zero_count[mbn_xy] + 4+3*8;
+ int i;
for( i = 0; i < 4; i++ ) {
- if( h->non_zero_count_cache[scan8[0]+i] != 0 ||
- mbn_nnz[i+4+3*8] != 0 )
- bS[i] = 2;
- else
- bS[i] = 1;
+ bS[i] = 1 + !!(h->non_zero_count_cache[scan8[0]+i] | mbn_nnz[i]);
}
}
// Do not use s->qscale as luma quantizer because it has not the same