diff --git a/README.md b/README.md index c67c66f..37abfab 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,4 @@ # qt6-qtwebengine +Qt6 WebEngine component. + diff --git a/qt6-qtwebengine-6.2.3-ffmpeg-5.0.patch b/qt6-qtwebengine-6.2.3-ffmpeg-5.0.patch new file mode 100644 index 0000000..58e51d0 --- /dev/null +++ b/qt6-qtwebengine-6.2.3-ffmpeg-5.0.patch @@ -0,0 +1,150 @@ +diff --git a/chromium/media/ffmpeg/ffmpeg_common.h b/chromium/media/ffmpeg/ffmpeg_common.h +index 2734a485cbd..70b1877a43c 100644 +--- a/chromium/media/ffmpeg/ffmpeg_common.h ++++ b/chromium/media/ffmpeg/ffmpeg_common.h +@@ -29,6 +29,7 @@ extern "C" { + #include + #include + #include ++#include + #include + #include + #include +diff --git a/chromium/media/filters/audio_file_reader.cc b/chromium/media/filters/audio_file_reader.cc +index cb81d920def..bd73908d0ca 100644 +--- a/chromium/media/filters/audio_file_reader.cc ++++ b/chromium/media/filters/audio_file_reader.cc +@@ -85,7 +85,7 @@ bool AudioFileReader::OpenDemuxer() { + } + + bool AudioFileReader::OpenDecoder() { +- AVCodec* codec = avcodec_find_decoder(codec_context_->codec_id); ++ const AVCodec* codec = avcodec_find_decoder(codec_context_->codec_id); + if (codec) { + // MP3 decodes to S16P which we don't support, tell it to use S16 instead. + if (codec_context_->sample_fmt == AV_SAMPLE_FMT_S16P) +diff --git a/chromium/media/filters/ffmpeg_audio_decoder.cc b/chromium/media/filters/ffmpeg_audio_decoder.cc +index 0d825ed791b..72fac6167ef 100644 +--- a/chromium/media/filters/ffmpeg_audio_decoder.cc ++++ b/chromium/media/filters/ffmpeg_audio_decoder.cc +@@ -329,7 +329,7 @@ bool FFmpegAudioDecoder::ConfigureDecoder(const AudioDecoderConfig& config) { + } + } + +- AVCodec* codec = avcodec_find_decoder(codec_context_->codec_id); ++ const AVCodec* codec = avcodec_find_decoder(codec_context_->codec_id); + if (!codec || + avcodec_open2(codec_context_.get(), codec, &codec_options) < 0) { + DLOG(ERROR) << "Could not initialize audio decoder: " +diff --git a/chromium/media/filters/ffmpeg_demuxer.cc b/chromium/media/filters/ffmpeg_demuxer.cc +index d34db63f3ef..427565b00c1 100644 +--- a/chromium/media/filters/ffmpeg_demuxer.cc ++++ b/chromium/media/filters/ffmpeg_demuxer.cc +@@ -98,12 +98,12 @@ static base::TimeDelta ExtractStartTime(AVStream* stream) { + + // Next try to use the first DTS value, for codecs where we know PTS == DTS + // (excludes all H26x codecs). The start time must be returned in PTS. +- if (stream->first_dts != kNoFFmpegTimestamp && ++ if (av_stream_get_first_dts(stream) != 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); ++ ConvertFromTimeBase(stream->time_base, av_stream_get_first_dts(stream)); + if (first_pts < start_time) + start_time = first_pts; + } +@@ -408,11 +408,11 @@ void FFmpegDemuxerStream::EnqueuePacket(ScopedAVPacket packet) { + scoped_refptr buffer; + + if (type() == DemuxerStream::TEXT) { +- int id_size = 0; ++ size_t id_size = 0; + uint8_t* id_data = av_packet_get_side_data( + packet.get(), AV_PKT_DATA_WEBVTT_IDENTIFIER, &id_size); + +- int settings_size = 0; ++ size_t settings_size = 0; + uint8_t* settings_data = av_packet_get_side_data( + packet.get(), AV_PKT_DATA_WEBVTT_SETTINGS, &settings_size); + +@@ -424,7 +424,7 @@ void FFmpegDemuxerStream::EnqueuePacket(ScopedAVPacket packet) { + buffer = DecoderBuffer::CopyFrom(packet->data, packet->size, + side_data.data(), side_data.size()); + } else { +- int side_data_size = 0; ++ size_t side_data_size = 0; + uint8_t* side_data = av_packet_get_side_data( + packet.get(), AV_PKT_DATA_MATROSKA_BLOCKADDITIONAL, &side_data_size); + +@@ -485,7 +485,7 @@ void FFmpegDemuxerStream::EnqueuePacket(ScopedAVPacket packet) { + packet->size - data_offset); + } + +- int skip_samples_size = 0; ++ size_t skip_samples_size = 0; + const uint32_t* skip_samples_ptr = + reinterpret_cast(av_packet_get_side_data( + packet.get(), AV_PKT_DATA_SKIP_SAMPLES, &skip_samples_size)); +diff --git a/chromium/media/filters/ffmpeg_glue.cc b/chromium/media/filters/ffmpeg_glue.cc +index 0ef3521473d..8483ecc348f 100644 +--- a/chromium/media/filters/ffmpeg_glue.cc ++++ b/chromium/media/filters/ffmpeg_glue.cc +@@ -59,7 +59,6 @@ static int64_t AVIOSeekOperation(void* opaque, int64_t offset, int whence) { + } + + void FFmpegGlue::InitializeFFmpeg() { +- av_register_all(); + } + + static void LogContainer(bool is_local_file, +@@ -95,9 +94,6 @@ FFmpegGlue::FFmpegGlue(FFmpegURLProtocol* protocol) { + // Enable fast, but inaccurate seeks for MP3. + format_context_->flags |= AVFMT_FLAG_FAST_SEEK; + +- // Ensures we can read out various metadata bits like vp8 alpha. +- format_context_->flags |= AVFMT_FLAG_KEEP_SIDE_DATA; +- + // Ensures format parsing errors will bail out. From an audit on 11/2017, all + // instances were real failures. Solves bugs like http://crbug.com/710791. + format_context_->error_recognition |= AV_EF_EXPLODE; +diff --git a/chromium/media/filters/ffmpeg_video_decoder.cc b/chromium/media/filters/ffmpeg_video_decoder.cc +index ef12477ee89..7996606f5f9 100644 +--- a/chromium/media/filters/ffmpeg_video_decoder.cc ++++ b/chromium/media/filters/ffmpeg_video_decoder.cc +@@ -391,7 +391,7 @@ bool FFmpegVideoDecoder::ConfigureDecoder(const VideoDecoderConfig& config, + if (decode_nalus_) + codec_context_->flags2 |= AV_CODEC_FLAG2_CHUNKS; + +- AVCodec* codec = avcodec_find_decoder(codec_context_->codec_id); ++ const AVCodec* codec = avcodec_find_decoder(codec_context_->codec_id); + if (!codec || avcodec_open2(codec_context_.get(), codec, NULL) < 0) { + ReleaseFFmpegResources(); + return false; +diff --git a/chromium/media/filters/media_file_checker.cc b/chromium/media/filters/media_file_checker.cc +index 59c2a2fc618..1a9872c7acb 100644 +--- a/chromium/media/filters/media_file_checker.cc ++++ b/chromium/media/filters/media_file_checker.cc +@@ -68,7 +68,7 @@ bool MediaFileChecker::Start(base::TimeDelta check_time) { + auto context = AVStreamToAVCodecContext(format_context->streams[i]); + if (!context) + continue; +- AVCodec* codec = avcodec_find_decoder(cp->codec_id); ++ const AVCodec* codec = avcodec_find_decoder(cp->codec_id); + if (codec && avcodec_open2(context.get(), codec, nullptr) >= 0) { + auto loop = std::make_unique(context.get()); + stream_contexts[i] = {std::move(context), std::move(loop)}; +diff --git a/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.cc b/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.cc +index 9002b874611..d12fade8b63 100644 +--- a/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.cc ++++ b/chromium/third_party/webrtc/modules/video_coding/codecs/h264/h264_decoder_impl.cc +@@ -203,7 +203,7 @@ int32_t H264DecoderImpl::InitDecode(const VideoCodec* codec_settings, + // a pointer |this|. + av_context_->opaque = this; + +- AVCodec* codec = avcodec_find_decoder(av_context_->codec_id); ++ const AVCodec* codec = avcodec_find_decoder(av_context_->codec_id); + if (!codec) { + // This is an indication that FFmpeg has not been initialized or it has not + // been compiled/initialized with the correct set of codecs. diff --git a/qt6-qtwebengine.spec b/qt6-qtwebengine.spec new file mode 100644 index 0000000..0fe89b4 --- /dev/null +++ b/qt6-qtwebengine.spec @@ -0,0 +1,246 @@ +%define majver %(echo %version | cut -d. -f1-2) +Name: qt6-qtwebengine +Version: 6.2.3 +Release: 1mamba +Summary: Qt6 WebEngine component +Group: System/Libraries +Vendor: openmamba +Distribution: openmamba +Packager: Silvan Calarco +URL: https://www.qt.io/ +Source: https://download.qt.io/official_releases/qt/%{majver}/%{version}/submodules/qtwebengine-everywhere-src-%{version}.tar.xz +Patch0: qt6-qtwebengine-6.2.3-ffmpeg-5.0.patch +License: GPL +## AUTOBUILDREQ-BEGIN +BuildRequires: glibc-devel +BuildRequires: libX11-devel +BuildRequires: libXcomposite-devel +BuildRequires: libXdamage-devel +BuildRequires: libXext-devel +BuildRequires: libXfixes-devel +BuildRequires: libXrandr-devel +BuildRequires: libXrender-devel +BuildRequires: libXtst-devel +BuildRequires: libalsa-devel +BuildRequires: libavcodec-ffmpeg-devel +BuildRequires: libavformat-ffmpeg-devel +BuildRequires: libavutil-ffmpeg-devel +BuildRequires: libdbus-devel +BuildRequires: libevent-devel +BuildRequires: libexpat-devel +BuildRequires: libfontconfig-devel +BuildRequires: libfreetype-devel +BuildRequires: libgcc +BuildRequires: libglib-devel +BuildRequires: libglvnd-devel +BuildRequires: libharfbuzz-devel +BuildRequires: libicu-devel +BuildRequires: libjpeg-devel +BuildRequires: liblcms2-devel +BuildRequires: libminizip1-devel +BuildRequires: libnspr-devel +BuildRequires: libnss-devel +BuildRequires: libopus-devel +BuildRequires: libpci-devel +BuildRequires: libpng-devel +BuildRequires: libre2-devel +BuildRequires: libsnappy-devel +BuildRequires: libstdc++6-devel +BuildRequires: libvpx-devel +BuildRequires: libwebp-devel +BuildRequires: libxcb-devel +BuildRequires: libxkbcommon-devel +BuildRequires: libxkbfile-devel +BuildRequires: libxshmfence-devel +BuildRequires: libz-devel +BuildRequires: qt6-qtbase-devel +BuildRequires: qt6-qtdeclarative-devel +## AUTOBUILDREQ-END + +%description +Qt6 WebEngine component. + +%package devel +Group: Development/Libraries +Summary: Development files for %{name} +Requires: %{name} = %{?epoch:%epoch:}%{version}-%{release} + +%description devel +This package contains libraries and header files for developing applications that use %{name}. + +%debug_package + +%prep +%setup -q -n qtwebengine-everywhere-src-%{version} +#-D -T +#:<< _EOF +cd src/3rdparty +%patch0 -p1 -b .ffmpèeg-5.0 +cd ../.. + +%build +#:<< _EOF +# Prevent build server slowness/crash due to memory +%ifarch arm +export NINJAFLAGS="-j1" +%else +export NINJAFLAGS="-j2" +%endif + +%ifarch %{ix86} aarch64 +export CXXFLAGS+="%{optflags} -Os -s -ffunction-sections -fdata-sections -Wl,--gc-sections -Wl,--no-keep-memory -fPIC -fno-delete-null-pointer-checks -fno-lifetime-dse -fno-schedule-insns2 -Wl,--no-fatal-warnings" +%else +export CXXFLAGS+="%{optflags} -fPIC -fno-delete-null-pointer-checks -fno-lifetime-dse -fno-schedule-insns2 -Wl,--no-fatal-warnings" +%endif + +%cmake -d build \ + -G Ninja \ + -DQT_FEATURE_webengine_system_ffmpeg=ON \ + -DQT_FEATURE_webengine_system_icu=ON \ + -DQT_FEATURE_webengine_system_libevent=ON \ + -DQT_FEATURE_webengine_proprietary_codecs=ON \ + -DQT_FEATURE_webengine_kerberos=ON \ + -DQT_FEATURE_webengine_webrtc_pipewire=ON \ + -DQT_FEATURE_webengine_full_debug_info=ON + +cmake --build . + +%install +[ "%{buildroot}" != / ] && rm -rf "%{buildroot}" + +DESTDIR="%{buildroot}" cmake --install build + +%clean +[ "%{buildroot}" != / ] && rm -rf "%{buildroot}" + +%post -p /sbin/ldconfig +%postun -p /sbin/ldconfig + +%files +#-f %{name}.lang +%defattr(-,root,root) +%{_datadir}/qt6/resources/qtwebengine_devtools_resources.pak +%{_datadir}/qt6/resources/qtwebengine_resources.pak +%{_datadir}/qt6/resources/qtwebengine_resources_100p.pak +%{_datadir}/qt6/resources/qtwebengine_resources_200p.pak +%dir %{_datadir}/qt6/translations/qtwebengine_locales +%{_datadir}/qt6/translations/qtwebengine_locales/*.pak +%defattr(-,root,root) +%{_libdir}/libQt6WebEngineCore.so.* +%{_libdir}/libQt6WebEngineWidgets.so.* +%{_libdir}/libQt6WebEngineQuick.so.* +%{_libdir}/libQt6WebEngineQuickDelegatesQml.so.* +%{_libdir}/qt6/libexec/* +%{_datadir}/qt6/modules/WebEngine*.json +%dir %{_libdir}/qml/QtWebEngine +%{_libdir}/qml/QtWebEngine/* +%{_libdir}/metatypes/qt6webengine*.json +%doc LICENSE.GPL3 LICENSE.GPL3-EXCEPT +%doc LICENSE.LGPL3 LICENSE.Chromium LICENSE.FDL + +%files devel +%defattr(-,root,root) +%dir %{_includedir}/qt6/QtWebEngineQuick +%{_includedir}/qt6/QtWebEngineQuick/* +%dir %{_includedir}/qt6/QtWebEngineCore +%{_includedir}/qt6/QtWebEngineCore/* +%dir %{_includedir}/qt6/QtWebEngineWidgets +%{_includedir}/qt6/QtWebEngineWidgets/* +%dir %{_libdir}/cmake/Qt6WebEngineCore +%{_libdir}/cmake/Qt6WebEngineCore/*.cmake +%{_libdir}/cmake/Qt6/Find*.cmake +%dir %{_libdir}/cmake/Qt6WebEngineWidgets +%{_libdir}/libQt6WebEngineCore.prl +%{_libdir}/libQt6WebEngineCore.so +%{_libdir}/libQt6WebEngineWidgets.prl +%{_libdir}/libQt6WebEngineWidgets.so +%{_libdir}/libQt6WebEngineQuick.prl +%{_libdir}/libQt6WebEngineQuick.so +%{_libdir}/libQt6WebEngineQuickDelegatesQml.prl +%{_libdir}/libQt6WebEngineQuickDelegatesQml.so +%{_libdir}/qt6/mkspecs/modules/qt_lib_webengine*.pri +%dir %{_libdir}/cmake/Qt6WebEngineCoreTools +%{_libdir}/cmake/Qt6WebEngineCoreTools/Qt6WebEngineCoreTools*.cmake +%dir %{_libdir}/cmake/Qt6WebEngineQuick +%{_libdir}/cmake/Qt6WebEngineQuick/Qt6WebEngineQuick*.cmake +%dir %{_libdir}/cmake/Qt6WebEngineWidgets +%{_libdir}/cmake/Qt6WebEngineWidgets/Qt6WebEngineWidgets*.cmake +%dir %{_libdir}/cmake/Qt6BuildInternals/StandaloneTests +%{_libdir}/cmake/Qt6BuildInternals/StandaloneTests/QtWebEngine*.cmake +%dir %{_libdir}/cmake/Qt6Qml/QmlPlugins +%{_libdir}/cmake/Qt6Qml/QmlPlugins/Qt6qtwebengine*.cmake +%dir %{_libdir}/cmake/Qt6WebEngineQuickDelegatesQml +%{_libdir}/cmake/Qt6WebEngineQuickDelegatesQml/Qt6WebEngineQuickDelegatesQml*.cmake + +%changelog +* Sun Feb 20 2022 Silvan Calarco 6.2.3-1mamba +- update to 6.2.3 + +* Fri Dec 24 2021 Silvan Calarco 5.15.7-1mamba +- update to 5.15.7 + +* Sat Jan 02 2021 Silvan Calarco 5.15.2-1mamba +- update to 5.15.2 + +* Mon Oct 19 2020 Silvan Calarco 5.15.1-1mamba +- update to 5.15.1 + +* Mon Aug 31 2020 Silvan Calarco 5.15.0-2mamba +- rebuilt with system ffmpeg and icu + +* Fri Aug 28 2020 Silvan Calarco 5.15.0-1mamba +- update to 5.15.0 + +* Tue Apr 07 2020 Silvan Calarco 5.14.2-1mamba +- update to 5.14.2 + +* Wed Oct 23 2019 Silvan Calarco 5.13.1-1mamba +- update to 5.13.1 + +* Sun Jun 23 2019 Silvan Calarco 5.13.0-1mamba +- update to 5.13.0 + +* Tue May 07 2019 Silvan Calarco 5.12.3-1mamba +- update to 5.12.3 + +* Tue Mar 19 2019 Silvan Calarco 5.12.2-1mamba +- update to 5.12.2 + +* Sun Feb 10 2019 Silvan Calarco 5.12.1-1mamba +- update to 5.12.1 + +* Sun Dec 30 2018 Automatic Build System 5.12.0-1mamba +- automatic version update by autodist + +* Sat Nov 03 2018 Silvan Calarco 5.11.2-1mamba +- update to 5.11.2 + +* Sat Jul 21 2018 Silvan Calarco 5.11.1-1mamba +- update to 5.11.1 + +* Wed Jun 06 2018 Silvan Calarco 5.11.0-1mamba +- update to 5.11.0 + +* Sat Feb 24 2018 Silvan Calarco 5.10.1-1mamba +- update to 5.10.1 + +* Sat Jan 27 2018 Silvan Calarco 5.10.0-1mamba +- update to 5.10.0 + +* Thu Oct 19 2017 Silvan Calarco 5.9.2-1mamba +- update to 5.9.2 + +* Fri Dec 16 2016 Silvan Calarco 5.7.1-1mamba +- update to 5.7.1 + +* Thu Dec 15 2016 Silvan Calarco 5.7.0-4mamba +- rebuilt with gcc + +* Thu Dec 15 2016 Silvan Calarco 5.7.0-3mamba +- rebuilt with -fno-delete-null-pointer-checks CXXFLAGS and use_system_ffmpeg + +* Thu Dec 15 2016 Silvan Calarco 5.7.0-2mamba +- bump release to allow update with qt6 release update + +* Sat Jul 16 2016 Silvan Calarco 5.7.0-1mamba +- package created using the webbuild interface