Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FFmpeg/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Bœsch <clement@stupeflix.com>2016-06-30 11:24:03 +0300
committerClément Bœsch <clement@stupeflix.com>2016-06-30 11:24:03 +0300
commitf48aea66ddfef3998ee7aaf6c6567577ae481807 (patch)
tree5326d8495af308729efe2850f33ca3cbe50b83a2 /libavcodec/h264_slice.c
parentd407e76c42d5ae79791ff88d3bd5185e10ad6047 (diff)
parentbec993381cfec72051b0d9f12ac9d9bb9c750983 (diff)
Merge commit 'bec993381cfec72051b0d9f12ac9d9bb9c750983'
* commit 'bec993381cfec72051b0d9f12ac9d9bb9c750983': h264: postpone generating the implicit MMCOs Merged-by: Clément Bœsch <clement@stupeflix.com>
Diffstat (limited to 'libavcodec/h264_slice.c')
-rw-r--r--libavcodec/h264_slice.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c
index cb52b77f3f..10baf10d10 100644
--- a/libavcodec/h264_slice.c
+++ b/libavcodec/h264_slice.c
@@ -431,6 +431,7 @@ int ff_h264_update_thread_context(AVCodecContext *dst,
memcpy(h->mmco, h1->mmco, sizeof(h->mmco));
h->nb_mmco = h1->nb_mmco;
h->mmco_reset = h1->mmco_reset;
+ h->explicit_ref_marking = h1->explicit_ref_marking;
h->long_ref_count = h1->long_ref_count;
h->short_ref_count = h1->short_ref_count;
@@ -445,7 +446,7 @@ int ff_h264_update_thread_context(AVCodecContext *dst,
return 0;
if (!h->droppable) {
- err = ff_h264_execute_ref_pic_marking(h, h->mmco, h->nb_mmco);
+ err = ff_h264_execute_ref_pic_marking(h);
h->poc.prev_poc_msb = h->poc.poc_msb;
h->poc.prev_poc_lsb = h->poc.poc_lsb;
}
@@ -1422,11 +1423,8 @@ static int h264_slice_header_parse(H264Context *h, H264SliceContext *sl)
ff_thread_report_progress(&h->cur_pic_ptr->tf, INT_MAX, 0);
ff_thread_report_progress(&h->cur_pic_ptr->tf, INT_MAX, 1);
- ret = ff_generate_sliding_window_mmcos(h, sl);
- if (ret < 0 && (h->avctx->err_recognition & AV_EF_EXPLODE))
- return ret;
-
- ret = ff_h264_execute_ref_pic_marking(h, sl->mmco, sl->nb_mmco);
+ h->explicit_ref_marking = 0;
+ ret = ff_h264_execute_ref_pic_marking(h);
if (ret < 0 && (h->avctx->err_recognition & AV_EF_EXPLODE))
return ret;
/* Error concealment: If a ref is missing, copy the previous ref
@@ -1577,6 +1575,7 @@ static int h264_slice_header_parse(H264Context *h, H264SliceContext *sl)
ff_h264_pred_weight_table(&sl->gb, sps, sl->ref_count,
sl->slice_type_nos, &sl->pwt, h->avctx);
+ sl->explicit_ref_marking = 0;
if (h->nal_ref_idc) {
ret = ff_h264_decode_ref_pic_marking(h, sl, &sl->gb);
if (ret < 0 && (h->avctx->err_recognition & AV_EF_EXPLODE))
@@ -1675,6 +1674,7 @@ int ff_h264_decode_slice_header(H264Context *h, H264SliceContext *sl)
memcpy(h->mmco, sl->mmco, sl->nb_mmco * sizeof(*h->mmco));
h->nb_mmco = sl->nb_mmco;
+ h->explicit_ref_marking = sl->explicit_ref_marking;
}
ret = ff_h264_build_ref_list(h, sl);