[FFmpeg-devel] [PATCH] fftools/ffmpeg: Restore DTS correction for VP9 copies
James Almer
jamrial at gmail.com
Wed May 12 16:39:07 EEST 2021
On 5/12/2021 10:02 AM, Danny Wu wrote:
> Fixes ticket 9086.
>
> Since early 2021, some of YouTube's VP9 encodes have non-monotonous DTS.
> This makes ffmpeg fatally fail when trying to copy or encode the V9 video.
>
> ffmpeg already includes functionality to correct this, however it was
> disabled without explanation for VP9 stream copies in
> 2e6636aa87303d37b112e79f093ca39500f92364
The reason is that a bitstream filter that merges frames into
superframes (1 visible + up to 7 invisible) was implemented.
>
> This patch restores the DTS correction logic, and allows ffmpeg to correctly
> encode (invalid) videos produced by youtube.com. I have verified that frames
> are NOT being cut (so it does not re-introduce 4313).
Shouldn't google not produce invalid files? Also, can you link one of
these videos to test this issue?
> ---
> fftools/ffmpeg.c | 1 -
> 1 file changed, 1 deletion(-)
>
> diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c
> index 3ad11452da..67deb7762f 100644
> --- a/fftools/ffmpeg.c
> +++ b/fftools/ffmpeg.c
> @@ -823,7 +823,6 @@ static void write_packet(OutputFile *of, AVPacket
> *pkt, OutputStream *ost, int u
> }
> if ((st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO ||
> st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO ||
> st->codecpar->codec_type == AVMEDIA_TYPE_SUBTITLE) &&
> pkt->dts != AV_NOPTS_VALUE &&
> - !(st->codecpar->codec_id == AV_CODEC_ID_VP9 && ost->stream_copy) &&
> ost->last_mux_dts != AV_NOPTS_VALUE) {
> int64_t max = ost->last_mux_dts + !(s->oformat->flags &
> AVFMT_TS_NONSTRICT);
> if (pkt->dts < max) {
Your mail client mangled the patch.
More information about the ffmpeg-devel
mailing list