summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2016-04-15 14:45:48 +0200
committerAnton Khirnov <anton@khirnov.net>2016-06-12 20:27:52 +0200
commitb16e9b9ac9db449cae2242767dd3c3fc309357c4 (patch)
tree592b1ddaf5551ee68412bf0aaaf5b72ee107d656
parentb93c0aed79f7f942e0dec26e53c147f297ce2ff6 (diff)
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.
-rw-r--r--libavcodec/h264_parse.c10
-rw-r--r--libavcodec/h264_refs.c7
2 files changed, 9 insertions, 8 deletions
diff --git a/libavcodec/h264_parse.c b/libavcodec/h264_parse.c
index 7211c9d34c..052e8e41d9 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 a925b44327..b2f255f761 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];
- }
}
}
}