Commit 82989bd9 authored by Mark Thompson's avatar Mark Thompson

avconv: Move rescale to stream timebase before monotonisation

If the stream timebase is coarser than the muxing timebase then the
monotonisation process may fail because adding one to the timestamp
need not actually produce a different timestamp after the rescale.
parent 030de53e
......@@ -326,6 +326,8 @@ static void write_packet(OutputFile *of, AVPacket *pkt, OutputStream *ost)
}
}
av_packet_rescale_ts(pkt, ost->mux_timebase, ost->st->time_base);
if (!(s->oformat->flags & AVFMT_NOTIMESTAMPS) &&
ost->last_mux_dts != AV_NOPTS_VALUE &&
pkt->dts < ost->last_mux_dts + !(s->oformat->flags & AVFMT_TS_NONSTRICT)) {
......@@ -349,7 +351,6 @@ static void write_packet(OutputFile *of, AVPacket *pkt, OutputStream *ost)
ost->packets_written++;
pkt->stream_index = ost->index;
av_packet_rescale_ts(pkt, ost->mux_timebase, ost->st->time_base);
ret = av_interleaved_write_frame(s, pkt);
if (ret < 0) {
......@@ -1006,7 +1007,7 @@ FF_ENABLE_DEPRECATION_WARNINGS
vid = 1;
}
/* compute min output value */
pts = (double)ost->last_mux_dts * av_q2d(ost->mux_timebase);
pts = (double)ost->last_mux_dts * av_q2d(ost->st->time_base);
if ((pts < ti1) && (pts > 0))
ti1 = pts;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment