diff options
author | Anton Khirnov <anton@khirnov.net> | 2023-04-13 14:32:57 +0200 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2023-04-17 12:01:40 +0200 |
commit | 3f11582ca3d40fd98d00ad52b84348add4aa3b31 (patch) | |
tree | fe28dc1ea22c4d6fe2238ded5802f32d8bffcb99 /fftools/ffmpeg_mux.c | |
parent | 150c992490d723124f05c77425aa8689dbcbbebc (diff) | |
download | ffmpeg-3f11582ca3d40fd98d00ad52b84348add4aa3b31.tar.gz |
fftools/ffmpeg_mux: stop using filter_in_rescale_delta_last for streamcopy
That field was added to store timestamp conversion state for audio
decoding code. Later it started being used by streamcopy as well, but
that use is wrong because, for a given input stream, both decoding and
an arbitrary number of streamcopies may be performed simultaneously.
They would then all overwrite the same state variable.
Store this state in MuxStream instead.
This is the last use of InputStream in of_streamcopy(), so the ist
parameter can now be removed.
Diffstat (limited to 'fftools/ffmpeg_mux.c')
-rw-r--r-- | fftools/ffmpeg_mux.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/fftools/ffmpeg_mux.c b/fftools/ffmpeg_mux.c index db6ad9d589..8c710c2eac 100644 --- a/fftools/ffmpeg_mux.c +++ b/fftools/ffmpeg_mux.c @@ -378,10 +378,10 @@ fail: } -void of_streamcopy(InputStream *ist, OutputStream *ost, - const AVPacket *pkt, int64_t dts) +void of_streamcopy(OutputStream *ost, const AVPacket *pkt, int64_t dts) { OutputFile *of = output_files[ost->file_index]; + MuxStream *ms = ms_from_ost(ost); int64_t start_time = (of->start_time == AV_NOPTS_VALUE) ? 0 : of->start_time; int64_t ost_tb_start_time = av_rescale_q(start_time, AV_TIME_BASE_Q, ost->mux_timebase); AVPacket *opkt = ost->pkt; @@ -430,7 +430,7 @@ void of_streamcopy(InputStream *ist, OutputStream *ost, duration = ost->par_in->frame_size; opkt->dts = av_rescale_delta(pkt->time_base, pkt->dts, (AVRational){1, ost->par_in->sample_rate}, duration, - &ist->filter_in_rescale_delta_last, opkt->time_base); + &ms->ts_rescale_delta_last, opkt->time_base); /* dts will be set immediately afterwards to what pts is now */ opkt->pts = opkt->dts - ost_tb_start_time; } else |