[arch-commits] Commit in qt5-webengine/trunk (PKGBUILD qtwebengine-ffmpeg4.patch)

Antonio Rojas arojas at archlinux.org
Tue Apr 24 15:30:23 UTC 2018


    Date: Tuesday, April 24, 2018 @ 15:30:22
  Author: arojas
Revision: 322918

ffmpeg 4.0 rebuild

Added:
  qt5-webengine/trunk/qtwebengine-ffmpeg4.patch
Modified:
  qt5-webengine/trunk/PKGBUILD

---------------------------+
 PKGBUILD                  |   12 ++++-
 qtwebengine-ffmpeg4.patch |   89 ++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 98 insertions(+), 3 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2018-04-24 15:27:08 UTC (rev 322917)
+++ PKGBUILD	2018-04-24 15:30:22 UTC (rev 322918)
@@ -5,7 +5,7 @@
 pkgname=qt5-webengine
 _qtver=5.10.1
 pkgver=${_qtver/-/}
-pkgrel=1
+pkgrel=2
 arch=('x86_64')
 url='http://qt-project.org/'
 license=('LGPL3' 'LGPL2.1' 'BSD')
@@ -17,10 +17,12 @@
 _pkgfqn="${pkgname/5-/}-everywhere-src-${_qtver}"
 source=("http://download.qt.io/official_releases/qt/${pkgver%.*}/${_qtver}/submodules/${_pkgfqn}.tar.xz"
          qtwebengine-harmony.patch
-         qtwebengine-no-gpu.patch)
+         qtwebengine-no-gpu.patch
+         qtwebengine-ffmpeg4.patch)
 sha256sums=('12644f8d2ba8354a2a533d5a7f3f5139c6ff168c2f51aa3e21b701db6dbc01de'
             'feca54ab09ac0fc9d0626770a6b899a6ac5a12173c7d0c1005bc3964ec83e7b3'
-            '6cd70c37f3b3aea926f1ee20c1f59354f2a02d240dbf344c6dc0a75f8aa8e07b')
+            '6cd70c37f3b3aea926f1ee20c1f59354f2a02d240dbf344c6dc0a75f8aa8e07b'
+            'bbba71e97bae57245d2aba37684301924746e88e92091d6a248097c91dcda4a1')
 
 prepare() {
   mkdir -p build
@@ -35,6 +37,10 @@
   patch -Np1 -i ../qtwebengine-harmony.patch
   # Disable GPU rendering on nouveau and wayland (openSUSE) https://bugreports.qt.io/browse/QTBUG-65682
   patch -p1 -i ../qtwebengine-no-gpu.patch
+
+  cd src/3rdparty
+# Fix build with ffmpeg 4
+  patch -p1 -i "$srcdir"/qtwebengine-ffmpeg4.patch
 }
 
 build() {

Added: qtwebengine-ffmpeg4.patch
===================================================================
--- qtwebengine-ffmpeg4.patch	                        (rev 0)
+++ qtwebengine-ffmpeg4.patch	2018-04-24 15:30:22 UTC (rev 322918)
@@ -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) {



More information about the arch-commits mailing list