# HG changeset patch # User michael # Date 1217848794 0 # Node ID 82918a570d8657e4f9bddcd7cd4ff0df49818f31 # Parent 6abd94f87b4523d1b1340a7cb2e4d3799d842d5a Use ref_poc and ref_count from the correct field. Fixes at least MR8_BT_B.h264 diff -r 6abd94f87b45 -r 82918a570d86 h264.c --- a/h264.c Mon Aug 04 11:17:22 2008 +0000 +++ b/h264.c Mon Aug 04 11:19:54 2008 +0000 @@ -901,6 +901,7 @@ 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 @@ if(cur->pict_type != FF_B_TYPE || h->direct_spatial_mv_pred) return; for(list=0; list<2; list++){ - for(i=0; iref_count[sidx][list]; i++){ - const int poc = ref1->ref_poc[sidx][list][i]; + for(i=0; iref_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; jref_count[list]; j++) if(h->ref_list[list][j].poc == poc){ @@ -925,7 +926,7 @@ } if(FRAME_MBAFF){ for(list=0; list<2; list++){ - for(i=0; iref_count[sidx][list]; i++){ + for(i=0; iref_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;