Mercurial > libavcodec.hg
comparison h264_loopfilter.c @ 11087:1b8e11679883 libavcodec
Fix CAVLC+8x8DCT+MBAFF loopfiltering.
Fixes issue1250
author | michael |
---|---|
date | Sun, 07 Feb 2010 02:00:00 +0000 |
parents | 86ec27e828b5 |
children | d9725977b699 |
comparison
equal
deleted
inserted
replaced
11086:d4222f5b6dea | 11087:1b8e11679883 |
---|---|
477 DECLARE_ALIGNED_8(int16_t, bS)[4]; | 477 DECLARE_ALIGNED_8(int16_t, bS)[4]; |
478 int qp; | 478 int qp; |
479 if( IS_INTRA(mb_type|s->current_picture.mb_type[mbn_xy]) ) { | 479 if( IS_INTRA(mb_type|s->current_picture.mb_type[mbn_xy]) ) { |
480 *(uint64_t*)bS= 0x0003000300030003ULL; | 480 *(uint64_t*)bS= 0x0003000300030003ULL; |
481 } else { | 481 } else { |
482 const uint8_t *mbn_nnz = h->non_zero_count[mbn_xy] + 4+3*8; //FIXME 8x8dct? | 482 if(!CABAC && IS_8x8DCT(s->current_picture.mb_type[mbn_xy])){ |
483 bS[0]= 1+((h->cbp_table[mbn_xy] & 4)||h->non_zero_count_cache[scan8[0]+0]); | |
484 bS[1]= 1+((h->cbp_table[mbn_xy] & 4)||h->non_zero_count_cache[scan8[0]+1]); | |
485 bS[2]= 1+((h->cbp_table[mbn_xy] & 8)||h->non_zero_count_cache[scan8[0]+2]); | |
486 bS[3]= 1+((h->cbp_table[mbn_xy] & 8)||h->non_zero_count_cache[scan8[0]+3]); | |
487 }else{ | |
488 const uint8_t *mbn_nnz = h->non_zero_count[mbn_xy] + 4+3*8; | |
483 int i; | 489 int i; |
484 for( i = 0; i < 4; i++ ) { | 490 for( i = 0; i < 4; i++ ) { |
485 bS[i] = 1 + !!(h->non_zero_count_cache[scan8[0]+i] | mbn_nnz[i]); | 491 bS[i] = 1 + !!(h->non_zero_count_cache[scan8[0]+i] | mbn_nnz[i]); |
492 } | |
486 } | 493 } |
487 } | 494 } |
488 // Do not use s->qscale as luma quantizer because it has not the same | 495 // Do not use s->qscale as luma quantizer because it has not the same |
489 // value in IPCM macroblocks. | 496 // value in IPCM macroblocks. |
490 qp = ( s->current_picture.qscale_table[mb_xy] + s->current_picture.qscale_table[mbn_xy] + 1 ) >> 1; | 497 qp = ( s->current_picture.qscale_table[mb_xy] + s->current_picture.qscale_table[mbn_xy] + 1 ) >> 1; |