Merge commit '84f2847de394ac447f53306bd4dd73e1af6ea5e4'
authorMichael Niedermayer <michaelni@gmx.at>
Sun, 6 Jan 2013 22:59:35 +0000 (23:59 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Sun, 6 Jan 2013 22:59:35 +0000 (23:59 +0100)
* commit '84f2847de394ac447f53306bd4dd73e1af6ea5e4':
  xl: return a meaningful error code.
  xan: return a meaningful error code.
  xxan: return meaningful error codes.
  zmbv: return more meaningful error codes.
  yop: use a meaningful error code.
  c93: return meaningful error codes.
  bmv: return meaningful error codes.
  bmp: return meaningful error codes.
  bink: operate with pointers to AVFrames instead of whole structs.
  bink: return meaningful error codes.
  bfi: return meaningful error codes.
  bethsoftvideo: return meaningful error codes.

Conflicts:
libavcodec/c93.c
libavcodec/xl.c
libavcodec/xxan.c
libavcodec/yop.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
libavcodec/bfi.c
libavcodec/bink.c
libavcodec/bmp.c
libavcodec/bmv.c
libavcodec/c93.c
libavcodec/xan.c
libavcodec/xl.c
libavcodec/xxan.c
libavcodec/yop.c
libavcodec/zmbv.c

@@@ -62,11 -60,11 +62,11 @@@ static int bfi_decode_frame(AVCodecCont
      if (bfi->frame.data[0])
          avctx->release_buffer(avctx, &bfi->frame);
  
 -    bfi->frame.reference = 1;
 +    bfi->frame.reference = 3;
  
-     if (ff_get_buffer(avctx, &bfi->frame) < 0) {
+     if ((ret = ff_get_buffer(avctx, &bfi->frame)) < 0) {
          av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n");
-         return -1;
+         return ret;
      }
  
      bytestream2_init(&g, avpkt->data, buf_size);
Simple merge
@@@ -49,9 -49,8 +49,9 @@@ static int bmp_decode_frame(AVCodecCont
      unsigned int depth;
      BiCompression comp;
      unsigned int ihsize;
-     int i, j, n, linesize;
+     int i, j, n, linesize, ret;
      uint32_t rgb[3];
 +    uint32_t alpha = 0;
      uint8_t *ptr;
      int dsize;
      const uint8_t *buf0 = buf;
                  ptr += linesize;
              }
              break;
 -        case 32:
 -            for (i = 0; i < avctx->height; i++) {
 -                const uint8_t *src = buf;
 -                uint8_t *dst       = ptr;
 -
 -                for (j = 0; j < avctx->width; j++) {
 -                    dst[0] = src[rgb[2]];
 -                    dst[1] = src[rgb[1]];
 -                    dst[2] = src[rgb[0]];
 -                    dst += 3;
 -                    src += 4;
 -                }
 -
 -                buf += n;
 -                ptr += linesize;
 -            }
 -            break;
          default:
              av_log(avctx, AV_LOG_ERROR, "BMP decoder is broken\n");
-             return -1;
+             return AVERROR_INVALIDDATA;
          }
      }
  
@@@ -101,11 -100,9 +101,11 @@@ static int decode_bmv_frame(const uint8
          }
          if (!(val & 0xC)) {
              for (;;) {
 +                if(shift>22)
 +                    return -1;
                  if (!read_two_nibbles) {
                      if (src < source || src >= source_end)
-                         return -1;
+                         return AVERROR_INVALIDDATA;
                      shift += 2;
                      val |= *src << shift;
                      if (*src & 0xC)
@@@ -131,10 -127,10 +131,10 @@@ static int decode_frame(AVCodecContext 
  
      c93->currentpic ^= 1;
  
 -    newpic->reference = 1;
 +    newpic->reference = 3;
      newpic->buffer_hints = FF_BUFFER_HINTS_VALID | FF_BUFFER_HINTS_PRESERVE |
                           FF_BUFFER_HINTS_REUSABLE | FF_BUFFER_HINTS_READABLE;
-     if ((ret = avctx->reget_buffer(avctx, newpic))) {
+     if ((ret = avctx->reget_buffer(avctx, newpic)) < 0) {
          av_log(avctx, AV_LOG_ERROR, "reget_buffer() failed\n");
          return ret;
      }
Simple merge
diff --cc libavcodec/xl.c
Simple merge
Simple merge
@@@ -85,17 -85,12 +85,18 @@@ static av_cold int yop_decode_init(AVCo
  
      if (avctx->width & 1 || avctx->height & 1 ||
          av_image_check_size(avctx->width, avctx->height, 0, avctx) < 0) {
-         return -1;
+         av_log(avctx, AV_LOG_ERROR, "YOP has invalid dimensions\n");
+         return AVERROR_INVALIDDATA;
      }
  
 +    if (!avctx->extradata) {
 +        av_log(avctx, AV_LOG_ERROR, "extradata missing\n");
 +        return AVERROR_INVALIDDATA;
 +    }
 +
      avctx->pix_fmt = AV_PIX_FMT_PAL8;
  
 +    avcodec_get_frame_defaults(&s->frame);
      s->num_pal_colors = avctx->extradata[0];
      s->first_color[0] = avctx->extradata[1];
      s->first_color[1] = avctx->extradata[2];
@@@ -485,18 -485,19 +485,18 @@@ static int decode_frame(AVCodecContext 
          zret = inflateReset(&c->zstream);
          if (zret != Z_OK) {
              av_log(avctx, AV_LOG_ERROR, "Inflate reset error: %d\n", zret);
-             return -1;
+             return AVERROR_UNKNOWN;
          }
  
 -        tmp = av_realloc(c->cur,  avctx->width * avctx->height * (c->bpp / 8));
 -        if (!tmp)
 -            return AVERROR(ENOMEM);
 -        c->cur = tmp;
 -        tmp = av_realloc(c->prev, avctx->width * avctx->height * (c->bpp / 8));
 -        if (!tmp)
 -            return AVERROR(ENOMEM);
 -        c->prev = tmp;
 -        c->bx   = (c->width  + c->bw - 1) / c->bw;
 -        c->by   = (c->height + c->bh - 1) / c->bh;
 +        c->cur  = av_realloc_f(c->cur, avctx->width * avctx->height,  (c->bpp / 8));
 +        c->prev = av_realloc_f(c->prev, avctx->width * avctx->height,  (c->bpp / 8));
 +        c->bx = (c->width + c->bw - 1) / c->bw;
 +        c->by = (c->height+ c->bh - 1) / c->bh;
 +        if (!c->cur || !c->prev)
 +            return -1;
 +        memset(c->cur, 0, avctx->width * avctx->height * (c->bpp / 8));
 +        memset(c->prev, 0, avctx->width * avctx->height * (c->bpp / 8));
 +        c->decode_intra= decode_intra;
      }
  
      if (c->decode_intra == NULL) {