mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-06-27 11:03:26 +08:00
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) Originally committed as revision 21342 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
@ -594,18 +594,20 @@ static av_always_inline void filter_mb_dir(H264Context *h, int mb_x, int mb_y, u
|
||||
if( dir == 0 ) {
|
||||
filter_mb_edgev( h, &img_y[4*edge], linesize, bS, qp );
|
||||
if( (edge&1) == 0 ) {
|
||||
filter_mb_edgecv( h, &img_cb[2*edge], uvlinesize, bS,
|
||||
( h->chroma_qp[0] + get_chroma_qp( h, 0, s->current_picture.qscale_table[mbn_xy] ) + 1 ) >> 1);
|
||||
filter_mb_edgecv( h, &img_cr[2*edge], uvlinesize, bS,
|
||||
( h->chroma_qp[1] + get_chroma_qp( h, 1, s->current_picture.qscale_table[mbn_xy] ) + 1 ) >> 1);
|
||||
int qp= ( h->chroma_qp[0] + get_chroma_qp( h, 0, s->current_picture.qscale_table[mbn_xy] ) + 1 ) >> 1;
|
||||
filter_mb_edgecv( h, &img_cb[2*edge], uvlinesize, bS, qp);
|
||||
if(h->pps.chroma_qp_diff)
|
||||
qp= ( h->chroma_qp[1] + get_chroma_qp( h, 1, s->current_picture.qscale_table[mbn_xy] ) + 1 ) >> 1;
|
||||
filter_mb_edgecv( h, &img_cr[2*edge], uvlinesize, bS, qp);
|
||||
}
|
||||
} else {
|
||||
filter_mb_edgeh( h, &img_y[4*edge*linesize], linesize, bS, qp );
|
||||
if( (edge&1) == 0 ) {
|
||||
filter_mb_edgech( h, &img_cb[2*edge*uvlinesize], uvlinesize, bS,
|
||||
( h->chroma_qp[0] + get_chroma_qp( h, 0, s->current_picture.qscale_table[mbn_xy] ) + 1 ) >> 1);
|
||||
filter_mb_edgech( h, &img_cr[2*edge*uvlinesize], uvlinesize, bS,
|
||||
( h->chroma_qp[1] + get_chroma_qp( h, 1, s->current_picture.qscale_table[mbn_xy] ) + 1 ) >> 1);
|
||||
int qp= ( h->chroma_qp[0] + get_chroma_qp( h, 0, s->current_picture.qscale_table[mbn_xy] ) + 1 ) >> 1;
|
||||
filter_mb_edgech( h, &img_cb[2*edge*uvlinesize], uvlinesize, bS, qp);
|
||||
if(h->pps.chroma_qp_diff)
|
||||
qp= ( h->chroma_qp[1] + get_chroma_qp( h, 1, s->current_picture.qscale_table[mbn_xy] ) + 1 ) >> 1;
|
||||
filter_mb_edgech( h, &img_cr[2*edge*uvlinesize], uvlinesize, bS, qp);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user