Set direct MB partitioning for 16x8 and 8x16 colocated MBs to the respective true...
authorMichael Niedermayer <michaelni@gmx.at>
Sun, 7 Feb 2010 17:40:22 +0000 (17:40 +0000)
committerMichael Niedermayer <michaelni@gmx.at>
Sun, 7 Feb 2010 17:40:22 +0000 (17:40 +0000)
Originally committed as revision 21675 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/h264_direct.c

index 87caf99..e2b33ce 100644 (file)
@@ -193,6 +193,9 @@ single_col:
             }else if(!is_b8x8 && (mb_type_col[0] & MB_TYPE_16x16_OR_INTRA)){
                 sub_mb_type = MB_TYPE_16x16|MB_TYPE_P0L0|MB_TYPE_P0L1|MB_TYPE_DIRECT2; /* B_SUB_8x8 */
                 *mb_type   |= MB_TYPE_16x16|MB_TYPE_P0L0|MB_TYPE_P0L1|MB_TYPE_DIRECT2; /* B_16x16 */
+            }else if(!is_b8x8 && (mb_type_col[0] & (MB_TYPE_16x8|MB_TYPE_8x16))){
+                sub_mb_type = MB_TYPE_16x16|MB_TYPE_P0L0|MB_TYPE_P0L1|MB_TYPE_DIRECT2; /* B_SUB_8x8 */
+                *mb_type   |= MB_TYPE_L0L1|MB_TYPE_DIRECT2 | (mb_type_col[0] & (MB_TYPE_16x8|MB_TYPE_8x16));
             }else{
                 sub_mb_type = MB_TYPE_16x16|MB_TYPE_P0L0|MB_TYPE_P0L1|MB_TYPE_DIRECT2; /* B_SUB_8x8 */
                 *mb_type   |= MB_TYPE_8x8|MB_TYPE_L0L1;