Merge commit 'd6da372984c87fd6288c148c291065d6032ceda3'
authorMichael Niedermayer <michaelni@gmx.at>
Fri, 1 Nov 2013 13:01:02 +0000 (14:01 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Fri, 1 Nov 2013 13:01:02 +0000 (14:01 +0100)
* commit 'd6da372984c87fd6288c148c291065d6032ceda3':
  eacmv: stop using deprecated avcodec_set_dimensions
  dvdsubdec: stop using deprecated avcodec_set_dimensions
  dvdec: stop using deprecated avcodec_set_dimensions
  dpx: stop using deprecated avcodec_set_dimensions

Conflicts:
libavcodec/dpx.c
libavcodec/dvdec.c
libavcodec/dvdsubdec.c
libavcodec/eacmv.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
libavcodec/dpx.c
libavcodec/dvdec.c
libavcodec/dvdsubdec.c
libavcodec/eacmv.c

@@@ -111,12 -91,7 +111,10 @@@ static int decode_frame(AVCodecContext 
      buf = avpkt->data + 0x304;
      w = read32(&buf, endian);
      h = read32(&buf, endian);
-     if ((ret = av_image_check_size(w, h, 0, avctx)) < 0)
-         return ret;
  
-     if (w != avctx->width || h != avctx->height)
-         avcodec_set_dimensions(avctx, w, h);
++    if ((ret = ff_set_dimensions(avctx, w, h)) < 0)
++        return ret;
 +
      // Need to end in 0x320 to read the descriptor
      buf += 20;
      descriptor = buf[0];
@@@ -319,9 -318,9 +319,9 @@@ static int dvvideo_decode_frame(AVCodec
      int buf_size = avpkt->size;
      DVVideoContext *s = avctx->priv_data;
      const uint8_t* vsc_pack;
-     int ret, apt, is16_9;
+     int apt, is16_9, ret;
  
 -    s->sys = avpriv_dv_frame_profile(s->sys, buf, buf_size);
 +    s->sys = avpriv_dv_frame_profile2(avctx, s->sys, buf, buf_size);
      if (!s->sys || buf_size < s->sys->frame_size || ff_dv_init_dynamic_tables(s->sys)) {
          av_log(avctx, AV_LOG_ERROR, "could not find dv frame profile\n");
          return -1; /* NOTE: we only accept several full frames */
      s->picture.pict_type = AV_PICTURE_TYPE_I;
      avctx->pix_fmt   = s->sys->pix_fmt;
      avctx->time_base = s->sys->time_base;
-     avcodec_set_dimensions(avctx, s->sys->width, s->sys->height);
+     ret = ff_set_dimensions(avctx, s->sys->width, s->sys->height);
+     if (ret < 0)
+         return ret;
 -    if (ff_get_buffer(avctx, &s->picture, 0) < 0) {
 -        av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n");
 -        return -1;
 -    }
 +    if ((ret = ff_get_buffer(avctx, &s->picture, 0)) < 0)
 +        return ret;
      s->picture.interlaced_frame = 1;
      s->picture.top_field_first  = 0;
  
  #include "avcodec.h"
  #include "get_bits.h"
  #include "dsputil.h"
+ #include "internal.h"
  #include "libavutil/attributes.h"
  #include "libavutil/colorspace.h"
 +#include "libavutil/opt.h"
  #include "libavutil/imgutils.h"
  #include "libavutil/avstring.h"
  
@@@ -588,55 -515,30 +590,57 @@@ static int dvdsub_parse_extradata(AVCod
          return AVERROR(ENOMEM);
      memcpy(data, avctx->extradata, avctx->extradata_size);
      data[avctx->extradata_size] = '\0';
 -    cur = data;
 -
 -    while (*cur) {
 -        if (strncmp("palette:", cur, 8) == 0) {
 -            int i;
 -            char *p = cur + 8;
 -            ctx->has_palette = 1;
 -            for (i = 0; i < 16; i++) {
 -                ctx->palette[i] = strtoul(p, &p, 16);
 -                while (*p == ',' || av_isspace(*p))
 -                    p++;
 -            }
 -        } else if (!strncmp("size:", cur, 5)) {
 +
 +    for(;;) {
 +        int pos = strcspn(data, "\n\r");
 +        if (pos==0 && *data==0)
 +            break;
 +
 +        if (strncmp("palette:", data, 8) == 0) {
 +            parse_palette(ctx, data + 8);
 +        } else if (strncmp("size:", data, 5) == 0) {
              int w, h;
-             if (sscanf(data + 5, "%dx%d", &w, &h) == 2 &&
-                 av_image_check_size(w, h, 0, avctx) >= 0)
-                 avcodec_set_dimensions(avctx, w, h);
 -            if (sscanf(cur + 5, "%dx%d", &w, &h) == 2) {
++            if (sscanf(data + 5, "%dx%d", &w, &h) == 2) {
+                int ret = ff_set_dimensions(avctx, w, h);
+                if (ret < 0)
+                    return ret;
+             }
          }
 -        cur += strcspn(cur, "\n\r");
 -        cur += strspn(cur, "\n\r");
 +
 +        data += pos;
 +        data += strspn(data, "\n\r");
      }
 -    av_free(data);
 +
 +    av_free(dataorig);
 +    return 1;
 +}
 +
 +static av_cold int dvdsub_init(AVCodecContext *avctx)
 +{
 +    DVDSubContext *ctx = avctx->priv_data;
 +    int ret;
 +
 +    if ((ret = dvdsub_parse_extradata(avctx)) < 0)
 +        return ret;
 +
 +    if (ctx->palette_str)
 +        parse_palette(ctx, ctx->palette_str);
 +    if (ctx->has_palette) {
 +        int i;
 +        av_log(avctx, AV_LOG_DEBUG, "palette:");
 +        for(i=0;i<16;i++)
 +            av_log(avctx, AV_LOG_DEBUG, " 0x%06x", ctx->palette[i]);
 +        av_log(avctx, AV_LOG_DEBUG, "\n");
 +    }
 +
 +    return 1;
 +}
 +
 +static av_cold int dvdsub_close(AVCodecContext *avctx)
 +{
 +    DVDSubContext *ctx = avctx->priv_data;
 +    av_freep(&ctx->buf);
 +    ctx->buf_size = 0;
      return 0;
  }
  
@@@ -141,11 -140,10 +141,13 @@@ static int cmv_process_header(CmvContex
  
      s->width  = AV_RL16(&buf[4]);
      s->height = AV_RL16(&buf[6]);
 -
 -    ret = ff_set_dimensions(s->avctx, s->width, s->height);
 -    if (ret < 0)
 -        return ret;
 +    if (s->avctx->width!=s->width || s->avctx->height!=s->height) {
-         avcodec_set_dimensions(s->avctx, s->width, s->height);
 +        av_frame_unref(s->last_frame);
 +        av_frame_unref(s->last2_frame);
++        ret = ff_set_dimensions(s->avctx, s->width, s->height);
++        if (ret < 0)
++            return ret;
 +    }
  
      s->avctx->time_base.num = 1;
      s->avctx->time_base.den = AV_RL16(&buf[10]);
  
      buf += 16;
      for (i=pal_start; i<pal_start+pal_count && i<AVPALETTE_COUNT && buf_end - buf >= 3; i++) {
 -        s->palette[i] = AV_RB24(buf);
 +        s->palette[i] = 0xFFU << 24 | AV_RB24(buf);
          buf += 3;
      }
+     return 0;
  }
  
  #define EA_PREAMBLE_SIZE 8
@@@ -178,11 -178,10 +182,13 @@@ static int cmv_decode_frame(AVCodecCont
          return AVERROR_INVALIDDATA;
  
      if (AV_RL32(buf)==MVIh_TAG||AV_RB32(buf)==MVIh_TAG) {
-         cmv_process_header(s, buf+EA_PREAMBLE_SIZE, buf_end);
 +        unsigned size = AV_RL32(buf + 4);
 -        return buf_size;
+         ret = cmv_process_header(s, buf+EA_PREAMBLE_SIZE, buf_end);
+         if (ret < 0)
+             return ret;
 +        if (size > buf_end - buf - EA_PREAMBLE_SIZE)
 +            return -1;
 +        buf += size;
      }
  
      if (av_image_check_size(s->width, s->height, 0, s->avctx))