# HG changeset patch # User michael # Date 1266076669 0 # Node ID 8805efb4c3fdb061d8846735e2fab51ec92ef0ed # Parent 0f7dcfca7b2eb9bf629e4e4ccf27b8794b1a05cd Move setting MB_TYPE_L0L1 for direct MBs up, this is simpler. diff -r 0f7dcfca7b2e -r 8805efb4c3fd h264.h --- a/h264.h Sat Feb 13 15:30:27 2010 +0000 +++ b/h264.h Sat Feb 13 15:57:49 2010 +0000 @@ -950,7 +950,7 @@ if(IS_INTER(mb_type) || (IS_DIRECT(mb_type) && h->direct_spatial_mv_pred)){ int list; for(list=0; listlist_count; list++){ - if(!USES_LIST(mb_type, list) && !IS_DIRECT(mb_type)){ + if(!USES_LIST(mb_type, list)){ /*if(!h->mv_cache_clean[list]){ memset(h->mv_cache [list], 0, 8*5*2*sizeof(int16_t)); //FIXME clean only input? clean at all? memset(h->ref_cache[list], PART_NOT_AVAILABLE, 8*5*sizeof(int8_t)); @@ -1449,7 +1449,7 @@ if( h->slice_type_nos == FF_B_TYPE ) { // just for fill_caches. pred_direct_motion will set the real mb_type - mb_type|= MB_TYPE_P0L0|MB_TYPE_P0L1|MB_TYPE_DIRECT2|MB_TYPE_SKIP; + mb_type|= MB_TYPE_L0L1|MB_TYPE_DIRECT2|MB_TYPE_SKIP; fill_decode_caches(h, mb_type); //FIXME check what is needed and what not ... ff_h264_pred_direct_motion(h, &mb_type); diff -r 0f7dcfca7b2e -r 8805efb4c3fd h264_direct.c --- a/h264_direct.c Sat Feb 13 15:30:27 2010 +0000 +++ b/h264_direct.c Sat Feb 13 15:57:49 2010 +0000 @@ -159,7 +159,6 @@ #define MB_TYPE_16x16_OR_INTRA (MB_TYPE_16x16|MB_TYPE_INTRA4x4|MB_TYPE_INTRA16x16|MB_TYPE_INTRA_PCM) - *mb_type |= MB_TYPE_L0L1; /* ref = min(neighbors) */ for(list=0; list<2; list++){ diff -r 0f7dcfca7b2e -r 8805efb4c3fd h264data.h --- a/h264data.h Sat Feb 13 15:30:27 2010 +0000 +++ b/h264data.h Sat Feb 13 15:57:49 2010 +0000 @@ -197,7 +197,7 @@ }; static const PMbInfo b_mb_type_info[23]={ -{MB_TYPE_DIRECT2 , 1, }, +{MB_TYPE_DIRECT2|MB_TYPE_L0L1 , 1, }, {MB_TYPE_16x16|MB_TYPE_P0L0 , 1, }, {MB_TYPE_16x16 |MB_TYPE_P0L1 , 1, }, {MB_TYPE_16x16|MB_TYPE_P0L0|MB_TYPE_P0L1 , 1, },