Merge commit 'a312f71090ee620ee252f2034aef6b13e2dafe9c'
authorMichael Niedermayer <michaelni@gmx.at>
Mon, 19 May 2014 16:38:10 +0000 (18:38 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Mon, 19 May 2014 16:38:10 +0000 (18:38 +0200)
* commit 'a312f71090ee620ee252f2034aef6b13e2dafe9c':
  lavf: deprecate now unused AVStream.pts

Conflicts:
libavformat/mux.c
libavformat/version.h

mostly not merged as the code is needed for a/vsync drop handling
and what the code does is what is needed, it could maybe be moved
elsewhere or factored somehow but simply removing it would be droping
these features.

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
doc/APIchanges
libavformat/avformat.h
libavformat/mux.c
libavformat/version.h

diff --cc doc/APIchanges
Simple merge
Simple merge
@@@ -434,17 -242,14 +434,18 @@@ int avformat_write_header(AVFormatConte
  //FIXME merge with compute_pkt_fields
  static int compute_pkt_fields2(AVFormatContext *s, AVStream *st, AVPacket *pkt)
  {
 -    int delay = FFMAX(st->codec->has_b_frames, !!st->codec->max_b_frames);
 +    int delay = FFMAX(st->codec->has_b_frames, st->codec->max_b_frames > 0);
-     int num, den, frame_size, i;
+     int num, den, i;
++    int frame_size;
  
 -    av_dlog(s, "compute_pkt_fields2: pts:%" PRId64 " dts:%" PRId64 " cur_dts:%" PRId64 " b:%d size:%d st:%d\n",
 -            pkt->pts, pkt->dts, st->cur_dts, delay, pkt->size, pkt->stream_index);
 +    av_dlog(s, "compute_pkt_fields2: pts:%s dts:%s cur_dts:%s b:%d size:%d st:%d\n",
 +            av_ts2str(pkt->pts), av_ts2str(pkt->dts), av_ts2str(st->cur_dts), delay, pkt->size, pkt->stream_index);
  
 -/*    if(pkt->pts == AV_NOPTS_VALUE && pkt->dts == AV_NOPTS_VALUE)
 - *      return AVERROR(EINVAL);*/
 +    if (pkt->duration < 0 && st->codec->codec_type != AVMEDIA_TYPE_SUBTITLE) {
 +        av_log(s, AV_LOG_WARNING, "Packet with invalid duration %d in stream %d\n",
 +               pkt->duration, pkt->stream_index);
 +        pkt->duration = 0;
 +    }
  
      /* duration field */
      if (pkt->duration == 0) {
          return AVERROR(EINVAL);
      }
  
 -    av_dlog(s, "av_write_frame: pts2:%"PRId64" dts2:%"PRId64"\n",
 -            pkt->pts, pkt->dts);
 +    av_dlog(s, "av_write_frame: pts2:%s dts2:%s\n",
 +            av_ts2str(pkt->pts), av_ts2str(pkt->dts));
      st->cur_dts = pkt->dts;
 -
 +    st->pts.val = pkt->dts;
 +
 +    /* update pts */
 +    switch (st->codec->codec_type) {
 +    case AVMEDIA_TYPE_AUDIO:
 +        frame_size = (pkt->flags & AV_PKT_FLAG_UNCODED_FRAME) ?
 +                     ((AVFrame *)pkt->data)->nb_samples :
 +                     ff_get_audio_frame_size(st->codec, pkt->size, 1);
 +
 +        /* HACK/FIXME, we skip the initial 0 size packets as they are most
 +         * likely equal to the encoder delay, but it would be better if we
 +         * had the real timestamps from the encoder */
 +        if (frame_size >= 0 && (pkt->size || st->pts.num != st->pts.den >> 1 || st->pts.val)) {
 +            frac_add(&st->pts, (int64_t)st->time_base.den * frame_size);
 +        }
 +        break;
 +    case AVMEDIA_TYPE_VIDEO:
 +        frac_add(&st->pts, (int64_t)st->time_base.den * st->codec->time_base.num);
 +        break;
-     default:
-         break;
 +    }
      return 0;
  }
  
@@@ -30,8 -30,8 +30,8 @@@
  #include "libavutil/version.h"
  
  #define LIBAVFORMAT_VERSION_MAJOR 55
 -#define LIBAVFORMAT_VERSION_MINOR 17
 -#define LIBAVFORMAT_VERSION_MICRO  1
 +#define LIBAVFORMAT_VERSION_MINOR 38
- #define LIBAVFORMAT_VERSION_MICRO 100
++#define LIBAVFORMAT_VERSION_MICRO 101
  
  #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
                                                 LIBAVFORMAT_VERSION_MINOR, \
  #ifndef FF_API_LAVF_BITEXACT
  #define FF_API_LAVF_BITEXACT            (LIBAVFORMAT_VERSION_MAJOR < 56)
  #endif
+ #ifndef FF_API_LAVF_FRAC
+ #define FF_API_LAVF_FRAC                (LIBAVFORMAT_VERSION_MAJOR < 57)
+ #endif
  
 +#ifndef FF_API_ALLOC_OUTPUT_CONTEXT
 +#define FF_API_ALLOC_OUTPUT_CONTEXT    (LIBAVFORMAT_VERSION_MAJOR < 56)
 +#endif
 +#ifndef FF_API_FORMAT_PARAMETERS
 +#define FF_API_FORMAT_PARAMETERS       (LIBAVFORMAT_VERSION_MAJOR < 56)
 +#endif
 +#ifndef FF_API_NEW_STREAM
 +#define FF_API_NEW_STREAM              (LIBAVFORMAT_VERSION_MAJOR < 56)
 +#endif
 +#ifndef FF_API_SET_PTS_INFO
 +#define FF_API_SET_PTS_INFO            (LIBAVFORMAT_VERSION_MAJOR < 56)
 +#endif
 +#ifndef FF_API_CLOSE_INPUT_FILE
 +#define FF_API_CLOSE_INPUT_FILE        (LIBAVFORMAT_VERSION_MAJOR < 56)
 +#endif
 +#ifndef FF_API_READ_PACKET
 +#define FF_API_READ_PACKET             (LIBAVFORMAT_VERSION_MAJOR < 56)
 +#endif
 +#ifndef FF_API_ASS_SSA
 +#define FF_API_ASS_SSA                 (LIBAVFORMAT_VERSION_MAJOR < 56)
 +#endif
 +#ifndef FF_API_R_FRAME_RATE
 +#define FF_API_R_FRAME_RATE            1
 +#endif
  #endif /* AVFORMAT_VERSION_H */