changeset 7480:82918a570d86 libavcodec

Use ref_poc and ref_count from the correct field. Fixes at least MR8_BT_B.h264
author michael
date Mon, 04 Aug 2008 11:19:54 +0000
parents 6abd94f87b45
children ca205cc57734
files h264.c
diffstat 1 files changed, 4 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- 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; 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 @@
     }
     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;