diff options
author | Clément Bœsch <clement@stupeflix.com> | 2016-06-29 17:39:33 +0200 |
---|---|---|
committer | Clément Bœsch <clement@stupeflix.com> | 2016-06-29 17:39:33 +0200 |
commit | 3b95452ca8bb39ac2136c9212a80b921e37f18c8 (patch) | |
tree | 78e1481733b8c1df861317cc40e189a02900b0e8 /libavcodec/h264_slice.c | |
parent | 2aff557c6acbce2b2b604c6c620c66c892260062 (diff) | |
parent | 0bad254300356005af4aef00a706bf2e8eee96bc (diff) | |
download | ffmpeg-3b95452ca8bb39ac2136c9212a80b921e37f18c8.tar.gz |
Merge commit '0bad254300356005af4aef00a706bf2e8eee96bc'
* commit '0bad254300356005af4aef00a706bf2e8eee96bc':
h264: move initing the implicit pred weight table out of h264_slice_header_parse()
Merged-by: Clément Bœsch <clement@stupeflix.com>
Diffstat (limited to 'libavcodec/h264_slice.c')
-rw-r--r-- | libavcodec/h264_slice.c | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c index 5cfb34fd54..49ed0d04a6 100644 --- a/libavcodec/h264_slice.c +++ b/libavcodec/h264_slice.c @@ -1602,25 +1602,16 @@ static int h264_slice_header_parse(H264Context *h, H264SliceContext *sl) return ret; } + sl->pwt.use_weight = 0; + for (i = 0; i < 2; i++) { + sl->pwt.luma_weight_flag[i] = 0; + sl->pwt.chroma_weight_flag[i] = 0; + } if ((pps->weighted_pred && sl->slice_type_nos == AV_PICTURE_TYPE_P) || (pps->weighted_bipred_idc == 1 && sl->slice_type_nos == AV_PICTURE_TYPE_B)) ff_h264_pred_weight_table(&sl->gb, sps, sl->ref_count, sl->slice_type_nos, &sl->pwt, h->avctx); - else if (pps->weighted_bipred_idc == 2 && - sl->slice_type_nos == AV_PICTURE_TYPE_B) { - implicit_weight_table(h, sl, -1); - if (FRAME_MBAFF(h)) { - implicit_weight_table(h, sl, 0); - implicit_weight_table(h, sl, 1); - } - } else { - sl->pwt.use_weight = 0; - for (i = 0; i < 2; i++) { - sl->pwt.luma_weight_flag[i] = 0; - sl->pwt.chroma_weight_flag[i] = 0; - } - } // If frame-mt is enabled, only update mmco tables for the first slice // in a field. Subsequent slices can temporarily clobber h->mmco_index @@ -1708,6 +1699,15 @@ int ff_h264_decode_slice_header(H264Context *h, H264SliceContext *sl) if (ret) // can not be ret<0 because of SLICE_SKIPED, SLICE_SINGLETHREAD, ... return ret; + if (h->ps.pps->weighted_bipred_idc == 2 && + sl->slice_type_nos == AV_PICTURE_TYPE_B) { + implicit_weight_table(h, sl, -1); + if (FRAME_MBAFF(h)) { + implicit_weight_table(h, sl, 0); + implicit_weight_table(h, sl, 1); + } + } + if (sl->slice_type_nos == AV_PICTURE_TYPE_B && !sl->direct_spatial_mv_pred) ff_h264_direct_dist_scale_factor(h, sl); ff_h264_direct_ref_list_init(h, sl); |