aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2013-07-21 19:34:28 +0200
committerMichael Niedermayer <michaelni@gmx.at>2013-07-22 02:48:13 +0200
commit682e8a694f6ce0fd83af73b828593d99412ad928 (patch)
tree467cdd9a669e16f844b51cb58f0164cea3bd014c
parentf9f7f4c9bbd180ea80ffc31d187ceb4b68e94d90 (diff)
downloadffmpeg-682e8a694f6ce0fd83af73b828593d99412ad928.tar.gz
avcodec/h264_sei: Try to make code more robust by jumping to the specified SEI ends
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r--libavcodec/h264_sei.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/libavcodec/h264_sei.c b/libavcodec/h264_sei.c
index 9c97c185c2..999fce7b34 100644
--- a/libavcodec/h264_sei.c
+++ b/libavcodec/h264_sei.c
@@ -245,7 +245,7 @@ static int decode_frame_packing(H264Context *h, int size){
int ff_h264_decode_sei(H264Context *h){
while (get_bits_left(&h->gb) > 16) {
int type;
- unsigned size;
+ unsigned size, next;
type=0;
do{
@@ -268,6 +268,7 @@ int ff_h264_decode_sei(H264Context *h){
av_log(h->avctx, AV_LOG_ERROR, "SEI truncated\n");
return AVERROR_INVALIDDATA;
}
+ next = get_bits_count(&h->gb) + 8*size;
switch(type){
case SEI_TYPE_PIC_TIMING: // Picture timing SEI
@@ -293,9 +294,8 @@ int ff_h264_decode_sei(H264Context *h){
case SEI_TYPE_FRAME_PACKING:
if(decode_frame_packing(h, size) < 0)
return -1;
- default:
- skip_bits_long(&h->gb, 8*size);
}
+ skip_bits_long(&h->gb, next - get_bits_count(&h->gb));
//FIXME check bits here
align_get_bits(&h->gb);