Simplify left_xy content for the loop filter, this also makes it closer to
authorMichael Niedermayer <michaelni@gmx.at>
Tue, 26 Jan 2010 14:55:19 +0000 (14:55 +0000)
committerMichael Niedermayer <michaelni@gmx.at>
Tue, 26 Jan 2010 14:55:19 +0000 (14:55 +0000)
what is needed and its faster too.

Originally committed as revision 21458 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/h264.h

index 49608fb..fd1272a 100644 (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];
                 }
+                }
             }
         }
     }