Updated Google API

This commit is contained in:
Алзим 2018-08-09 07:49:02 +03:00
parent 45d0e286e5
commit 8964c5693c
11 changed files with 43 additions and 478 deletions

View file

@ -1,5 +1,5 @@
sources: sources:
chromium-67.0.3396.99.tar.xz: 8deb0a383a86bfd7c2ae1cbf6582449d9ad55e38 chromium-66.0.3359.181.tar.xz: 5c3f055f227666ecadbc5d0e3ba999b4ffb318d1
depot_tools.tar.xz: 082b7f9a4dfa7eb03900755b4866aef2d73543a5 depot_tools.tar.xz: 082b7f9a4dfa7eb03900755b4866aef2d73543a5
icons.tar.bz2: a835954af164bf38f8ea4ea80608839bed7800a3 icons.tar.bz2: a835954af164bf38f8ea4ea80608839bed7800a3
new-system-icons.tar.xz: 89339b8b3b05359a8745ed7968fe148902a2fa28 new-system-icons.tar.xz: 89339b8b3b05359a8745ed7968fe148902a2fa28

View file

@ -102,7 +102,7 @@ diff -up chromium-60.0.3112.40/third_party/pdfium/core/fxcodec/codec/fx_codec_jp
diff -up chromium-60.0.3112.40/third_party/pdfium/third_party/BUILD.gn.pdfium-system-libtiff-libpng chromium-60.0.3112.40/third_party/pdfium/third_party/BUILD.gn diff -up chromium-60.0.3112.40/third_party/pdfium/third_party/BUILD.gn.pdfium-system-libtiff-libpng chromium-60.0.3112.40/third_party/pdfium/third_party/BUILD.gn
--- chromium-60.0.3112.40/third_party/pdfium/third_party/BUILD.gn.pdfium-system-libtiff-libpng 2017-06-22 00:04:10.000000000 +0200 --- chromium-60.0.3112.40/third_party/pdfium/third_party/BUILD.gn.pdfium-system-libtiff-libpng 2017-06-22 00:04:10.000000000 +0200
+++ chromium-60.0.3112.40/third_party/pdfium/third_party/BUILD.gn 2017-06-24 22:25:18.901585830 +0200 +++ chromium-60.0.3112.40/third_party/pdfium/third_party/BUILD.gn 2017-06-24 22:25:18.901585830 +0200
@@ -356,49 +356,14 @@ @@ -354,48 +354,14 @@
} }
} }
@ -124,7 +124,6 @@ diff -up chromium-60.0.3112.40/third_party/pdfium/third_party/BUILD.gn.pdfium-sy
- configs -= [ "//build/config/compiler:chromium_code" ] - configs -= [ "//build/config/compiler:chromium_code" ]
- configs += [ - configs += [
- "//build/config/compiler:no_chromium_code", - "//build/config/compiler:no_chromium_code",
- "//build/config/sanitizers:cfi_icall_generalize_pointers",
- ":pdfium_third_party_config", - ":pdfium_third_party_config",
- -
- # Must be after no_chromium_code for warning flags to be ordered correctly. - # Must be after no_chromium_code for warning flags to be ordered correctly.
@ -158,7 +157,7 @@ diff -up chromium-60.0.3112.40/third_party/pdfium/third_party/BUILD.gn.pdfium-sy
} }
config("system_libpng_config") { config("system_libpng_config") {
@@ -477,61 +442,13 @@ @@ -474,61 +440,13 @@
} }
} }

View file

@ -0,0 +1,10 @@
--- chromium-60.0.3112.40/third_party/WebKit/Source/platform/wtf/BUILD.gn.bignum-werror-fix 2017-06-22 00:03:16.000000000 +0200
+++ chromium-60.0.3112.40/third_party/WebKit/Source/platform/wtf/BUILD.gn 2017-06-25 13:21:32.311720897 +0200
@@ -296,6 +296,7 @@
libs = [ "log" ]
}
if (is_linux) {
+ cflags = [ "-Wno-error=strict-overflow" ]
libs = [ "dl" ]
}

View file

@ -267,8 +267,8 @@ diff -up chromium-62.0.3192.0/net/base/mime_util.cc.extra-media chromium-62.0.31
--- chromium-62.0.3192.0/net/base/mime_util.cc.extra-media 2017-08-22 21:04:46.000000000 +0200 --- chromium-62.0.3192.0/net/base/mime_util.cc.extra-media 2017-08-22 21:04:46.000000000 +0200
+++ chromium-62.0.3192.0/net/base/mime_util.cc 2017-08-30 15:47:23.952221630 +0200 +++ chromium-62.0.3192.0/net/base/mime_util.cc 2017-08-30 15:47:23.952221630 +0200
@@ -91,6 +91,9 @@ static const MimeInfo kPrimaryMappings[] @@ -91,6 +91,9 @@ static const MimeInfo kPrimaryMappings[]
{"image/jpeg", "jpeg,jpg"},
{"image/png", "png"}, {"image/png", "png"},
{"image/apng", "png"},
{"image/webp", "webp"}, {"image/webp", "webp"},
+ {"video/x-matroska", "mkv"}, + {"video/x-matroska", "mkv"},
+ {"audio/x-matroska", "mkv"}, + {"audio/x-matroska", "mkv"},

View file

@ -1,30 +0,0 @@
--- chromium-67.0.3396.87/build/toolchain/gcc_toolchain.gni-orig 2018-06-24 18:04:54.000000000 +0300
+++ chromium-67.0.3396.87/build/toolchain/gcc_toolchain.gni 2018-06-24 18:06:03.988744430 +0300
@@ -343,7 +343,7 @@
# We use slightly different arflags for AIX.
extra_arflags = "-r -c -s"
} else {
- extra_arflags = "-r -c -s -D"
+ extra_arflags = "rcsD"
}
# Almost all targets build with //build/config/compiler:thin_archive which
--- chromium-67.0.3396.87/build/config/compiler/BUILD.gn-orig 2018-06-13 01:10:02.000000000 +0300
+++ chromium-67.0.3396.87/build/config/compiler/BUILD.gn 2018-06-24 18:38:35.336737687 +0300
@@ -1570,10 +1570,12 @@
# .o files, instead of just references to .o files in the build directoy
config("thin_archive") {
if ((is_posix && !is_nacl) || is_fuchsia) {
- # TODO(thomasanderson): Enable on ChromeOS builds once
- # https://crbug.com/829956 is fixed.
- if (default_toolchain != "//build/toolchain/cros:target") {
- arflags = [ "-T" ]
+ # TODO(thomasanderson): Remove !is_clang conditional once llvm-ar supports
+ # multiple dashed flags.
+ if (!is_clang) {
+ # TODO(thomasanderson): Introduce -T once :thin_archive is removed from
+ # all third_party repos where appropriate.
+ # arflags = [ "-T" ]
}
}
}

View file

@ -34,8 +34,8 @@
Summary: A fast web browser based on the Blink engine Summary: A fast web browser based on the Blink engine
Name: chromium-browser-stable Name: chromium-browser-stable
Version: 67.0.3396.99 Version: 66.0.3359.181
Release: 1 Release: 2
License: BSD, LGPL License: BSD, LGPL
Group: Networking/WWW Group: Networking/WWW
Url: https://www.chromium.org/Home Url: https://www.chromium.org/Home
@ -55,10 +55,10 @@ Source999: new-system-icons.tar.xz
Patch4: chromium-30.0.1599.66-master-prefs-path.patch Patch4: chromium-30.0.1599.66-master-prefs-path.patch
Patch22: chromium-54-proprietary-codecs-assert.patch Patch22: chromium-54-proprietary-codecs-assert.patch
%if 0%{jsoncpp} # (cjw) disable werror for a compilation warning that causes the build to fail
Patch23: chromium-53-bignum-werror-fix.patch
# (cjw) add missing unbundle gn files (1) # (cjw) add missing unbundle gn files (1)
Patch28: chromium-53-gn-system-icu-jsoncpp.patch Patch28: chromium-53-gn-system-icu-jsoncpp.patch
%endif
# (cjw) build pdfium with system libtiff and libpng # (cjw) build pdfium with system libtiff and libpng
Patch30: chromium-52-pdfium-system-libtiff-libpng.patch Patch30: chromium-52-pdfium-system-libtiff-libpng.patch
# (cjw) Recognize mimetypes for matroska (.mkv) and AVI (.avi) formats (video/x-matroska and audio/x-matroska, video/x-msvideo) + handle A52 "AC3" and DTS compressed audio. # (cjw) Recognize mimetypes for matroska (.mkv) and AVI (.avi) formats (video/x-matroska and audio/x-matroska, video/x-msvideo) + handle A52 "AC3" and DTS compressed audio.
@ -83,7 +83,7 @@ Patch502: chromium-45.0.2454.101-system-icu-54-does-not-have-detectHostTimeZone.
Patch504: chromium-system-icu-r0.patch Patch504: chromium-system-icu-r0.patch
# https://aur.archlinux.org/packages/chromium-vaapi/ # https://aur.archlinux.org/packages/chromium-vaapi/
Patch508: chromium-vaapi-r18.patch Patch508: chromium-vaapi-r18.patch
Patch509: chromium-widevine-r2.patch Patch509: chromium-widevine.patch
# ROSA Build # ROSA Build
Patch600: chromium-buildname-60.0.3112.90.patch Patch600: chromium-buildname-60.0.3112.90.patch
@ -97,10 +97,6 @@ Patch603: chromium-66.0.3359.81-system-clang.patch
Patch604: chromium-clang-r2.patch Patch604: chromium-clang-r2.patch
# http://ftp.riken.jp/Linux/gentoo/www-client/chromium/files/ # http://ftp.riken.jp/Linux/gentoo/www-client/chromium/files/
Patch605: chromium-ffmpeg-r1.patch Patch605: chromium-ffmpeg-r1.patch
# https://chromium.googlesource.com/chromium/src/+/40a8d84a54ac47d3299194c5377aebd71714f1f0%5E%21/
Patch607: chromium-67.0.3396.87-fix-build-llvm-ar.patch
# "error":"FFmpegDemuxer: open context failed"
Patch608: remove-dependency-on-ffmpeg-internals-for-start-time.patch
Provides: %{crname} = %{EVRD} Provides: %{crname} = %{EVRD}
Conflicts: chromium-browser-unstable Conflicts: chromium-browser-unstable
@ -276,9 +272,8 @@ members of the Chromium and WebDriver teams.
%patch4 -p1 -b .prefs %patch4 -p1 -b .prefs
%patch22 -p1 %patch22 -p1
%if 0%{jsoncpp} %patch23 -p1
%patch28 -p1 %patch28 -p1
%endif
%patch30 -p1 %patch30 -p1
%patch32 -p1 %patch32 -p1
%if 0%{?ffmpeg} %if 0%{?ffmpeg}
@ -309,9 +304,6 @@ members of the Chromium and WebDriver teams.
%patch604 -p1 %patch604 -p1
%patch605 -p1 %patch605 -p1
%patch607 -p1
%patch608 -p1
mkdir -p third_party/llvm-build/Release+Asserts/bin mkdir -p third_party/llvm-build/Release+Asserts/bin
pushd third_party/llvm-build/Release+Asserts/bin pushd third_party/llvm-build/Release+Asserts/bin
ln -sf /usr/bin/clang clang ln -sf /usr/bin/clang clang
@ -358,7 +350,7 @@ rm -rf third_party/yasm/source/
rm -rf third_party/zlib/{*.[ch],contrib/minizip} rm -rf third_party/zlib/{*.[ch],contrib/minizip}
rm -rf tools/gyp/test/ rm -rf tools/gyp/test/
#rm -rf v8/test/ #rm -rf v8/test/
#rm -f third_party/pdfium/third_party/libtiff/*.[ch] rm -f third_party/pdfium/third_party/libtiff/*.[ch]
rm -f third_party/skia/platform_tools/android/apps/gradle/wrapper/gradle-wrapper.jar rm -f third_party/skia/platform_tools/android/apps/gradle/wrapper/gradle-wrapper.jar
rm -f third_party/WebKit/Source/devtools/scripts/jsdoc-validator/jsdoc-validator.jar rm -f third_party/WebKit/Source/devtools/scripts/jsdoc-validator/jsdoc-validator.jar
@ -425,15 +417,6 @@ ln -s /usr/bin/node third_party/node/linux/node-linux-x64/bin/node
%define is_clang false %define is_clang false
%endif %endif
# widevinecdmadapter
# Build error with widevinecdmadapter in 67.0.3396.62
%define widevine 1
%if 0%{?widevine}
%define is_widevine true
%else
%define is_widevine false
%endif
# v NO TABS IN HERE! # v NO TABS IN HERE!
%define gn_config use_sysroot=false \ %define gn_config use_sysroot=false \
system_libdir="%{_lib}" \ system_libdir="%{_lib}" \
@ -445,6 +428,7 @@ ln -s /usr/bin/node third_party/node/linux/node-linux-x64/bin/node
use_gold=%{use_gold} \ use_gold=%{use_gold} \
custom_toolchain="%{_sourcedir}:default" \ custom_toolchain="%{_sourcedir}:default" \
proprietary_codecs=true \ proprietary_codecs=true \
linux_link_libgio = true \
linux_link_libudev = true \ linux_link_libudev = true \
linux_link_libspeechd = true \ linux_link_libspeechd = true \
enable_ac3_eac3_audio_demuxing=true \ enable_ac3_eac3_audio_demuxing=true \
@ -452,7 +436,7 @@ ln -s /usr/bin/node third_party/node/linux/node-linux-x64/bin/node
enable_hevc_demuxing=true \ enable_hevc_demuxing=true \
use_system_libjpeg=true \ use_system_libjpeg=true \
use_libjpeg_turbo=false \ use_libjpeg_turbo=false \
enable_widevine=%{is_widevine} \ enable_widevine=true \
pdf_enable_xfa=true \ pdf_enable_xfa=true \
use_pulseaudio=true \ use_pulseaudio=true \
use_allocator="none" \ use_allocator="none" \
@ -503,9 +487,7 @@ python tools/gn/bootstrap/bootstrap.py --gn-gen-args='%{gn_config}'
out/Release/gn gen --args='%{gn_config}' out/Release out/Release/gn gen --args='%{gn_config}' out/Release
pushd out/Release pushd out/Release
# widevinecdmadapter ninja %{_smp_mflags} chrome chrome_sandbox chromedriver widevinecdmadapter
# Build error with widevinecdmadapter in 67.0.3396.62
ninja %{_smp_mflags} chrome chrome_sandbox chromedriver
popd popd
%install %install
@ -519,6 +501,7 @@ install -m 4755 out/Release/chrome_sandbox %{buildroot}%{_crdir}/chrome-sandbox
cp -a out/Release/chromedriver %{buildroot}%{_crdir}/chromedriver cp -a out/Release/chromedriver %{buildroot}%{_crdir}/chromedriver
install -m 644 out/Release/*.pak %{buildroot}%{_crdir}/ install -m 644 out/Release/*.pak %{buildroot}%{_crdir}/
install -m 644 out/Release/icudtl.dat %{buildroot}%{_crdir}/ install -m 644 out/Release/icudtl.dat %{buildroot}%{_crdir}/
#cp -a out/Release/*.bin %{buildroot}%{_crdir}/
install -m 644 out/Release/locales/*.pak %{buildroot}%{_crdir}/locales/ install -m 644 out/Release/locales/*.pak %{buildroot}%{_crdir}/locales/
install -m 644 out/Release/resources.pak %{buildroot}%{_crdir}/ install -m 644 out/Release/resources.pak %{buildroot}%{_crdir}/

View file

@ -188,111 +188,3 @@ Type=Application
StartupWMClass=Chromium-browser StartupWMClass=Chromium-browser
MimeType=application/x-extension-htm;application/x-extension-html;application/x-extension-shtml;application/x-extension-xht;application/x-extension-xhtml;application/xhtml+xml;text/html;x-scheme-handler/chrome;x-scheme-handler/ftp;x-scheme-handler/http;x-scheme-handler/https; MimeType=application/x-extension-htm;application/x-extension-html;application/x-extension-shtml;application/x-extension-xht;application/x-extension-xhtml;application/xhtml+xml;text/html;x-scheme-handler/chrome;x-scheme-handler/ftp;x-scheme-handler/http;x-scheme-handler/https;
Categories=GTK;Network;WebBrowser;X-MandrivaLinux-Internet-WebBrowsers;X-MandrivaLinux-CrossDesktop; Categories=GTK;Network;WebBrowser;X-MandrivaLinux-Internet-WebBrowsers;X-MandrivaLinux-CrossDesktop;
Actions=new-window;new-private-window;
[Desktop Action new-window]
Name=New Window
Name[am]=
Name[ar]=نافذة جديدة
Name[bg]=Нов прозорец
Name[bn]=
Name[ca]=Finestra nova
Name[cs]=Nové okno
Name[da]=Nyt vindue
Name[de]=Neues Fenster
Name[el]=Νέο Παράθυρο
Name[en_GB]=New Window
Name[es]=Nueva ventana
Name[et]=Uus aken
Name[fa]=پنجره جدید
Name[fi]=Uusi ikkuna
Name[fil]=New Window
Name[fr]=Nouvelle fenêtre
Name[gu]= િ
Name[hi]= ि
Name[hr]=Novi prozor
Name[hu]=Új ablak
Name[id]=Jendela Baru
Name[it]=Nuova finestra
Name[iw]=חלון חדש
Name[ja]=
Name[kn]= ಿ
Name[ko]=
Name[lt]=Naujas langas
Name[lv]=Jauns logs
Name[ml]=ി ി
Name[mr]= ि
Name[nl]=Nieuw venster
Name[no]=Nytt vindu
Name[pl]=Nowe okno
Name[pt]=Nova janela
Name[pt_BR]=Nova janela
Name[ro]=Fereastră nouă
Name[ru]=Новое окно
Name[sk]=Nové okno
Name[sl]=Novo okno
Name[sr]=Нови прозор
Name[sv]=Nytt fönster
Name[sw]=Dirisha Jipya
Name[ta]=ி
Name[te]= ి
Name[th]=
Name[tr]=Yeni Pencere
Name[uk]=Нове вікно
Name[vi]=Ca s Mi
Name[zh_CN]=
Name[zh_TW]=
Exec=chromium-browser
[Desktop Action new-private-window]
Name=New Incognito Window
Name[ar]=نافذة جديدة للتصفح المتخفي
Name[bg]=Нов прозорец инкогнито
Name[bn]=
Name[ca]=Finestra d'incògnit nova
Name[cs]=Nové anonymní okno
Name[da]=Nyt inkognitovindue
Name[de]=Neues Inkognito-Fenster
Name[el]=Νέο παράθυρο για ανώνυμη περιήγηση
Name[en_GB]=New Incognito window
Name[es]=Nueva ventana de incógnito
Name[et]=Uus inkognito aken
Name[fa]=پنجره جدید حالت ناشناس
Name[fi]=Uusi incognito-ikkuna
Name[fil]=Bagong Incognito window
Name[fr]=Nouvelle fenêtre de navigation privée
Name[gu]= િ
Name[hi]= ि
Name[hr]=Novi anoniman prozor
Name[hu]=Új Inkognitóablak
Name[id]=Jendela Penyamaran baru
Name[it]=Nuova finestra di navigazione in incognito
Name[iw]=חלון חדש לגלישה בסתר
Name[ja]=
Name[kn]= ಿ
Name[ko]= 릿
Name[lt]=Naujas inkognito langas
Name[lv]=Jauns inkognito režīma logs
Name[ml]=ി ി
Name[mr]= ि
Name[nl]=Nieuw incognitovenster
Name[no]=Nytt inkognitovindu
Name[pl]=Nowe okno incognito
Name[pt]=Nova janela de navegação anónima
Name[pt_BR]=Nova janela anônima
Name[ro]=Fereastră nouă incognito
Name[ru]=Новое окно в режиме инкогнито
Name[sk]=Nové okno inkognito
Name[sl]=Novo okno brez beleženja zgodovine
Name[sr]=Нови прозор за прегледање без архивирања
Name[sv]=Nytt inkognitofönster
Name[ta]=ி ி
Name[te]= ి
Name[th]=
Name[tr]=Yeni Gizli pencere
Name[uk]=Нове вікно в режимі анонімного перегляду
Name[vi]=Ca s n danh mi
Name[zh_CN]=
Name[zh_TW]=
Exec=chromium-browser --incognito

View file

@ -117,7 +117,7 @@ Signed-off-by: Daniel Charles <daniel.charles@intel.com>
+#endif +#endif
::switches::kDisableBlinkFeatures, ::switches::kDisableBlinkFeatures,
::switches::kDisableCastStreamingHWEncoding, ::switches::kDisableCastStreamingHWEncoding,
::switches::kDisableGpu, ::switches::kDisableDistanceFieldText,
@@ -163,7 +169,7 @@ void DeriveCommandLine(const GURL& start @@ -163,7 +169,7 @@ void DeriveCommandLine(const GURL& start
::switches::kDisableWebGLImageChromium, ::switches::kDisableWebGLImageChromium,
::switches::kEnableWebGLImageChromium, ::switches::kEnableWebGLImageChromium,
@ -213,10 +213,10 @@ Signed-off-by: Daniel Charles <daniel.charles@intel.com>
--- a/content/browser/gpu/compositor_util.cc --- a/content/browser/gpu/compositor_util.cc
+++ b/content/browser/gpu/compositor_util.cc +++ b/content/browser/gpu/compositor_util.cc
@@ -124,7 +124,11 @@ @@ -99,7 +99,11 @@ const GpuFeatureData GetGpuFeatureData(s
{"video_decode", {"video_decode",
SafeGetFeatureStatus(manager, manager->GetFeatureStatus(
gpu::GPU_FEATURE_TYPE_ACCELERATED_VIDEO_DECODE), gpu::GPU_FEATURE_TYPE_ACCELERATED_VIDEO_DECODE),
+#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_ANDROID) +#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_ANDROID)
+ !command_line.HasSwitch(switches::kEnableAcceleratedVideo), + !command_line.HasSwitch(switches::kEnableAcceleratedVideo),
+#else +#else
@ -291,9 +291,9 @@ Signed-off-by: Daniel Charles <daniel.charles@intel.com>
+#else +#else
switches::kDisableAcceleratedVideoDecode, switches::kDisableAcceleratedVideoDecode,
+#endif +#endif
switches::kDisableBackgroundTasks,
switches::kDisableBackgroundTimerThrottling, switches::kDisableBackgroundTimerThrottling,
switches::kDisableBreakpad, switches::kDisableBreakpad,
switches::kDisableCompositorUkmForTests,
@@ -2658,8 +2662,10 @@ void RenderProcessHostImpl::PropagateBro @@ -2658,8 +2662,10 @@ void RenderProcessHostImpl::PropagateBro
switches::kDisableMojoRenderer, switches::kDisableMojoRenderer,
#endif #endif
@ -477,9 +477,9 @@ Signed-off-by: Daniel Charles <daniel.charles@intel.com>
--- a/content/renderer/render_thread_impl.cc --- a/content/renderer/render_thread_impl.cc
+++ b/content/renderer/render_thread_impl.cc +++ b/content/renderer/render_thread_impl.cc
@@ -1578,7 +1578,11 @@ @@ -1581,7 +1581,11 @@ media::GpuVideoAcceleratorFactories* Ren
kGpuStreamIdMedia, kGpuStreamPriorityMedia); scoped_refptr<base::SingleThreadTaskRunner> media_task_runner =
GetMediaThreadTaskRunner();
const bool enable_video_accelerator = const bool enable_video_accelerator =
+#if defined(OS_LINUX) && !defined(OS_CHROMEOS) +#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
+ cmd_line->HasSwitch(switches::kEnableAcceleratedVideo) && + cmd_line->HasSwitch(switches::kEnableAcceleratedVideo) &&

View file

@ -1,39 +0,0 @@
Minimal patch to get chromium to compile with widevine support.
Exactly the same as -r1, but we now need to patch
ninja to pretty please not terminate our build.
caveat emptor: it's in no way clear that building chromium this
way is safer, from a security perspective, than whatever Google
Chrome does.
Upstream appears to be cooking up a code-signing trust-chain
which may protect users against malicious cdm blobs; I doubt
we benefit from these using this kludge. Ideally, someone
would look into this more carefully than I have ... tbh as
soon as I got my "stories" back, I pretty much lost interest :)
-gmt
--
--- a/third_party/widevine/cdm/stub/widevine_cdm_version.h
+++ b/third_party/widevine/cdm/stub/widevine_cdm_version.h
@@ -10,6 +10,7 @@
#include "third_party/widevine/cdm/widevine_cdm_common.h"
+#define WIDEVINE_CDM_VERSION_STRING "unknown"
#define WIDEVINE_CDM_AVAILABLE
#endif // WIDEVINE_CDM_VERSION_H_
--- a/third_party/widevine/cdm/BUILD.gn
+++ b/third_party/widevine/cdm/BUILD.gn
@@ -11,7 +11,7 @@ import("//third_party/widevine/cdm/widev
# Internal Cast builds set enable_widevine=true to bring in Widevine support.
# TODO(xhwang): Support component updated CDM on other platforms and remove this
# assert.
-assert(!enable_widevine || is_win || is_mac || is_chromecast,
+assert(!enable_widevine || is_win || is_mac || is_chromecast || is_linux,
"Component updated CDM only supported on Windows and Mac for now.")
widevine_arch = current_cpu

10
chromium-widevine.patch Normal file
View file

@ -0,0 +1,10 @@
diff -upr chromium-48.0.2564.82.orig/third_party/widevine/cdm/stub/widevine_cdm_version.h chromium-48.0.2564.82/third_party/widevine/cdm/stub/widevine_cdm_version.h
--- chromium-48.0.2564.82.orig/third_party/widevine/cdm/stub/widevine_cdm_version.h 2016-01-14 01:05:17.000000000 +0200
+++ chromium-48.0.2564.82/third_party/widevine/cdm/stub/widevine_cdm_version.h 2016-01-21 19:18:51.287978456 +0200
@@ -12,4 +12,6 @@
#define WIDEVINE_CDM_AVAILABLE
+#define WIDEVINE_CDM_VERSION_STRING "@WIDEVINE_VERSION@"
+
#endif // WIDEVINE_CDM_VERSION_H_

View file

@ -1,260 +0,0 @@
From f9535bd6d61d7e0b2cb452e6976a914d4ee62a2b Mon Sep 17 00:00:00 2001
From: Dale Curtis <dalecurtis@chromium.org>
Date: Thu, 17 May 2018 23:44:41 +0000
Subject: [PATCH] Remove dependency on ffmpeg internals for start time
calculations.
Some theora clips still have issues, but using first_dts where
we know it's the same as the first pts resolves the lingering
issues. It also looks like we don't need to use pts_buffer now.
This does the following small fixes:
- MEDIA_LOG(DEBUG) -> MEDIA_LOG(ERROR) for negative ts error.
- Enables previous disabled test in more limited state.
- Adds kNoFFmpegTimestamp so static_cast<int64_t>(AV_NOPTS_VALUE)
is no longer necessary everywhere. A followup patch set will use
this is more places.
- Removes pts_buffer and packet_buffer inspection.
BUG=731766
TEST=all tests pass.
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel
Change-Id: I5aadf67a3b5ea2d2a8dd19bbddd7b107208094c5
Reviewed-on: https://chromium-review.googlesource.com/1064538
Commit-Queue: Dale Curtis <dalecurtis@chromium.org>
Reviewed-by: Frank Liberato <liberato@chromium.org>
Cr-Commit-Position: refs/heads/master@{#559737}
---
media/ffmpeg/ffmpeg_common.h | 5 +-
media/filters/ffmpeg_demuxer.cc | 88 +++++++-----------------
media/filters/ffmpeg_demuxer_unittest.cc | 24 +++----
3 files changed, 37 insertions(+), 80 deletions(-)
diff --git a/media/ffmpeg/ffmpeg_common.h b/media/ffmpeg/ffmpeg_common.h
index ec33068fb84f..f641d6bcf92e 100644
--- a/media/ffmpeg/ffmpeg_common.h
+++ b/media/ffmpeg/ffmpeg_common.h
@@ -28,9 +28,6 @@ extern "C" {
MSVC_PUSH_DISABLE_WARNING(4244);
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
-#if !BUILDFLAG(USE_SYSTEM_FFMPEG)
-#include <libavformat/internal.h>
-#endif // !BUILDFLAG(USE_SYSTEM_FFMPEG)
#include <libavformat/avio.h>
#include <libavutil/avutil.h>
#include <libavutil/imgutils.h>
@@ -42,6 +39,8 @@ MSVC_POP_WARNING();
namespace media {
+constexpr int64_t kNoFFmpegTimestamp = static_cast<int64_t>(AV_NOPTS_VALUE);
+
class AudioDecoderConfig;
class EncryptionScheme;
class VideoDecoderConfig;
diff --git a/media/filters/ffmpeg_demuxer.cc b/media/filters/ffmpeg_demuxer.cc
index 49ca01c4dc0b..7402ce16ab5e 100644
--- a/media/filters/ffmpeg_demuxer.cc
+++ b/media/filters/ffmpeg_demuxer.cc
@@ -85,29 +85,26 @@ static base::TimeDelta FramesToTimeDelta(int frames, double sample_rate) {
frames * base::Time::kMicrosecondsPerSecond / sample_rate);
}
-static base::TimeDelta ExtractStartTime(AVStream* stream,
- base::TimeDelta start_time_estimate) {
- DCHECK(start_time_estimate != kNoTimestamp);
- if (stream->start_time == static_cast<int64_t>(AV_NOPTS_VALUE)) {
- return start_time_estimate == kInfiniteDuration ? base::TimeDelta()
- : start_time_estimate;
+static base::TimeDelta ExtractStartTime(AVStream* stream) {
+ // The default start time is zero.
+ base::TimeDelta start_time;
+
+ // First try to use the |start_time| value as is.
+ if (stream->start_time != kNoFFmpegTimestamp)
+ start_time = ConvertFromTimeBase(stream->time_base, stream->start_time);
+
+ // 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 &&
+ 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);
+ if (first_pts < start_time)
+ start_time = first_pts;
}
- // First try the lower of the estimate and the |start_time| value.
- base::TimeDelta start_time =
- std::min(ConvertFromTimeBase(stream->time_base, stream->start_time),
- start_time_estimate);
-
- // Next see if the first buffered pts value is usable.
- if (stream->pts_buffer[0] != static_cast<int64_t>(AV_NOPTS_VALUE)) {
- const base::TimeDelta buffered_pts =
- ConvertFromTimeBase(stream->time_base, stream->pts_buffer[0]);
- if (buffered_pts < start_time)
- start_time = buffered_pts;
- }
-
- // NOTE: Do not use AVStream->first_dts since |start_time| should be a
- // presentation timestamp.
return start_time;
}
@@ -513,7 +510,7 @@ void FFmpegDemuxerStream::EnqueuePacket(ScopedAVPacket packet) {
buffer->set_duration(kNoTimestamp);
}
- // Note: If pts is AV_NOPTS_VALUE, stream_timestamp will be kNoTimestamp.
+ // Note: If pts is kNoFFmpegTimestamp, stream_timestamp will be kNoTimestamp.
const base::TimeDelta stream_timestamp =
ConvertStreamTimestamp(stream_->time_base, packet->pts);
@@ -556,8 +553,8 @@ void FFmpegDemuxerStream::EnqueuePacket(ScopedAVPacket packet) {
// code paths below; otherwise they should be treated as a parse error.
if ((!fixup_chained_ogg_ || last_packet_timestamp_ == kNoTimestamp) &&
buffer->timestamp() < base::TimeDelta()) {
- MEDIA_LOG(DEBUG, media_log_)
- << "FFmpegDemuxer: unfixable negative timestamp";
+ MEDIA_LOG(ERROR, media_log_)
+ << "FFmpegDemuxer: unfixable negative timestamp.";
demuxer_->NotifyDemuxerError(DEMUXER_ERROR_COULD_NOT_PARSE);
return;
}
@@ -863,7 +860,7 @@ std::string FFmpegDemuxerStream::GetMetadata(const char* key) const {
base::TimeDelta FFmpegDemuxerStream::ConvertStreamTimestamp(
const AVRational& time_base,
int64_t timestamp) {
- if (timestamp == static_cast<int64_t>(AV_NOPTS_VALUE))
+ if (timestamp == kNoFFmpegTimestamp)
return kNoTimestamp;
return ConvertFromTimeBase(time_base, timestamp);
@@ -1256,42 +1253,6 @@ void FFmpegDemuxer::OnFindStreamInfoDone(const PipelineStatusCB& status_cb,
AVFormatContext* format_context = glue_->format_context();
streams_.resize(format_context->nb_streams);
- // Estimate the start time for each stream by looking through the packets
- // buffered during avformat_find_stream_info(). These values will be
- // considered later when determining the actual stream start time.
- //
- // These packets haven't been completely processed yet, so only look through
- // these values if the AVFormatContext has a valid start time.
- //
- // If no estimate is found, the stream entry will be kInfiniteDuration.
- std::vector<base::TimeDelta> start_time_estimates(format_context->nb_streams,
- kInfiniteDuration);
-#if !BUILDFLAG(USE_SYSTEM_FFMPEG)
- const AVFormatInternal* internal = format_context->internal;
- if (internal && internal->packet_buffer &&
- format_context->start_time != static_cast<int64_t>(AV_NOPTS_VALUE)) {
- struct AVPacketList* packet_buffer = internal->packet_buffer;
- while (packet_buffer != internal->packet_buffer_end) {
- DCHECK_LT(static_cast<size_t>(packet_buffer->pkt.stream_index),
- start_time_estimates.size());
- const AVStream* stream =
- format_context->streams[packet_buffer->pkt.stream_index];
- if (packet_buffer->pkt.pts != static_cast<int64_t>(AV_NOPTS_VALUE)) {
- const base::TimeDelta packet_pts =
- ConvertFromTimeBase(stream->time_base, packet_buffer->pkt.pts);
- // We ignore kNoTimestamp here since -int64_t::min() is possible; see
- // https://crbug.com/700501. Technically this is a valid value, but in
- // practice shouldn't occur, so just ignore it when estimating.
- if (packet_pts != kNoTimestamp && packet_pts != kInfiniteDuration &&
- packet_pts < start_time_estimates[stream->index]) {
- start_time_estimates[stream->index] = packet_pts;
- }
- }
- packet_buffer = packet_buffer->next;
- }
- }
-#endif // !BUILDFLAG(USE_SYSTEM_FFMPEG)
-
std::unique_ptr<MediaTracks> media_tracks(new MediaTracks());
DCHECK(track_id_to_demux_stream_map_.empty());
@@ -1440,8 +1401,7 @@ void FFmpegDemuxer::OnFindStreamInfoDone(const PipelineStatusCB& status_cb,
max_duration = std::max(max_duration, streams_[i]->duration());
- base::TimeDelta start_time =
- ExtractStartTime(stream, start_time_estimates[i]);
+ base::TimeDelta start_time = ExtractStartTime(stream);
// Note: This value is used for seeking, so we must take the true value and
// not the one possibly clamped to zero below.
@@ -1479,7 +1439,7 @@ void FFmpegDemuxer::OnFindStreamInfoDone(const PipelineStatusCB& status_cb,
if (text_enabled_)
AddTextStreams();
- if (format_context->duration != static_cast<int64_t>(AV_NOPTS_VALUE)) {
+ if (format_context->duration != kNoFFmpegTimestamp) {
// If there is a duration value in the container use that to find the
// maximum between it and the duration from A/V streams.
const AVRational av_time_base = {1, AV_TIME_BASE};
diff --git a/media/filters/ffmpeg_demuxer_unittest.cc b/media/filters/ffmpeg_demuxer_unittest.cc
index 71dbed07b376..b09816a3ba3a 100644
--- a/media/filters/ffmpeg_demuxer_unittest.cc
+++ b/media/filters/ffmpeg_demuxer_unittest.cc
@@ -696,12 +696,9 @@ TEST_F(FFmpegDemuxerTest, Read_InvalidNegativeTimestamp) {
ReadUntilEndOfStream(GetStream(DemuxerStream::AUDIO));
}
-// TODO(dalecurtis): Test is disabled since FFmpeg does not currently guarantee
-// the order of demuxed packets in OGG containers. Re-enable and fix key frame
-// expectations once we decide to either workaround it or attempt a fix
-// upstream. See http://crbug.com/387996.
-TEST_F(FFmpegDemuxerTest,
- DISABLED_Read_AudioNegativeStartTimeAndOggDiscard_Bear) {
+// Android has no Theora support, so these tests doesn't work.
+#if !defined(OS_ANDROID)
+TEST_F(FFmpegDemuxerTest, Read_AudioNegativeStartTimeAndOggDiscard_Bear) {
// Many ogg files have negative starting timestamps, so ensure demuxing and
// seeking work correctly with a negative start time.
CreateDemuxer("bear.ogv");
@@ -711,8 +708,12 @@ TEST_F(FFmpegDemuxerTest,
DemuxerStream* video = GetStream(DemuxerStream::VIDEO);
DemuxerStream* audio = GetStream(DemuxerStream::AUDIO);
- // Run the test twice with a seek in between.
- for (int i = 0; i < 2; ++i) {
+ // Run the test once (should be twice..., see note) with a seek in between.
+ //
+ // TODO(dalecurtis): We only run the test once since FFmpeg does not currently
+ // guarantee the order of demuxed packets in OGG containers. See
+ // http://crbug.com/387996.
+ for (int i = 0; i < 1; ++i) {
audio->Read(
NewReadCBWithCheckedDiscard(FROM_HERE, 40, 0, kInfiniteDuration, true));
base::RunLoop().Run();
@@ -731,10 +732,10 @@ TEST_F(FFmpegDemuxerTest,
video->Read(NewReadCB(FROM_HERE, 5751, 0, true));
base::RunLoop().Run();
- video->Read(NewReadCB(FROM_HERE, 846, 33367, true));
+ video->Read(NewReadCB(FROM_HERE, 846, 33367, false));
base::RunLoop().Run();
- video->Read(NewReadCB(FROM_HERE, 1255, 66733, true));
+ video->Read(NewReadCB(FROM_HERE, 1255, 66733, false));
base::RunLoop().Run();
// Seek back to the beginning and repeat the test.
@@ -747,9 +748,6 @@ TEST_F(FFmpegDemuxerTest,
// Same test above, but using sync2.ogv which has video stream muxed before the
// audio stream, so seeking based only on start time will fail since ffmpeg is
// essentially just seeking based on file position.
-//
-// Android has no Theora support, so this test doesn't work.
-#if !defined(OS_ANDROID)
TEST_F(FFmpegDemuxerTest, Read_AudioNegativeStartTimeAndOggDiscard_Sync) {
// Many ogg files have negative starting timestamps, so ensure demuxing and
// seeking work correctly with a negative start time.
--
2.17.0