commit 51fad20d05d5d68b6135a701280b2ac3507a2bd7
Author: Kevin Kofler <kevin.kofler(a)chello.at>
Date: Mon May 21 21:59:24 2018 +0200
Use the FFmpeg 4 patch from Arch Linux, the previous one crashed (rh#1563446)
* Mon May 21 2018 Kevin Kofler <Kevin(a)tigcc.ticalc.org> - 5.10.1-5
- Use the FFmpeg 4 patch from Arch Linux, the previous one crashed (rh#1563446)
qt5-qtwebengine-freeworld.spec | 12 +-
qtwebengine-everywhere-src-5.10.1-ffmpeg35.patch | 230 -----------------------
qtwebengine-everywhere-src-5.10.1-ffmpeg4.patch | 89 +++++++++
3 files changed, 97 insertions(+), 234 deletions(-)
---
diff --git a/qt5-qtwebengine-freeworld.spec b/qt5-qtwebengine-freeworld.spec
index 576d162..a159b7e 100644
--- a/qt5-qtwebengine-freeworld.spec
+++ b/qt5-qtwebengine-freeworld.spec
@@ -41,7 +41,7 @@
Summary: Qt5 - QtWebEngine components (freeworld version)
Name: qt5-qtwebengine-freeworld
Version: 5.10.1
-Release: 4%{?dist}
+Release: 5%{?dist}
%global major_minor %(echo %{version} | cut -d. -f-2)
%global major %(echo %{version} | cut -d. -f1)
@@ -110,10 +110,11 @@ Patch101: qtwebengine-everywhere-src-5.10.1-security-5.9.5.patch
# fix incomplete (and thus having no effect) fix for CVE-2018-6033 in 5.10.1
# (forward-ported from 5.9.5, will also be included in 5.11)
Patch102: qtwebengine-everywhere-src-5.10.1-CVE-2018-6033.patch
-# fix build with FFmpeg 3.5 (apply conditionally because it breaks older FFmpeg)
+# fix build with FFmpeg 4 (apply conditionally because it breaks older FFmpeg)
# backport of:
https://chromium-review.googlesource.com/c/chromium/src/+/754261
#
https://chromium-review.googlesource.com/c/chromium/src/+/889686
-Patch103: qtwebengine-everywhere-src-5.10.1-ffmpeg35.patch
+# courtesy of Arch Linux
+Patch103: qtwebengine-everywhere-src-5.10.1-ffmpeg4.patch
# handled by qt5-srpm-macros, which defines %%qt5_qtwebengine_arches
ExclusiveArch: %{qt5_qtwebengine_arches}
@@ -344,7 +345,7 @@ This version is compiled with support for patent-encumbered codecs
enabled.
%patch101 -p1 -b .security-5.9.5
%patch102 -p1 -b .CVE-2018-6033
%if 0%{?fedora} > 27
-%patch103 -p1 -b .ffmpeg35
+%patch103 -p1 -b .ffmpeg4
%endif
# fix // in #include in content/renderer/gpu to avoid debugedit failure
sed -i -e 's!gpu//!gpu/!g' \
@@ -428,6 +429,9 @@ echo "%{_libdir}/%{name}" \
%config(noreplace) %{_sysconfdir}/ld.so.conf.d/%{name}-%{_arch}.conf
%changelog
+* Mon May 21 2018 Kevin Kofler <Kevin(a)tigcc.ticalc.org> - 5.10.1-5
+- Use the FFmpeg 4 patch from Arch Linux, the previous one crashed (rh#1563446)
+
* Sun Mar 18 2018 Kevin Kofler <Kevin(a)tigcc.ticalc.org> - 5.10.1-4
- Fix (from 5.9.5) for incomplete, ineffective fix for CVE-2018-6033 in 5.10.1
diff --git a/qtwebengine-everywhere-src-5.10.1-ffmpeg4.patch
b/qtwebengine-everywhere-src-5.10.1-ffmpeg4.patch
new file mode 100644
index 0000000..c91cd54
--- /dev/null
+++ b/qtwebengine-everywhere-src-5.10.1-ffmpeg4.patch
@@ -0,0 +1,89 @@
+diff --git a/chromium/media/base/decoder_buffer.h b/chromium/media/base/decoder_buffer.h
+index 0341e5784f..60ffba708b 100644
+--- a/chromium/media/base/decoder_buffer.h
++++ b/chromium/media/base/decoder_buffer.h
+@@ -37,7 +37,7 @@ class MEDIA_EXPORT DecoderBuffer
+ : public base::RefCountedThreadSafe<DecoderBuffer> {
+ public:
+ enum {
+- kPaddingSize = 32,
++ kPaddingSize = 64,
+ #if defined(ARCH_CPU_ARM_FAMILY)
+ kAlignmentSize = 16
+ #else
+diff --git a/chromium/media/ffmpeg/ffmpeg_common.cc
b/chromium/media/ffmpeg/ffmpeg_common.cc
+index 61d0bc341c..d79c694555 100644
+--- a/chromium/media/ffmpeg/ffmpeg_common.cc
++++ b/chromium/media/ffmpeg/ffmpeg_common.cc
+@@ -30,10 +30,10 @@ EncryptionScheme GetEncryptionScheme(const AVStream* stream) {
+
+ } // namespace
+
+-// Why FF_INPUT_BUFFER_PADDING_SIZE? FFmpeg assumes all input buffers are
++// Why AV_INPUT_BUFFER_PADDING_SIZE? FFmpeg assumes all input buffers are
+ // padded. Check here to ensure FFmpeg only receives data padded to its
+ // specifications.
+-static_assert(DecoderBuffer::kPaddingSize >= FF_INPUT_BUFFER_PADDING_SIZE,
++static_assert(DecoderBuffer::kPaddingSize >= AV_INPUT_BUFFER_PADDING_SIZE,
+ "DecoderBuffer padding size does not fit ffmpeg requirement");
+
+ // Alignment requirement by FFmpeg for input and output buffers. This need to
+@@ -444,11 +444,11 @@ void AudioDecoderConfigToAVCodecContext(const
AudioDecoderConfig& config,
+ } else {
+ codec_context->extradata_size = config.extra_data().size();
+ codec_context->extradata = reinterpret_cast<uint8_t*>(
+- av_malloc(config.extra_data().size() + FF_INPUT_BUFFER_PADDING_SIZE));
++ av_malloc(config.extra_data().size() + AV_INPUT_BUFFER_PADDING_SIZE));
+ memcpy(codec_context->extradata, &config.extra_data()[0],
+ config.extra_data().size());
+ memset(codec_context->extradata + config.extra_data().size(), '\0',
+- FF_INPUT_BUFFER_PADDING_SIZE);
++ AV_INPUT_BUFFER_PADDING_SIZE);
+ }
+ }
+
+@@ -585,11 +585,11 @@ void VideoDecoderConfigToAVCodecContext(
+ } else {
+ codec_context->extradata_size = config.extra_data().size();
+ codec_context->extradata = reinterpret_cast<uint8_t*>(
+- av_malloc(config.extra_data().size() + FF_INPUT_BUFFER_PADDING_SIZE));
++ av_malloc(config.extra_data().size() + AV_INPUT_BUFFER_PADDING_SIZE));
+ memcpy(codec_context->extradata, &config.extra_data()[0],
+ config.extra_data().size());
+ memset(codec_context->extradata + config.extra_data().size(), '\0',
+- FF_INPUT_BUFFER_PADDING_SIZE);
++ AV_INPUT_BUFFER_PADDING_SIZE);
+ }
+ }
+
+diff --git a/chromium/media/filters/ffmpeg_audio_decoder.cc
b/chromium/media/filters/ffmpeg_audio_decoder.cc
+index b4020b001d..41da2d3939 100644
+--- a/chromium/media/filters/ffmpeg_audio_decoder.cc
++++ b/chromium/media/filters/ffmpeg_audio_decoder.cc
+@@ -368,7 +368,7 @@ void FFmpegAudioDecoder::ResetTimestampState(const
AudioDecoderConfig& config) {
+ int FFmpegAudioDecoder::GetAudioBuffer(struct AVCodecContext* s,
+ AVFrame* frame,
+ int flags) {
+- DCHECK(s->codec->capabilities & CODEC_CAP_DR1);
++ DCHECK(s->codec->capabilities & AV_CODEC_CAP_DR1);
+ DCHECK_EQ(s->codec_type, AVMEDIA_TYPE_AUDIO);
+
+ // Since this routine is called by FFmpeg when a buffer is required for audio
+diff --git a/chromium/media/filters/ffmpeg_video_decoder.cc
b/chromium/media/filters/ffmpeg_video_decoder.cc
+index 42d044dd69..32f5c7b79d 100644
+--- a/chromium/media/filters/ffmpeg_video_decoder.cc
++++ b/chromium/media/filters/ffmpeg_video_decoder.cc
+@@ -427,12 +427,11 @@ bool FFmpegVideoDecoder::ConfigureDecoder(const
VideoDecoderConfig& config,
+ codec_context_->thread_type =
+ FF_THREAD_SLICE | (low_delay ? 0 : FF_THREAD_FRAME);
+ codec_context_->opaque = this;
+- codec_context_->flags |= CODEC_FLAG_EMU_EDGE;
+ codec_context_->get_buffer2 = GetVideoBufferImpl;
+ codec_context_->refcounted_frames = 1;
+
+ if (decode_nalus_)
+- codec_context_->flags2 |= CODEC_FLAG2_CHUNKS;
++ codec_context_->flags2 |= AV_CODEC_FLAG2_CHUNKS;
+
+ AVCodec* codec = avcodec_find_decoder(codec_context_->codec_id);
+ if (!codec || avcodec_open2(codec_context_.get(), codec, NULL) < 0) {