comparison h264_loopfilter.c @ 10948:c80f0dfbf47d libavcodec

Only calculate the second chroma qp if it differs from the firstin the main loop filter. (a little faster for the common case where they are equal)
author michael
date Wed, 20 Jan 2010 01:49:24 +0000
parents df6bda2aa59a
children 4c9b8e3065ee
comparison
equal deleted inserted replaced
10947:df6bda2aa59a 10948:c80f0dfbf47d
592 tprintf(s->avctx, "filter mb:%d/%d dir:%d edge:%d, QPy:%d ls:%d uvls:%d", mb_x, mb_y, dir, edge, qp, linesize, uvlinesize); 592 tprintf(s->avctx, "filter mb:%d/%d dir:%d edge:%d, QPy:%d ls:%d uvls:%d", mb_x, mb_y, dir, edge, qp, linesize, uvlinesize);
593 //{ int i; for (i = 0; i < 4; i++) tprintf(s->avctx, " bS[%d]:%d", i, bS[i]); tprintf(s->avctx, "\n"); } 593 //{ int i; for (i = 0; i < 4; i++) tprintf(s->avctx, " bS[%d]:%d", i, bS[i]); tprintf(s->avctx, "\n"); }
594 if( dir == 0 ) { 594 if( dir == 0 ) {
595 filter_mb_edgev( h, &img_y[4*edge], linesize, bS, qp ); 595 filter_mb_edgev( h, &img_y[4*edge], linesize, bS, qp );
596 if( (edge&1) == 0 ) { 596 if( (edge&1) == 0 ) {
597 filter_mb_edgecv( h, &img_cb[2*edge], uvlinesize, bS, 597 int qp= ( h->chroma_qp[0] + get_chroma_qp( h, 0, s->current_picture.qscale_table[mbn_xy] ) + 1 ) >> 1;
598 ( h->chroma_qp[0] + get_chroma_qp( h, 0, s->current_picture.qscale_table[mbn_xy] ) + 1 ) >> 1); 598 filter_mb_edgecv( h, &img_cb[2*edge], uvlinesize, bS, qp);
599 filter_mb_edgecv( h, &img_cr[2*edge], uvlinesize, bS, 599 if(h->pps.chroma_qp_diff)
600 ( h->chroma_qp[1] + get_chroma_qp( h, 1, s->current_picture.qscale_table[mbn_xy] ) + 1 ) >> 1); 600 qp= ( h->chroma_qp[1] + get_chroma_qp( h, 1, s->current_picture.qscale_table[mbn_xy] ) + 1 ) >> 1;
601 filter_mb_edgecv( h, &img_cr[2*edge], uvlinesize, bS, qp);
601 } 602 }
602 } else { 603 } else {
603 filter_mb_edgeh( h, &img_y[4*edge*linesize], linesize, bS, qp ); 604 filter_mb_edgeh( h, &img_y[4*edge*linesize], linesize, bS, qp );
604 if( (edge&1) == 0 ) { 605 if( (edge&1) == 0 ) {
605 filter_mb_edgech( h, &img_cb[2*edge*uvlinesize], uvlinesize, bS, 606 int qp= ( h->chroma_qp[0] + get_chroma_qp( h, 0, s->current_picture.qscale_table[mbn_xy] ) + 1 ) >> 1;
606 ( h->chroma_qp[0] + get_chroma_qp( h, 0, s->current_picture.qscale_table[mbn_xy] ) + 1 ) >> 1); 607 filter_mb_edgech( h, &img_cb[2*edge*uvlinesize], uvlinesize, bS, qp);
607 filter_mb_edgech( h, &img_cr[2*edge*uvlinesize], uvlinesize, bS, 608 if(h->pps.chroma_qp_diff)
608 ( h->chroma_qp[1] + get_chroma_qp( h, 1, s->current_picture.qscale_table[mbn_xy] ) + 1 ) >> 1); 609 qp= ( h->chroma_qp[1] + get_chroma_qp( h, 1, s->current_picture.qscale_table[mbn_xy] ) + 1 ) >> 1;
610 filter_mb_edgech( h, &img_cr[2*edge*uvlinesize], uvlinesize, bS, qp);
609 } 611 }
610 } 612 }
611 } 613 }
612 } 614 }
613 615