[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