Also skip direct/mvd_cache init for skiped blocks.
authorMichael Niedermayer <michaelni@gmx.at>
Sat, 13 Feb 2010 19:39:18 +0000 (19:39 +0000)
committerMichael Niedermayer <michaelni@gmx.at>
Sat, 13 Feb 2010 19:39:18 +0000 (19:39 +0000)
Odd thing is i thought ive tryed this already and it failed previously.

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

libavcodec/h264.h

index 4ba8ecb..68c26af 100644 (file)
@@ -1015,7 +1015,7 @@ static void fill_decode_caches(H264Context *h, int mb_type){
             if((IS_SKIP(mb_type) || IS_DIRECT(mb_type)) && !FRAME_MBAFF)
                 continue;
 
             if((IS_SKIP(mb_type) || IS_DIRECT(mb_type)) && !FRAME_MBAFF)
                 continue;
 
-            if(!IS_DIRECT(mb_type)) {
+            if(!(mb_type&(MB_TYPE_SKIP|MB_TYPE_DIRECT2))) {
             h->ref_cache[list][scan8[5 ]+1] =
             h->ref_cache[list][scan8[7 ]+1] =
             h->ref_cache[list][scan8[13]+1] =  //FIXME remove past 3 (init somewhere else)
             h->ref_cache[list][scan8[5 ]+1] =
             h->ref_cache[list][scan8[7 ]+1] =
             h->ref_cache[list][scan8[13]+1] =  //FIXME remove past 3 (init somewhere else)