Merge commit '0f6c1d6d64c9f6255ea579dace27d0dd695f0213'
authorMichael Niedermayer <michaelni@gmx.at>
Fri, 1 Nov 2013 12:21:14 +0000 (13:21 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Fri, 1 Nov 2013 12:21:14 +0000 (13:21 +0100)
* commit '0f6c1d6d64c9f6255ea579dace27d0dd695f0213':
  lavc/utils: stop using deprecated avcodec_set_dimensions

Conflicts:
libavcodec/utils.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
libavcodec/utils.c

@@@ -1230,20 -933,18 +1230,22 @@@ int attribute_align_arg avcodec_open2(A
      if ((ret = av_opt_set_dict(avctx, &tmp)) < 0)
          goto free_and_end;
  
-     // only call avcodec_set_dimensions() for non H.264/VP6F codecs so as not to overwrite previously setup dimensions
 -    if (avctx->coded_width && avctx->coded_height && !avctx->width && !avctx->height)
++    // only call ff_set_dimensions() for non H.264/VP6F codecs so as not to overwrite previously setup dimensions
 +    if (!(avctx->coded_width && avctx->coded_height && avctx->width && avctx->height &&
 +          (avctx->codec_id == AV_CODEC_ID_H264 || avctx->codec_id == AV_CODEC_ID_VP6F))) {
 +    if (avctx->coded_width && avctx->coded_height)
-         avcodec_set_dimensions(avctx, avctx->coded_width, avctx->coded_height);
+         ret = ff_set_dimensions(avctx, avctx->coded_width, avctx->coded_height);
      else if (avctx->width && avctx->height)
-         avcodec_set_dimensions(avctx, avctx->width, avctx->height);
+         ret = ff_set_dimensions(avctx, avctx->width, avctx->height);
+     if (ret < 0)
+         goto free_and_end;
 +    }
  
      if ((avctx->coded_width || avctx->coded_height || avctx->width || avctx->height)
          && (  av_image_check_size(avctx->coded_width, avctx->coded_height, 0, avctx) < 0
             || av_image_check_size(avctx->width,       avctx->height,       0, avctx) < 0)) {
 -        av_log(avctx, AV_LOG_WARNING, "ignoring invalid width/height values\n");
 +        av_log(avctx, AV_LOG_WARNING, "Ignoring invalid width/height values\n");
-         avcodec_set_dimensions(avctx, 0, 0);
+         ff_set_dimensions(avctx, 0, 0);
      }
  
      /* if the decoder init function was already called previously,
@@@ -1936,41 -1334,9 +1938,41 @@@ int avcodec_encode_subtitle(AVCodecCont
      return ret;
  }
  
 +/**
 + * Attempt to guess proper monotonic timestamps for decoded video frames
 + * which might have incorrect times. Input timestamps may wrap around, in
 + * which case the output will as well.
 + *
 + * @param pts the pts field of the decoded AVPacket, as passed through
 + * AVFrame.pkt_pts
 + * @param dts the dts field of the decoded AVPacket
 + * @return one of the input values, may be AV_NOPTS_VALUE
 + */
 +static int64_t guess_correct_pts(AVCodecContext *ctx,
 +                                 int64_t reordered_pts, int64_t dts)
 +{
 +    int64_t pts = AV_NOPTS_VALUE;
 +
 +    if (dts != AV_NOPTS_VALUE) {
 +        ctx->pts_correction_num_faulty_dts += dts <= ctx->pts_correction_last_dts;
 +        ctx->pts_correction_last_dts = dts;
 +    }
 +    if (reordered_pts != AV_NOPTS_VALUE) {
 +        ctx->pts_correction_num_faulty_pts += reordered_pts <= ctx->pts_correction_last_pts;
 +        ctx->pts_correction_last_pts = reordered_pts;
 +    }
 +    if ((ctx->pts_correction_num_faulty_pts<=ctx->pts_correction_num_faulty_dts || dts == AV_NOPTS_VALUE)
 +       && reordered_pts != AV_NOPTS_VALUE)
 +        pts = reordered_pts;
 +    else
 +        pts = dts;
 +
 +    return pts;
 +}
 +
  static int apply_param_change(AVCodecContext *avctx, AVPacket *avpkt)
  {
-     int size = 0;
+     int size = 0, ret;
      const uint8_t *data;
      uint32_t flags;