h264: move initialising the explicit pred weight table for MBAFF
[ffmpeg.git] / libavcodec / h264_parse.c
index 7211c9d..052e8e4 100644 (file)
@@ -26,7 +26,7 @@ int ff_h264_pred_weight_table(GetBitContext *gb, const SPS *sps,
                               const int *ref_count, int slice_type_nos,
                               H264PredWeightTable *pwt)
 {
-    int list, i;
+    int list, i, j;
     int luma_def, chroma_def;
 
     pwt->use_weight             = 0;
@@ -78,6 +78,14 @@ int ff_h264_pred_weight_table(GetBitContext *gb, const SPS *sps,
                     }
                 }
             }
+
+            // for MBAFF
+            pwt->luma_weight[16 + 2 * i][list][0] = pwt->luma_weight[16 + 2 * i + 1][list][0] = pwt->luma_weight[i][list][0];
+            pwt->luma_weight[16 + 2 * i][list][1] = pwt->luma_weight[16 + 2 * i + 1][list][1] = pwt->luma_weight[i][list][1];
+            for (j = 0; j < 2; j++) {
+                pwt->chroma_weight[16 + 2 * i][list][j][0] = pwt->chroma_weight[16 + 2 * i + 1][list][j][0] = pwt->chroma_weight[i][list][j][0];
+                pwt->chroma_weight[16 + 2 * i][list][j][1] = pwt->chroma_weight[16 + 2 * i + 1][list][j][1] = pwt->chroma_weight[i][list][j][1];
+            }
         }
         if (slice_type_nos != AV_PICTURE_TYPE_B)
             break;