From 56e1dc813c3067d9fe1fb94f9683a16598c8b8e6 Mon Sep 17 00:00:00 2001 From: Martin Negyokru Date: Wed, 8 Feb 2023 11:10:59 +0100 Subject: Add check for system ffmpeg compatibility Chromium uses the 'first_dts' field from AVStream that has been moved out from public api in ffmpeg 5.0. Although some packagers patch their ffmpeg to be compatible with chromium. Add compile time check to test compatibility. Task-number: QTBUG-110749 Change-Id: I7658b9b12cb5122b6485f063edc3280f31fe9273 Reviewed-by: Allan Sandfeld Jensen (cherry picked from commit 7e46ff40ab66cd480b3eb9d82594f402dd8b563e) Reviewed-by: Qt Cherry-pick Bot --- configure.cmake | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/configure.cmake b/configure.cmake index 4670998d4..1e4cbea08 100644 --- a/configure.cmake +++ b/configure.cmake @@ -46,7 +46,7 @@ if(PkgConfig_FOUND) pkg_check_modules(LCMS2 lcms2) pkg_check_modules(FREETYPE freetype2 IMPORTED_TARGET) pkg_check_modules(LIBXML2 libxml-2.0 libxslt IMPORTED_TARGET) - pkg_check_modules(FFMPEG libavcodec libavformat libavutil) + pkg_check_modules(FFMPEG libavcodec libavformat libavutil IMPORTED_TARGET) pkg_check_modules(OPUS opus>=1.3.1) pkg_check_modules(VPX vpx>=1.10.0 IMPORTED_TARGET) pkg_check_modules(LIBPCI libpci) @@ -202,6 +202,25 @@ int main(void){ }" ) +qt_config_compile_test(libavformat + LABEL "libavformat" + LIBRARIES + PkgConfig::FFMPEG + CODE +" +#include \"libavformat/version.h\" +extern \"C\" { +#include \"libavformat/avformat.h\" +} +int main(void) { +#if LIBAVFORMAT_VERSION_MAJOR >= 59 + AVStream stream; + auto first_dts = av_stream_get_first_dts(&stream); +#endif + return 0; +}" +) + #### Features qt_feature("qtwebengine-build" PUBLIC @@ -522,6 +541,11 @@ add_check_for_support( CONDITION NOT LINUX OR DBUS_FOUND MESSAGE "Build requires dbus." ) +add_check_for_support( + MODULES QtWebEngine + CONDITION NOT LINUX OR NOT QT_FEATURE_webengine_system_ffmpeg OR TEST_libavformat + MESSAGE "Unmodified ffmpeg >= 5.0 is not supported." +) # FIXME: This prevents non XCB Linux builds from building: set(xcbSupport X11 LIBDRM XCOMPOSITE XCURSOR XRANDR XI XPROTO XSHMFENCE XTST) foreach(xs ${xcbSupport}) -- cgit v1.2.3