Control: tags -1 - pending Hi Sebastian!
On Sun, Jan 30, 2022 at 09:34:10PM +0100, Sebastian Ramacher wrote: > qtwebengine-opensource-src FTBFS with ffmpeg 5.0 (available in > experimental): I backported some upstream commits which make it better, but not completely. My current problem is that I don't see any replacement for this code in Chromium's media/filters/ffmpeg_demuxer.cc: if (stream->first_dts != kNoFFmpegTimestamp && stream->codecpar->codec_id != AV_CODEC_ID_HEVC && stream->codecpar->codec_id != AV_CODEC_ID_H264 && stream->codecpar->codec_id != AV_CODEC_ID_MPEG4) { const base::TimeDelta first_pts = ConvertFromTimeBase(stream->time_base, stream->first_dts); if (first_pts < start_time) start_time = first_pts; } Here stream is AVStream*. In FFmpeg 5, that class does not have first_dts member. FFmpeg's own code uses ffstream() to cast such a pointer to FFStream*, but both FFStream struct and ffstream() function are private API. Upstream Chromium uses a bundled copy of FFMpeg and they patched it to add av_stream_get_first_dts() function which exposes that member [1]. So my questions are: - Do you know how to write equivalent code using only public API? - If no, maybe you can add av_stream_get_first_dts() function so that Chromium can use it? I can file a bug upstream asking to make it official for the next release. - Alternatively, maybe you can install libavutil's internal.h header, so I can take FFStream and ffstream() definitions from there? I hate both second and third solutions, but nothing better came to my mind. [1]: https://chromium.googlesource.com/chromium/third_party/ffmpeg/+/refs/heads/master/libavformat/utils.c#95 -- Dmitry Shachnev
signature.asc
Description: PGP signature