From a6e27f7add2698fdd89911632b570c3d0c3f2aaa Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Mon, 21 Mar 2016 16:14:31 +0100 Subject: h264: factor out parsing the reference count into a separate file This will allow decoupling the parser from the decoder. --- libavcodec/h264_parser.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'libavcodec/h264_parser.c') diff --git a/libavcodec/h264_parser.c b/libavcodec/h264_parser.c index 87f6fe6706..2d39ee4a04 100644 --- a/libavcodec/h264_parser.c +++ b/libavcodec/h264_parser.c @@ -111,6 +111,7 @@ static int scan_mmco_reset(AVCodecParserContext *s) H264ParseContext *p = s->priv_data; H264Context *h = &p->h; H264SliceContext *sl = &h->slice_ctx[0]; + int list_count, ref_count[2]; sl->slice_type_nos = s->pict_type & 3; @@ -120,12 +121,13 @@ static int scan_mmco_reset(AVCodecParserContext *s) if (sl->slice_type_nos == AV_PICTURE_TYPE_B) get_bits1(&sl->gb); // direct_spatial_mv_pred - if (ff_set_ref_count(h, sl) < 0) + if (ff_h264_parse_ref_count(&list_count, ref_count, &sl->gb, &h->pps, + sl->slice_type_nos, h->picture_structure) < 0) return AVERROR_INVALIDDATA; if (sl->slice_type_nos != AV_PICTURE_TYPE_I) { int list; - for (list = 0; list < sl->list_count; list++) { + for (list = 0; list < list_count; list++) { if (get_bits1(&sl->gb)) { int index; for (index = 0; ; index++) { @@ -141,7 +143,7 @@ static int scan_mmco_reset(AVCodecParserContext *s) } else break; - if (index >= sl->ref_count[list]) { + if (index >= ref_count[list]) { av_log(h->avctx, AV_LOG_ERROR, "reference count %d overflow\n", index); return AVERROR_INVALIDDATA; @@ -153,7 +155,7 @@ static int scan_mmco_reset(AVCodecParserContext *s) if ((h->pps.weighted_pred && sl->slice_type_nos == AV_PICTURE_TYPE_P) || (h->pps.weighted_bipred_idc == 1 && sl->slice_type_nos == AV_PICTURE_TYPE_B)) - ff_h264_pred_weight_table(&sl->gb, &h->sps, sl->ref_count, sl->slice_type_nos, + ff_h264_pred_weight_table(&sl->gb, &h->sps, ref_count, sl->slice_type_nos, &sl->pwt); if (get_bits1(&sl->gb)) { // adaptive_ref_pic_marking_mode_flag -- cgit v1.2.3