summaryrefslogtreecommitdiff
path: root/libavcodec/h264.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2014-06-24 01:45:59 +0200
committerMichael Niedermayer <michaelni@gmx.at>2014-06-24 01:46:30 +0200
commit82e4340f1ef0dba67ca9e264a400aec895293dfe (patch)
tree1553dcbd7fb5cd4c4cc7e0ab6d9c49f446e7fa75 /libavcodec/h264.c
parent97511bc7cf443ffd6b8738f8f290422a0e3b23e5 (diff)
parent772d150a6e82542c06b0c251e73dd299d98d1027 (diff)
Merge commit '772d150a6e82542c06b0c251e73dd299d98d1027'
* commit '772d150a6e82542c06b0c251e73dd299d98d1027': h264: error out from decode_nal_units() when AV_EF_EXPLODE is set Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/h264.c')
-rw-r--r--libavcodec/h264.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/libavcodec/h264.c b/libavcodec/h264.c
index 2348d53120..561fcb2622 100644
--- a/libavcodec/h264.c
+++ b/libavcodec/h264.c
@@ -1683,7 +1683,9 @@ again:
break;
case NAL_SEI:
init_get_bits(&h->gb, ptr, bit_length);
- ff_h264_decode_sei(h);
+ ret = ff_h264_decode_sei(h);
+ if (ret < 0 && (h->avctx->err_recognition & AV_EF_EXPLODE))
+ goto end;
break;
case NAL_SPS:
init_get_bits(&h->gb, ptr, bit_length);
@@ -1702,7 +1704,9 @@ again:
break;
case NAL_PPS:
init_get_bits(&h->gb, ptr, bit_length);
- ff_h264_decode_picture_parameter_set(h, bit_length);
+ ret = ff_h264_decode_picture_parameter_set(h, bit_length);
+ if (ret < 0 && (h->avctx->err_recognition & AV_EF_EXPLODE))
+ goto end;
break;
case NAL_AUD:
case NAL_END_SEQUENCE:
@@ -1719,7 +1723,9 @@ again:
}
if (context_count == h->max_contexts) {
- ff_h264_execute_decode_slices(h, context_count);
+ ret = ff_h264_execute_decode_slices(h, context_count);
+ if (ret < 0 && (h->avctx->err_recognition & AV_EF_EXPLODE))
+ goto end;
context_count = 0;
}
@@ -1739,8 +1745,11 @@ again:
}
}
}
- if (context_count)
- ff_h264_execute_decode_slices(h, context_count);
+ if (context_count) {
+ ret = ff_h264_execute_decode_slices(h, context_count);
+ if (ret < 0 && (h->avctx->err_recognition & AV_EF_EXPLODE))
+ goto end;
+ }
end:
/* clean up */