[FFmpeg-devel] [PATCH] pnmdec: use more meaningful error codes
Stefano Sabatini
stefasab at gmail.com
Tue Oct 23 01:29:51 CEST 2012
On date Monday 2012-10-22 22:02:41 +0000, Paul B Mahol encoded:
> Signed-off-by: Paul B Mahol <onemda at gmail.com>
> ---
> libavcodec/pnmdec.c | 16 ++++++++--------
> 1 file changed, 8 insertions(+), 8 deletions(-)
>
> diff --git a/libavcodec/pnmdec.c b/libavcodec/pnmdec.c
> index 29efaca..66fc9df 100644
> --- a/libavcodec/pnmdec.c
> +++ b/libavcodec/pnmdec.c
> @@ -34,29 +34,29 @@ static int pnm_decode_frame(AVCodecContext *avctx, void *data,
> AVFrame * const p = &s->picture;
> int i, j, n, linesize, h, upgrade = 0, is_mono = 0;
> unsigned char *ptr;
> - int components, sample_len;
> + int components, sample_len, ret;
>
> s->bytestream_start =
> s->bytestream = (uint8_t *)buf;
> s->bytestream_end = (uint8_t *)buf + buf_size;
>
> if (ff_pnm_decode_header(avctx, s) < 0)
> - return -1;
> + return AVERROR_INVALIDDATA;
Maybe here you could propagate the error code, if sensible.
>
> if (p->data[0])
> avctx->release_buffer(avctx, p);
>
> p->reference = 0;
> - if (avctx->get_buffer(avctx, p) < 0) {
> + if ((ret = avctx->get_buffer(avctx, p)) < 0) {
> av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n");
> - return -1;
> + return ret;
> }
> p->pict_type = AV_PICTURE_TYPE_I;
> p->key_frame = 1;
>
> switch (avctx->pix_fmt) {
> default:
> - return -1;
> + return AVERROR_INVALIDDATA;
> case AV_PIX_FMT_RGBA64BE:
> n = avctx->width * 8;
> components=4;
> @@ -107,7 +107,7 @@ static int pnm_decode_frame(AVCodecContext *avctx, void *data,
> ptr = p->data[0];
> linesize = p->linesize[0];
> if (s->bytestream + n * avctx->height > s->bytestream_end)
> - return -1;
> + return AVERROR_INVALIDDATA;
> if(s->type < 4 || (is_mono && s->type==7)){
> for (i=0; i<avctx->height; i++) {
> PutBitContext pb;
> @@ -119,7 +119,7 @@ static int pnm_decode_frame(AVCodecContext *avctx, void *data,
> while(s->bytestream < s->bytestream_end && (*s->bytestream < '0' || *s->bytestream > '9' ))
> s->bytestream++;
> if(s->bytestream >= s->bytestream_end)
> - return -1;
> + return AVERROR_INVALIDDATA;
> if (is_mono) {
> /* read a single digit */
> v = (*s->bytestream++)&1;
> @@ -163,7 +163,7 @@ static int pnm_decode_frame(AVCodecContext *avctx, void *data,
> ptr = p->data[0];
> linesize = p->linesize[0];
> if (s->bytestream + n * avctx->height * 3 / 2 > s->bytestream_end)
> - return -1;
> + return AVERROR_INVALIDDATA;
> for (i = 0; i < avctx->height; i++) {
> memcpy(ptr, s->bytestream, n);
> s->bytestream += n;
LGTM, thanks.
--
FFmpeg = Fierce & Fascinating Muttering Programmable Elitarian Gargoyle
More information about the ffmpeg-devel
mailing list