Simplify left_xy content for the loop filter, this also makes it closer to

what is needed and its faster too.

Originally committed as revision 21458 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
Michael Niedermayer 2010-01-26 14:55:19 +00:00
parent d5c30c86d0
commit a715af8ff4

View File

@ -762,6 +762,10 @@ static av_always_inline int fill_caches(H264Context *h, int mb_type, int for_deb
const int curr_mb_field_flag = IS_INTERLACED(mb_type);
if(s->mb_y&1){
if (left_mb_field_flag != curr_mb_field_flag) {
if(for_deblock){
left_xy[0] = mb_xy - s->mb_stride - 1;
left_xy[1] = mb_xy - 1;
}else{
left_xy[1] = left_xy[0] = mb_xy - s->mb_stride - 1;
if (curr_mb_field_flag) {
left_xy[1] += s->mb_stride;
@ -772,6 +776,7 @@ static av_always_inline int fill_caches(H264Context *h, int mb_type, int for_deb
topleft_partition = 0;
left_block = left_block_options[1];
}
}
}
}else{
if(curr_mb_field_flag){
@ -780,6 +785,10 @@ static av_always_inline int fill_caches(H264Context *h, int mb_type, int for_deb
top_xy += s->mb_stride & (((s->current_picture.mb_type[top_xy ]>>7)&1)-1);
}
if (left_mb_field_flag != curr_mb_field_flag) {
if(for_deblock){
left_xy[0] = mb_xy - 1;
left_xy[1] = mb_xy + s->mb_stride - 1;
}else{
left_xy[1] = left_xy[0] = mb_xy - 1;
if (curr_mb_field_flag) {
left_xy[1] += s->mb_stride;
@ -787,6 +796,7 @@ static av_always_inline int fill_caches(H264Context *h, int mb_type, int for_deb
} else {
left_block = left_block_options[2];
}
}
}
}
}