ffmpeg | branch: master | Anton Khirnov <an...@khirnov.net> | Fri Apr 15 
14:45:48 2016 +0200| [b16e9b9ac9db449cae2242767dd3c3fc309357c4] | committer: 
Anton Khirnov

h264: move initialising the explicit pred weight table for MBAFF

Currently it's done in the code that initialises the ref list for
MBAFF, which is not a logical place for it. Move it to the function that
parses the pred table from the bitstream, which is analogous to what is
done for the implicit weight table as well.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=b16e9b9ac9db449cae2242767dd3c3fc309357c4
---

 libavcodec/h264_parse.c |   10 +++++++++-
 libavcodec/h264_refs.c  |    7 -------
 2 files changed, 9 insertions(+), 8 deletions(-)

diff --git a/libavcodec/h264_parse.c b/libavcodec/h264_parse.c
index 7211c9d..052e8e4 100644
--- a/libavcodec/h264_parse.c
+++ b/libavcodec/h264_parse.c
@@ -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;
diff --git a/libavcodec/h264_refs.c b/libavcodec/h264_refs.c
index a925b44..b2f255f 100644
--- a/libavcodec/h264_refs.c
+++ b/libavcodec/h264_refs.c
@@ -373,13 +373,6 @@ void ff_h264_fill_mbaff_ref_list(H264SliceContext *sl)
                 field[1].data[j] += frame->parent->f->linesize[j];
             field[1].reference = PICT_BOTTOM_FIELD;
             field[1].poc       = field[1].parent->field_poc[1];
-
-            sl->pwt.luma_weight[16 + 2 * i][list][0] = sl->pwt.luma_weight[16 
+ 2 * i + 1][list][0] = sl->pwt.luma_weight[i][list][0];
-            sl->pwt.luma_weight[16 + 2 * i][list][1] = sl->pwt.luma_weight[16 
+ 2 * i + 1][list][1] = sl->pwt.luma_weight[i][list][1];
-            for (j = 0; j < 2; j++) {
-                sl->pwt.chroma_weight[16 + 2 * i][list][j][0] = 
sl->pwt.chroma_weight[16 + 2 * i + 1][list][j][0] = 
sl->pwt.chroma_weight[i][list][j][0];
-                sl->pwt.chroma_weight[16 + 2 * i][list][j][1] = 
sl->pwt.chroma_weight[16 + 2 * i + 1][list][j][1] = 
sl->pwt.chroma_weight[i][list][j][1];
-            }
         }
     }
 }

_______________________________________________
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

Reply via email to