]> git.sesse.net Git - ffmpeg/commitdiff
Merge commit '3b086317277e3f3b61c0343930d8e2570b278bd6'
authorMichael Niedermayer <michaelni@gmx.at>
Fri, 1 Nov 2013 13:50:02 +0000 (14:50 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Fri, 1 Nov 2013 13:54:40 +0000 (14:54 +0100)
* commit '3b086317277e3f3b61c0343930d8e2570b278bd6':
  h26[13]dec: stop using deprecated avcodec_set_dimensions
  gifdec: stop using deprecated avcodec_set_dimensions
  g2meet: stop using deprecated avcodec_set_dimensions

Conflicts:
libavcodec/gifdec.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
libavcodec/g2meet.c
libavcodec/gifdec.c
libavcodec/h261dec.c
libavcodec/h263dec.c

Simple merge
index 4151b88856acae13b2e4d47eb4843e32543a14ec,136d1127d237241a9d9df4a9496f72855b2e1da3..ec1585cbca3afcae3c65d9686e6f4f6da52b9a34
@@@ -438,60 -277,31 +438,59 @@@ static av_cold int gif_decode_init(AVCo
      return 0;
  }
  
 -static int gif_decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
 -                            AVPacket *avpkt)
 +static int gif_decode_frame(AVCodecContext *avctx, void *data, int *got_frame, AVPacket *avpkt)
  {
 -    const uint8_t *buf = avpkt->data;
 -    int buf_size = avpkt->size;
      GifState *s = avctx->priv_data;
 -    AVFrame *picture = data;
      int ret;
  
 -    s->bytestream = buf;
 -    s->bytestream_end = buf + buf_size;
 -    if ((ret = gif_read_header1(s)) < 0)
 -        return ret;
 +    bytestream2_init(&s->gb, avpkt->data, avpkt->size);
  
 -    avctx->pix_fmt = AV_PIX_FMT_PAL8;
 +    s->frame->pts     = avpkt->pts;
 +    s->frame->pkt_pts = avpkt->pts;
 +    s->frame->pkt_dts = avpkt->dts;
 +    av_frame_set_pkt_duration(s->frame, avpkt->duration);
  
 -    if ((ret = ff_set_dimensions(avctx, s->screen_width, s->screen_height)) < 0)
 -        return ret;
 +    if (avpkt->size >= 6) {
 +        s->keyframe = memcmp(avpkt->data, gif87a_sig, 6) == 0 ||
 +                      memcmp(avpkt->data, gif89a_sig, 6) == 0;
 +    } else {
 +        s->keyframe = 0;
 +    }
  
 -    if ((ret = ff_get_buffer(avctx, picture, 0)) < 0) {
 -        av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n");
 -        return ret;
 +    if (s->keyframe) {
 +        s->keyframe_ok = 0;
 +        s->gce_prev_disposal = GCE_DISPOSAL_NONE;
 +        if ((ret = gif_read_header1(s)) < 0)
 +            return ret;
 +
-         if ((ret = av_image_check_size(s->screen_width, s->screen_height, 0, avctx)) < 0)
++        if ((ret = ff_set_dimensions(avctx, s->screen_width, s->screen_height)) < 0)
 +            return ret;
-         avcodec_set_dimensions(avctx, s->screen_width, s->screen_height);
 +
 +        av_frame_unref(s->frame);
 +        if ((ret = ff_get_buffer(avctx, s->frame, 0)) < 0)
 +            return ret;
 +
 +        av_fast_malloc(&s->idx_line, &s->idx_line_size, s->screen_width);
 +        if (!s->idx_line)
 +            return AVERROR(ENOMEM);
 +
 +        s->frame->pict_type = AV_PICTURE_TYPE_I;
 +        s->frame->key_frame = 1;
 +        s->keyframe_ok = 1;
 +    } else {
 +        if (!s->keyframe_ok) {
 +            av_log(avctx, AV_LOG_ERROR, "cannot decode frame without keyframe\n");
 +            return AVERROR_INVALIDDATA;
 +        }
 +
 +        if ((ret = ff_reget_buffer(avctx, s->frame)) < 0)
 +            return ret;
 +
 +        s->frame->pict_type = AV_PICTURE_TYPE_P;
 +        s->frame->key_frame = 0;
      }
 -    s->image_palette = (uint32_t *)picture->data[1];
 -    ret = gif_parse_next_image(s, picture);
 +
 +    ret = gif_parse_next_image(s, s->frame);
      if (ret < 0)
          return ret;
  
Simple merge
Simple merge