Date: Friday, March 29, 2013 @ 03:54:22 Author: foutrelis Revision: 180975
upgpkg: chromium 26.0.1410.43-2 Fix choppy/stuttering HTML5 audio (FS#34511). Go back to building the bundled ffmpeg as testing/ffmpeg 1.2 breaks media playback. Added: chromium/trunk/chromium-26.0.1410.43-audio-buffer-size.patch Modified: chromium/trunk/PKGBUILD Deleted: chromium/trunk/chromium-system-ffmpeg-r2a.patch -----------------------------------------------+ PKGBUILD | 19 +- chromium-26.0.1410.43-audio-buffer-size.patch | 12 + chromium-system-ffmpeg-r2a.patch | 203 ------------------------ 3 files changed, 22 insertions(+), 212 deletions(-) Modified: PKGBUILD =================================================================== --- PKGBUILD 2013-03-28 23:52:00 UTC (rev 180974) +++ PKGBUILD 2013-03-29 02:54:22 UTC (rev 180975) @@ -6,13 +6,13 @@ pkgname=chromium pkgver=26.0.1410.43 -pkgrel=1 +pkgrel=2 pkgdesc="The open-source project behind Google Chrome, an attempt at creating a safer, faster, and more stable browser" arch=('i686' 'x86_64') url="http://www.chromium.org/" license=('BSD') depends=('gtk2' 'nss' 'alsa-lib' 'xdg-utils' 'bzip2' 'libevent' 'libxss' - 'libgcrypt' 'ttf-font' 'udev' 'dbus' 'flac' 'opus' 'libwebp' 'ffmpeg' + 'libgcrypt' 'ttf-font' 'udev' 'dbus' 'flac' 'opus' 'libwebp' 'speech-dispatcher' 'pciutils' 'desktop-file-utils' 'hicolor-icon-theme') makedepends=('python2' 'perl' 'gperf' 'yasm' 'mesa' 'libgnome-keyring' @@ -27,7 +27,7 @@ chromium-20.0.1132.57-glib-2.16-use-siginfo_t.patch chromium-25.0.1364.152-fix-crash-when-cups-is-down.patch chromium-ppapi-r0.patch - chromium-system-ffmpeg-r2a.patch + chromium-26.0.1410.43-audio-buffer-size.patch chromium-26.0.1410.43-speechd-0.8.patch) sha256sums=('31021f81642124b75cb9fa68aa806206dea345bf1aaf7094c71b3f84344b1d84' '09bfac44104f4ccda4c228053f689c947b3e97da9a4ab6fa34ce061ee83d0322' @@ -36,7 +36,7 @@ 'c1baf14121502efbc2a31b64029dcafa0e28ca5b71ad0e28a3c6342d18198615' '36ff43d8e85a7eac305727057c4ffd45eb7a357ce212a4a3f153037bc34a5ace' '1f4b57670d317959bc2dc60e5d2a44aa8fc6028f7ed540cdb502fa0aa99c81bd' - '8344737762508e33f748a04a81fc460c82e1752ad49d214abf4ff670ecd06925' + '5af41119d383b10c21f98f0e02d2259cc8cf60eefdb2fa737d8ed87d4c01f056' '23b04468881642ffdc8457016c8f91df395dfccb4af2ad6b758168180ae070f3') # Google API keys (see http://www.chromium.org/developers/how-tos/api-keys) @@ -59,12 +59,12 @@ # Fix build without NaCl glibc toolchain (patch from Gentoo) patch -Np0 -i "$srcdir/chromium-ppapi-r0.patch" - # Patch to build with system ffmpeg (patch from Gentoo) - patch -Np1 -i "$srcdir/chromium-system-ffmpeg-r2a.patch" - # Fix header location for speech-dispatcher 0.8 (patch from PLD Linux) patch -Np2 -i "$srcdir/chromium-26.0.1410.43-speechd-0.8.patch" + # http://code.google.com/p/chromium/issues/detail?id=178626 + patch -Np1 -i "$srcdir/chromium-26.0.1410.43-audio-buffer-size.patch" + # Use Python 2 find . -type f -exec sed -i -r \ -e 's|/usr/bin/python$|&2|g' \ @@ -97,10 +97,11 @@ -Dlinux_use_gold_binary=0 \ -Dlinux_use_gold_flags=0 \ -Drelease_extra_cflags="$CFLAGS" \ + -Dffmpeg_branding=Chrome \ -Dproprietary_codecs=1 \ -Duse_system_bzip2=1 \ -Duse_system_flac=1 \ - -Duse_system_ffmpeg=1 \ + -Duse_system_ffmpeg=0 \ -Duse_system_libevent=1 \ -Duse_system_libjpeg=1 \ -Duse_system_libpng=1 \ @@ -128,7 +129,7 @@ install -Dm4755 -o root -g root out/Release/chrome_sandbox \ "$pkgdir/usr/lib/chromium/chromium-sandbox" - cp out/Release/{*.pak,nacl_helper{,_bootstrap}} \ + cp out/Release/{*.pak,libffmpegsumo.so,nacl_helper{,_bootstrap}} \ out/Release/{libppGoogleNaClPluginChrome.so,nacl_irt_*.nexe} \ "$pkgdir/usr/lib/chromium/" Added: chromium-26.0.1410.43-audio-buffer-size.patch =================================================================== --- chromium-26.0.1410.43-audio-buffer-size.patch (rev 0) +++ chromium-26.0.1410.43-audio-buffer-size.patch 2013-03-29 02:54:22 UTC (rev 180975) @@ -0,0 +1,12 @@ +diff -upr chromium-26.0.1410.43.orig/media/audio/audio_util.cc chromium-26.0.1410.43/media/audio/audio_util.cc +--- chromium-26.0.1410.43.orig/media/audio/audio_util.cc 2013-03-29 02:10:07.000000000 +0200 ++++ chromium-26.0.1410.43/media/audio/audio_util.cc 2013-03-29 02:21:41.000000000 +0200 +@@ -201,8 +201,6 @@ size_t GetAudioHardwareBufferSize() { + HRESULT hr = CoreAudioUtil::GetPreferredAudioParameters(eRender, eConsole, + ¶ms); + return FAILED(hr) ? kFallbackBufferSize : params.frames_per_buffer(); +-#elif defined(OS_LINUX) +- return 512; + #else + return 2048; + #endif Deleted: chromium-system-ffmpeg-r2a.patch =================================================================== --- chromium-system-ffmpeg-r2a.patch 2013-03-28 23:52:00 UTC (rev 180974) +++ chromium-system-ffmpeg-r2a.patch 2013-03-29 02:54:22 UTC (rev 180975) @@ -1,203 +0,0 @@ -diff --git a/media/filters/ffmpeg_glue.h b/media/filters/ffmpeg_glue.h -index 17241b9..8a92312 100644 ---- a/media/filters/ffmpeg_glue.h -+++ b/media/filters/ffmpeg_glue.h -@@ -28,9 +28,9 @@ - #include "base/basictypes.h" - #include "base/memory/scoped_ptr.h" - #include "media/base/media_export.h" -+#include "media/ffmpeg/ffmpeg_common.h" - - struct AVFormatContext; --struct AVIOContext; - - namespace media { - -diff --git a/media/media.gyp b/media/media.gyp -index df217d2..fde3830 100644 ---- a/media/media.gyp -+++ b/media/media.gyp -@@ -363,6 +363,9 @@ - 'dependencies': [ - '../third_party/ffmpeg/ffmpeg.gyp:ffmpeg', - ], -+ 'export_dependent_settings': [ -+ '../third_party/ffmpeg/ffmpeg.gyp:ffmpeg', -+ ], - }, { # media_use_ffmpeg == 0 - # Exclude the sources that depend on ffmpeg. - 'sources!': [ ---- a/media/ffmpeg/ffmpeg_common.cc.orig 2013-01-17 00:07:51.635057013 +0000 -+++ b/media/ffmpeg/ffmpeg_common.cc 2013-01-17 00:15:50.867406811 +0000 -@@ -10,6 +10,8 @@ - #include "media/base/video_frame.h" - #include "media/base/video_util.h" - -+#undef SampleFormat -+ - namespace media { - - // Why FF_INPUT_BUFFER_PADDING_SIZE? FFmpeg assumes all input buffers are -Index: build/common.gypi -diff --git a/build/common.gypi b/build/common.gypi -index 34c6a15e0add1001e4a24712c9c809e3b698a390..521decfa19d102263086ebf4de7c8bac74c95e30 100644 ---- a/build/common.gypi -+++ b/build/common.gypi -@@ -741,6 +741,9 @@ - 'google_default_client_secret%': '<(google_default_client_secret)', - 'enable_managed_users%': '<(enable_managed_users)', - -+ # Use system ffmpeg instead of bundled one. -+ 'use_system_ffmpeg%': 0, -+ - # Use system mesa instead of bundled one. - 'use_system_mesa%': 0, - -Index: media/ffmpeg/ffmpeg_common.cc -diff --git a/media/ffmpeg/ffmpeg_common.cc b/media/ffmpeg/ffmpeg_common.cc -index 26953efc699a0dc1ce9cd951eb47b04713974b44..bf234304aa2b26fb7e0f729a4e75257099c00358 100644 ---- a/media/ffmpeg/ffmpeg_common.cc -+++ b/media/ffmpeg/ffmpeg_common.cc -@@ -84,8 +84,10 @@ AudioCodec CodecIDToAudioCodec(CodecID codec_id) { - return kCodecGSM_MS; - case CODEC_ID_PCM_MULAW: - return kCodecPCM_MULAW; -+#ifndef CHROMIUM_OMIT_CODEC_ID_OPUS - case CODEC_ID_OPUS: - return kCodecOpus; -+#endif - default: - DVLOG(1) << "Unknown audio CodecID: " << codec_id; - } -@@ -129,8 +131,10 @@ static CodecID AudioCodecToCodecID(AudioCodec audio_codec, - return CODEC_ID_GSM_MS; - case kCodecPCM_MULAW: - return CODEC_ID_PCM_MULAW; -+#ifndef CHROMIUM_OMIT_CODEC_ID_OPUS - case kCodecOpus: - return CODEC_ID_OPUS; -+#endif - default: - DVLOG(1) << "Unknown AudioCodec: " << audio_codec; - } -@@ -147,8 +151,10 @@ VideoCodec CodecIDToVideoCodec(CodecID codec_id) { - return kCodecMPEG4; - case CODEC_ID_VP8: - return kCodecVP8; -+#ifndef CHROMIUM_OMIT_AV_CODEC_ID_VP9 - case AV_CODEC_ID_VP9: - return kCodecVP9; -+#endif - default: - DVLOG(1) << "Unknown video CodecID: " << codec_id; - } -@@ -165,8 +171,10 @@ static CodecID VideoCodecToCodecID(VideoCodec video_codec) { - return CODEC_ID_MPEG4; - case kCodecVP8: - return CODEC_ID_VP8; -+#ifndef CHROMIUM_OMIT_AV_CODEC_ID_VP9 - case kCodecVP9: - return AV_CODEC_ID_VP9; -+#endif - default: - DVLOG(1) << "Unknown VideoCodec: " << video_codec; - } -@@ -468,8 +476,10 @@ ChannelLayout ChannelLayoutToChromeChannelLayout(int64_t layout, int channels) { - return CHANNEL_LAYOUT_6_1_FRONT; - case AV_CH_LAYOUT_7POINT0_FRONT: - return CHANNEL_LAYOUT_7_0_FRONT; -+#ifdef AV_CH_LAYOUT_7POINT1_WIDE_BACK - case AV_CH_LAYOUT_7POINT1_WIDE_BACK: - return CHANNEL_LAYOUT_7_1_WIDE_BACK; -+#endif - case AV_CH_LAYOUT_OCTAGONAL: - return CHANNEL_LAYOUT_OCTAGONAL; - default: -Index: media/media.gyp -diff --git a/media/media.gyp b/media/media.gyp -index f514dec48e5cc78567d141f20e2cb970a8707e92..75b62bebb503e2d9488bf0fc5cec3fd0a7e1916d 100644 ---- a/media/media.gyp -+++ b/media/media.gyp -@@ -469,6 +469,18 @@ - 'filters/vpx_video_decoder.h', - ], - }], -+ ['use_system_ffmpeg == 1', { -+ 'defines': [ -+ '<!(python <(DEPTH)/tools/compile_test/compile_test.py ' -+ '--code "#include <libavcodec/avcodec.h>\n' -+ 'int test() { return CODEC_ID_OPUS; }" ' -+ '--on-failure CHROMIUM_OMIT_CODEC_ID_OPUS)', -+ '<!(python <(DEPTH)/tools/compile_test/compile_test.py ' -+ '--code "#include <libavcodec/avcodec.h>\n' -+ 'int test() { return AV_CODEC_ID_VP9; }" ' -+ '--on-failure CHROMIUM_OMIT_AV_CODEC_ID_VP9)', -+ ], -+ }], - ['OS == "ios"', { - 'includes': [ - # For shared_memory_support_sources variable. -Index: tools/compile_test/compile_test.py -diff --git a/tools/compile_test/compile_test.py b/tools/compile_test/compile_test.py -new file mode 100755 -index 0000000000000000000000000000000000000000..a52c0720209142af858d656a071ca43328dd3b16 ---- /dev/null -+++ b/tools/compile_test/compile_test.py -@@ -0,0 +1,57 @@ -+#!/usr/bin/env python -+# Copyright (c) 2013 The Chromium Authors. All rights reserved. -+# Use of this source code is governed by a BSD-style license that can be -+# found in the LICENSE file. -+ -+""" -+Tries to compile given code, produces different output depending on success. -+ -+This is similar to checks done by ./configure scripts. -+""" -+ -+ -+import optparse -+import os -+import shutil -+import subprocess -+import sys -+import tempfile -+ -+ -+def DoMain(argv): -+ parser = optparse.OptionParser() -+ parser.add_option('--code') -+ parser.add_option('--on-success', default='') -+ parser.add_option('--on-failure', default='') -+ -+ options, args = parser.parse_args(argv) -+ -+ if not options.code: -+ parser.error('Missing required --code switch.') -+ -+ cxx = os.environ.get('CXX', 'g++') -+ -+ tmpdir = tempfile.mkdtemp() -+ try: -+ cxx_path = os.path.join(tmpdir, 'test.cc') -+ with open(cxx_path, 'w') as f: -+ f.write(options.code.decode('string-escape')) -+ -+ o_path = os.path.join(tmpdir, 'test.o') -+ -+ cxx_popen = subprocess.Popen([cxx, cxx_path, '-o', o_path, '-c'], -+ stdout=subprocess.PIPE, -+ stderr=subprocess.PIPE) -+ cxx_stdout, cxx_stderr = cxx_popen.communicate() -+ if cxx_popen.returncode == 0: -+ print options.on_success -+ else: -+ print options.on_failure -+ finally: -+ shutil.rmtree(tmpdir) -+ -+ return 0 -+ -+ -+if __name__ == '__main__': -+ sys.exit(DoMain(sys.argv[1:]))