[FFmpeg-cvslog] shorten: report meaningful errors

Luca Barbato git at videolan.org
Mon Mar 18 03:10:31 CET 2013


ffmpeg | branch: release/1.1 | Luca Barbato <lu_zero at gentoo.org> | Tue Mar  5 16:34:16 2013 +0100| [0daf1428e82926dc5a8c72a0ff4c93aaa8a84ed9] | committer: Luca Barbato

shorten: report meaningful errors

(cherry picked from commit 4c364eb2b856fc33cf7b42f7c7b979e69fde5f3a)

Signed-off-by: Luca Barbato <lu_zero at gentoo.org>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=0daf1428e82926dc5a8c72a0ff4c93aaa8a84ed9
---

 libavcodec/shorten.c |   28 ++++++++++++++--------------
 1 file changed, 14 insertions(+), 14 deletions(-)

diff --git a/libavcodec/shorten.c b/libavcodec/shorten.c
index f121a76..89346b4 100644
--- a/libavcodec/shorten.c
+++ b/libavcodec/shorten.c
@@ -130,13 +130,13 @@ static int allocate_buffers(ShortenContext *s)
     for (chan = 0; chan < s->channels; chan++) {
         if (FFMAX(1, s->nmean) >= UINT_MAX / sizeof(int32_t)) {
             av_log(s->avctx, AV_LOG_ERROR, "nmean too large\n");
-            return -1;
+            return AVERROR_INVALIDDATA;
         }
         if (s->blocksize + s->nwrap >= UINT_MAX / sizeof(int32_t) ||
             s->blocksize + s->nwrap <= (unsigned)s->nwrap) {
             av_log(s->avctx, AV_LOG_ERROR,
                    "s->blocksize + s->nwrap too large\n");
-            return -1;
+            return AVERROR_INVALIDDATA;
         }
 
         tmp_ptr =
@@ -209,14 +209,14 @@ static int decode_wave_header(AVCodecContext *avctx, const uint8_t *header,
 
     if (bytestream_get_le32(&header) != MKTAG('R', 'I', 'F', 'F')) {
         av_log(avctx, AV_LOG_ERROR, "missing RIFF tag\n");
-        return -1;
+        return AVERROR_INVALIDDATA;
     }
 
     header += 4; /* chunk size */
 
     if (bytestream_get_le32(&header) != MKTAG('W', 'A', 'V', 'E')) {
         av_log(avctx, AV_LOG_ERROR, "missing WAVE tag\n");
-        return -1;
+        return AVERROR_INVALIDDATA;
     }
 
     while (bytestream_get_le32(&header) != MKTAG('f', 'm', 't', ' ')) {
@@ -227,7 +227,7 @@ static int decode_wave_header(AVCodecContext *avctx, const uint8_t *header,
 
     if (len < 16) {
         av_log(avctx, AV_LOG_ERROR, "fmt chunk was too short\n");
-        return -1;
+        return AVERROR_INVALIDDATA;
     }
 
     wave_format = bytestream_get_le16(&header);
@@ -237,7 +237,7 @@ static int decode_wave_header(AVCodecContext *avctx, const uint8_t *header,
         break;
     default:
         av_log(avctx, AV_LOG_ERROR, "unsupported wave format\n");
-        return -1;
+        return AVERROR(ENOSYS);
     }
 
     header += 2;        // skip channels    (already got from shorten header)
@@ -248,7 +248,7 @@ static int decode_wave_header(AVCodecContext *avctx, const uint8_t *header,
 
     if (avctx->bits_per_coded_sample != 16) {
         av_log(avctx, AV_LOG_ERROR, "unsupported number of bits per sample\n");
-        return -1;
+        return AVERROR(ENOSYS);
     }
 
     len -= 16;
@@ -333,7 +333,7 @@ static int read_header(ShortenContext *s)
     /* shorten signature */
     if (get_bits_long(&s->gb, 32) != AV_RB32("ajkg")) {
         av_log(s->avctx, AV_LOG_ERROR, "missing shorten magic 'ajkg'\n");
-        return -1;
+        return AVERROR_INVALIDDATA;
     }
 
     s->lpcqoffset     = 0;
@@ -346,7 +346,7 @@ static int read_header(ShortenContext *s)
     if (s->channels <= 0 || s->channels > MAX_CHANNELS) {
         av_log(s->avctx, AV_LOG_ERROR, "too many channels: %d\n", s->channels);
         s->channels = 0;
-        return -1;
+        return AVERROR_INVALIDDATA;
     }
     s->avctx->channels = s->channels;
 
@@ -384,7 +384,7 @@ static int read_header(ShortenContext *s)
     if (get_ur_golomb_shorten(&s->gb, FNSIZE) != FN_VERBATIM) {
         av_log(s->avctx, AV_LOG_ERROR,
                "missing verbatim section at beginning of stream\n");
-        return -1;
+        return AVERROR_INVALIDDATA;
     }
 
     s->header_size = get_ur_golomb_shorten(&s->gb, VERBATIM_CKSIZE_SIZE);
@@ -392,14 +392,14 @@ static int read_header(ShortenContext *s)
         s->header_size < CANONICAL_HEADER_SIZE) {
         av_log(s->avctx, AV_LOG_ERROR, "header is wrong size: %d\n",
                s->header_size);
-        return -1;
+        return AVERROR_INVALIDDATA;
     }
 
     for (i = 0; i < s->header_size; i++)
         s->header[i] = (char)get_ur_golomb_shorten(&s->gb, VERBATIM_BYTE_SIZE);
 
-    if (decode_wave_header(s->avctx, s->header, s->header_size) < 0)
-        return -1;
+    if ((ret = decode_wave_header(s->avctx, s->header, s->header_size)) < 0)
+        return ret;
 
     s->cur_chan = 0;
     s->bitshift = 0;
@@ -614,7 +614,7 @@ finish_frame:
         av_log(s->avctx, AV_LOG_ERROR, "overread: %d\n", i - buf_size);
         s->bitstream_size  = 0;
         s->bitstream_index = 0;
-        return -1;
+        return AVERROR_INVALIDDATA;
     }
     if (s->bitstream_size) {
         s->bitstream_index += i;



More information about the ffmpeg-cvslog mailing list