Merge commit 'c725faebda9a516766d94c33b07972ab0f70cf93'
authorMichael Niedermayer <michaelni@gmx.at>
Sat, 3 Jan 2015 00:38:58 +0000 (01:38 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Sat, 3 Jan 2015 00:38:58 +0000 (01:38 +0100)
* commit 'c725faebda9a516766d94c33b07972ab0f70cf93':
  movenc: Use start_dts/cts instead of cluster[0] for writing edit lists

Conflicts:
libavformat/movenc.c

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

@@@ -2268,8 -1650,7 +2268,8 @@@ static int mov_write_edts_tag(AVIOConte
           * special meaning. Normally start_ct should end up positive or zero
           * here, but use FFMIN in case dts is a a small positive integer
           * rounded to 0 when represented in MOV_TIMESCALE units. */
-         av_assert0(av_rescale_rnd(track->cluster[0].dts, MOV_TIMESCALE, track->timescale, AV_ROUND_DOWN) <= 0);
-         start_ct  = -FFMIN(track->cluster[0].dts, 0);
++        av_assert0(av_rescale_rnd(track->start_dts, MOV_TIMESCALE, track->timescale, AV_ROUND_DOWN) <= 0);
+         start_ct  = -FFMIN(track->start_dts, 0);
          /* Note, this delay is calculated from the pts of the first sample,
           * ensuring that we don't reduce the duration for cases with
           * dts<0 pts=0. */
@@@ -2393,13 -1774,11 +2393,12 @@@ static int mov_write_trak_tag(AVIOConte
      avio_wb32(pb, 0); /* size */
      ffio_wfourcc(pb, "trak");
      mov_write_tkhd_tag(pb, mov, track, st);
 -    if (track->start_dts != AV_NOPTS_VALUE &&
 -        (track->mode == MODE_PSP || track->flags & MOV_TRACK_CTTS ||
 -        track->start_dts || is_clcp_track(track))) {
 +
 +    av_assert2(mov->use_editlist >= 0);
 +
-     if (track->entry) {
++    if (track->start_dts != AV_NOPTS_VALUE) {
          if (mov->use_editlist)
 -            mov_write_edts_tag(pb, mov, track);  // PSP Movies require edts box
 +            mov_write_edts_tag(pb, mov, track);  // PSP Movies and several other cases require edts box
          else if ((track->entry && track->cluster[0].dts) || track->mode == MODE_PSP || is_clcp_track(track))
              av_log(mov->fc, AV_LOG_WARNING,
                     "Not writing any edit list even though one would have been required\n");