diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2008-08-04 11:19:54 +0000 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2008-08-04 11:19:54 +0000 |
commit | 45260d4faad24fdbd1f75e2f203d8969edb61978 (patch) | |
tree | 14489d05d89ec8bec0ec20832bbd9658d9349099 | |
parent | 4c0d57bdef599c3e70e06208269f8586a05c301e (diff) | |
download | ffmpeg-45260d4faad24fdbd1f75e2f203d8969edb61978.tar.gz |
Use ref_poc and ref_count from the correct field.
Fixes at least
MR8_BT_B.h264
Originally committed as revision 14537 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r-- | libavcodec/h264.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/libavcodec/h264.c b/libavcodec/h264.c index b90db49b19..7000290119 100644 --- a/libavcodec/h264.c +++ b/libavcodec/h264.c @@ -901,6 +901,7 @@ static inline void direct_ref_list_init(H264Context * const h){ Picture * const cur = s->current_picture_ptr; int list, i, j; int sidx= s->picture_structure&1; + int ref1sidx= ref1->reference&1; if(cur->pict_type == FF_I_TYPE) cur->ref_count[sidx][0] = 0; if(cur->pict_type != FF_B_TYPE) @@ -913,8 +914,8 @@ static inline void direct_ref_list_init(H264Context * const h){ if(cur->pict_type != FF_B_TYPE || h->direct_spatial_mv_pred) return; for(list=0; list<2; list++){ - for(i=0; i<ref1->ref_count[sidx][list]; i++){ - const int poc = ref1->ref_poc[sidx][list][i]; + for(i=0; i<ref1->ref_count[ref1sidx][list]; i++){ + const int poc = ref1->ref_poc[ref1sidx][list][i]; h->map_col_to_list0[list][i] = 0; /* bogus; fills in for missing frames */ for(j=0; j<h->ref_count[list]; j++) if(h->ref_list[list][j].poc == poc){ @@ -925,7 +926,7 @@ static inline void direct_ref_list_init(H264Context * const h){ } if(FRAME_MBAFF){ for(list=0; list<2; list++){ - for(i=0; i<ref1->ref_count[sidx][list]; i++){ + for(i=0; i<ref1->ref_count[ref1sidx][list]; i++){ j = h->map_col_to_list0[list][i]; h->map_col_to_list0_field[list][2*i] = 2*j; h->map_col_to_list0_field[list][2*i+1] = 2*j+1; |