diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2013-08-03 08:54:54 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2013-08-03 08:54:54 +0200 |
commit | 7cd13f618c3cf47c21ec8128ed61f16a14c349ef (patch) | |
tree | 193055d863976a9edf20441d441ee0ab40adc64e /libavcodec/h264_sei.c | |
parent | bdccfc3fc354632f49721fc435310fb958843b21 (diff) | |
parent | 0d8b943d204bd16fcf2f4a59c742e65a401dd3d0 (diff) | |
download | ffmpeg-7cd13f618c3cf47c21ec8128ed61f16a14c349ef.tar.gz |
Merge commit '0d8b943d204bd16fcf2f4a59c742e65a401dd3d0'
* commit '0d8b943d204bd16fcf2f4a59c742e65a401dd3d0':
h264_sei: Return meaningful values
Conflicts:
libavcodec/h264_sei.c
Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/h264_sei.c')
-rw-r--r-- | libavcodec/h264_sei.c | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/libavcodec/h264_sei.c b/libavcodec/h264_sei.c index 2bb7ae9687..b1c6499e61 100644 --- a/libavcodec/h264_sei.c +++ b/libavcodec/h264_sei.c @@ -67,7 +67,7 @@ static int decode_picture_timing(H264Context *h) h->sei_ct_type = 0; if (h->sei_pic_struct > SEI_PIC_STRUCT_FRAME_TRIPLING) - return -1; + return AVERROR_INVALIDDATA; num_clock_ts = sei_num_clock_ts_table[h->sei_pic_struct]; @@ -152,7 +152,7 @@ static int decode_unregistered_user_data(H264Context *h, int size) int e, build, i; if (size < 16) - return -1; + return AVERROR_INVALIDDATA; for (i = 0; i < sizeof(user_data) - 1 && i < size; i++) user_data[i] = get_bits(&h->gb, 8); @@ -198,7 +198,7 @@ static int decode_buffering_period(H264Context *h) if (sps_id > 31 || !h->sps_buffers[sps_id]) { av_log(h->avctx, AV_LOG_ERROR, "non-existing SPS %d referenced in buffering period\n", sps_id); - return -1; + return AVERROR_INVALIDDATA; } sps = h->sps_buffers[sps_id]; @@ -268,6 +268,7 @@ int ff_h264_decode_sei(H264Context *h) int type = 0; unsigned size = 0; unsigned next; + int ret = 0; do { if (get_bits_left(&h->gb) < 8) @@ -292,24 +293,28 @@ int ff_h264_decode_sei(H264Context *h) switch (type) { case SEI_TYPE_PIC_TIMING: // Picture timing SEI - if (decode_picture_timing(h) < 0) - return -1; + ret = decode_picture_timing(h); + if (ret < 0) + return ret; break; case SEI_TYPE_USER_DATA_ITU_T_T35: if (decode_user_data_itu_t_t35(h, size) < 0) return -1; break; case SEI_TYPE_USER_DATA_UNREGISTERED: - if (decode_unregistered_user_data(h, size) < 0) - return -1; + ret = decode_unregistered_user_data(h, size); + if (ret < 0) + return ret; break; case SEI_TYPE_RECOVERY_POINT: - if (decode_recovery_point(h) < 0) - return -1; + ret = decode_recovery_point(h); + if (ret < 0) + return ret; break; case SEI_BUFFERING_PERIOD: - if (decode_buffering_period(h) < 0) - return -1; + ret = decode_buffering_period(h); + if (ret < 0) + return ret; break; case SEI_TYPE_FRAME_PACKING: if (decode_frame_packing(h, size) < 0) |