- Package:
- src:qtwebengine-opensource-src
- Source:
- qtwebengine-opensource-src
- Submitter:
- Sebastian Ramacher
- Date:
- 2022-06-25 21:39:03 UTC
- Severity:
- serious
- Tags:
Source: qtwebengine-opensource-src Version: 5.15.8+dfsg-1 Severity: important Tags: ftbfs sid bookworm X-Debbugs-Cc: sramacher@debian.org qtwebengine-opensource-src FTBFS with ffmpeg 5.0 (available in experimental): | FAILED: obj/third_party/webrtc/modules/video_coding/webrtc_h264/h264_decoder_impl.o | /usr/lib/ccache/g++ -MMD -MF obj/third_party/webrtc/modules/video_coding/webrtc_h264/h264_decoder_impl.o.d -DUSE_UDEV -DUSE_AURA=1 -DUSE_NSS_CERTS=1 -DUSE_OZONE=1 -DOFFICIAL_BUILD -DTOOLKIT_QT -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -DNO_UNWIND_TABLES -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DWEBRTC_ENABLE_PROTOBUF=1 -DRTC_ENABLE_VP9 -DHAVE_SCTP -DENABLE_EXTERNAL_AUTH -DWEBRTC_USE_H264 -DHAVE_WEBRTC_VIDEO -DLOGGING_INSIDE_WEBRTC -DWEBRTC_LIBRARY_IMPL -DWEBRTC_NON_STATIC_TRACE_EVENT_HANDLERS=0 -DWEBRTC_CHROMIUM_BUILD -DWEBRTC_POSIX -DWEBRTC_LINUX -DABSL_ALLOCATOR_NOTHROW=1 -DNO_MAIN_THREAD_WRAPPING -Igen -I../../3rdparty/chromium -I../../3rdparty/chromium/third_party/webrtc_overrides -I../../3rdparty/chromium/third_party/webrtc -Igen/third_party/webrtc -I../../3rdparty/chromium/third_party/abseil-cpp -I../../3rdparty/chromium/third_party/perfetto/include -Igen/third_party/perfetto/build_config -Igen/third_party/perfetto -Igen -Igen -Igen -Igen -I../../3rdparty/chromium/third_party/libyuv/include -Igen -Igen -Igen -Igen -fno-strict-aliasing --param=ssp-buffer-size=4 -fstack-protector -fno-unwind-tables -fno-asynchronous-unwind-tables -fPIC -pipe -pthread -m64 -Wall -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -Wno-unused-local-typedefs -Wno-maybe-uninitialized -Wno-deprecated-declarations -fno-delete-null-pointer-checks -Wno-comments -Wno-packed-not-aligned -Wno-dangling-else -Wno-missing-field-initializers -Wno-unused-parameter -O2 -fno-ident -fdata-sections -ffunction-sections -fno-omit-frame-pointer -g0 -fvisibility=hidden -I/usr/include/x86_64-linux-gnu -std=gnu++14 -Wno-narrowing -Wno-class-memaccess -Wno-attributes -Wno-class-memaccess -Wno-subobject-linkage -Wno-invalid-offsetof -Wno-return-type -Wno-deprecated-copy -fno-exceptions -fno-rtti -fvisibility-inlines-hidden -c ../../3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.cc -o obj/third_party/webrtc/modules/video_coding/webrtc_h264/h264_decoder_impl.o | ../../3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.cc: In member function ‘virtual int32_t webrtc::H264DecoderImpl::InitDecode(const webrtc::VideoCodec*, int32_t)’: | ../../3rdparty/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.cc:206:40: error: invalid conversion from ‘const AVCodec*’ to ‘AVCodec*’ [-fpermissive] | 206 | AVCodec* codec = avcodec_find_decoder(av_context_->codec_id); | | ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~ | | | | | const AVCodec* Cheers
Hello, Bug #1004594 in qtwebengine-opensource-src reported by you has been fixed in the Git repository and is awaiting an upload. You can see the commit message below and you can check the diff of the fix at: https://salsa.debian.org/qt-kde-team/qt/qtwebengine/-/commit/bd416ae900a45dc0ba5525e14749ea318728a609 ------------------------------------------------------------------------ Add a patch to make webrtc build with ffmpeg 5.0. Closes: #1004594. ------------------------------------------------------------------------ (this message was generated automatically) -- Greetings https://bugs.debian.org/1004594
Hi Sebastian!
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
Hi Dmitry This came up on ffmpeg-devel [1]. Their suggestion is to keep track of that value in chromium similar to [2]. That is: as long as the first DTS was not store, take PTS from the first packet that has it and compute it from PTS. Cheers [1] https://ffmpeg.org/pipermail/ffmpeg-devel/2021-September/285401.html [2] https://github.com/FFmpeg/FFmpeg/commit/ab4f299e23
Hello, Bug #1004594 in qtwebengine-opensource-src reported by you has been fixed in the Git repository and is awaiting an upload. You can see the commit message below and you can check the diff of the fix at: https://salsa.debian.org/qt-kde-team/qt/qtwebengine/-/commit/7f6a137085aef4c654ad69f25f1d1909e9dbe04e ------------------------------------------------------------------------ Build with bundled ffmpeg for now. Closes: #1004594. ------------------------------------------------------------------------ (this message was generated automatically) -- Greetings https://bugs.debian.org/1004594
Hi Sebastian, and sorry for the long delay. I see there is an open Chromium bug which has a link to the same ffpmeg-devel email: https://bugs.chromium.org/p/chromium/issues/detail?id=1251779 I don't want to touch Chromium code, so I will build with bundled ffmpeg for now, and wait for that bug to be fixed. I see that our Qt 6 maintainer did the same in qt6-webengine.
We believe that the bug you reported is fixed in the latest version of qtwebengine-opensource-src, which is due to be installed in the Debian FTP archive. A summary of the changes between this version and the previous one is attached. Thank you for reporting the bug, which will now be closed. If you have further comments please address them to 1004594@bugs.debian.org, and the maintainer will reopen the bug report if appropriate. Debian distribution maintenance software pp. Dmitry Shachnev <mitya57@debian.org> (supplier of updated qtwebengine-opensource-src package) (This message was generated automatically at their request; if you believe that there is a problem with it please contact the archive administrators by mailing ftpmaster@ftp-master.debian.org) Format: 1.8 Date: Sat, 25 Jun 2022 23:59:39 +0300 Source: qtwebengine-opensource-src Architecture: source Version: 5.15.10+dfsg-2 Distribution: unstable Urgency: medium Maintainer: Debian Qt/KDE Maintainers <debian-qt-kde@lists.debian.org> Changed-By: Dmitry Shachnev <mitya57@debian.org> Closes: 1004594 Changes: qtwebengine-opensource-src (5.15.10+dfsg-2) unstable; urgency=medium . * Build with bundled ffmpeg for now (closes: #1004594). * Bump Standards-Version to 4.6.1, no changes needed. Checksums-Sha1: bb5c8d0deeda6f81147e93806b11c6c846eda644 5720 qtwebengine-opensource-src_5.15.10+dfsg-2.dsc 8a79f3a8e56b6c718313cc034a4332bb69e6df13 242400 qtwebengine-opensource-src_5.15.10+dfsg-2.debian.tar.xz d4e09167be84b2f041f06e274810fcc189f72676 12740 qtwebengine-opensource-src_5.15.10+dfsg-2_source.buildinfo Checksums-Sha256: 772b8033954948846cbce47cfdec093d7bbc7ba91c46c3f3863d78202be30854 5720 qtwebengine-opensource-src_5.15.10+dfsg-2.dsc ffe7a6010a70962a81f84ec36271852f1753a43c024125c08e11530ccf99814d 242400 qtwebengine-opensource-src_5.15.10+dfsg-2.debian.tar.xz 251074aed4329af6a77e753648a3b822b8b77671f8d35f7ec93514e7c51f2ccd 12740 qtwebengine-opensource-src_5.15.10+dfsg-2_source.buildinfo Files: 9f2b8257f4ddbae26f59330257623b17 5720 libs optional qtwebengine-opensource-src_5.15.10+dfsg-2.dsc a05f6b2bd49ca0bd8f0b595f34593604 242400 libs optional qtwebengine-opensource-src_5.15.10+dfsg-2.debian.tar.xz 11cb88a362fc5d2b6d209055afdd3a19 12740 libs optional qtwebengine-opensource-src_5.15.10+dfsg-2_source.buildinfo -----BEGIN PGP SIGNATURE----- iQJHBAEBCgAxFiEE5688gqe4PSusUZcLZkYmW1hrg8sFAmK3eNETHG1pdHlhNTdA ZGViaWFuLm9yZwAKCRBmRiZbWGuDy6pvD/9Qh5lAWENcYPBisslYV1/E7dj3Nk0j 0zwSOzK1H03yq9zQTpdpWO/2aeckN0uYmaU++qdCXwkl6Yg66Cd+zq8gfDoOdiPf HkhInjSHGsF+yDq2vvBJAg3rB8BZ5F5UeeHhMAQI7Kp2/JZV4xMdj1B/cC6fqBn2 dpuqAxnHgdBsyazT7HGiQPwrT316mgJXD/K+Hnh+2ESyD3xFrG3Yuv50X0/1/Q83 xzuTXma4lJVt/H98uQyHoledDCej7Q5Jv8KQbDOkOMAV5TggTjoJPV+EeCVPkroK uDgxIEpIU6dQypm6rhR2cA2PJPjR+SscbC1W5wjxte3Yd7nyXPvEJhA8IsBnIC93 uMde0zbXj/6cjVx1e7/VoDQzg0Lt0QOnVr2q5hNDeJpud25insCV27nKJe5U2SPH itfmy0XWz3yU4tgigUCp/e0IQyoJWAhwEADxbXtK8m20OgoyObOPQfsOoUUzXFWz qRfwjq4VTtG6UCpMAH2KGMul6tQ8Hlw3tYbqVq2N+KdQstlFA/xRs/qye91zoW9y mLxG1Qm/ahFV3GaQrUy+YJq3HqM0xynT2PPRwq4Q3rc4sB6WCWw2jXb5Qp+bRlgK NokyLGcPeKffh9g3ZikEImuWpvwFXicJXDRgRrK95Cgse5fYEQMYcvlu5qd2jrYD zQa3a5r0zuFFeQ== =3DGp -----END PGP SIGNATURE-----