mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-21 10:55:51 +02:00
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.
This commit is contained in:
parent
030de53e9c
commit
82989bd98c
5
avconv.c
5
avconv.c
@ -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) &&
|
if (!(s->oformat->flags & AVFMT_NOTIMESTAMPS) &&
|
||||||
ost->last_mux_dts != AV_NOPTS_VALUE &&
|
ost->last_mux_dts != AV_NOPTS_VALUE &&
|
||||||
pkt->dts < ost->last_mux_dts + !(s->oformat->flags & AVFMT_TS_NONSTRICT)) {
|
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++;
|
ost->packets_written++;
|
||||||
|
|
||||||
pkt->stream_index = ost->index;
|
pkt->stream_index = ost->index;
|
||||||
av_packet_rescale_ts(pkt, ost->mux_timebase, ost->st->time_base);
|
|
||||||
|
|
||||||
ret = av_interleaved_write_frame(s, pkt);
|
ret = av_interleaved_write_frame(s, pkt);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
@ -1006,7 +1007,7 @@ FF_ENABLE_DEPRECATION_WARNINGS
|
|||||||
vid = 1;
|
vid = 1;
|
||||||
}
|
}
|
||||||
/* compute min output value */
|
/* 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))
|
if ((pts < ti1) && (pts > 0))
|
||||||
ti1 = pts;
|
ti1 = pts;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user