mirror of
https://abf.rosa.ru/djam/chromium-browser-stable-slava86.git
synced 2025-02-24 07:52:54 +00:00
Updated Google API
This commit is contained in:
parent
45d0e286e5
commit
8964c5693c
11 changed files with 43 additions and 478 deletions
2
.abf.yml
2
.abf.yml
|
@ -1,5 +1,5 @@
|
|||
sources:
|
||||
chromium-67.0.3396.99.tar.xz: 8deb0a383a86bfd7c2ae1cbf6582449d9ad55e38
|
||||
chromium-66.0.3359.181.tar.xz: 5c3f055f227666ecadbc5d0e3ba999b4ffb318d1
|
||||
depot_tools.tar.xz: 082b7f9a4dfa7eb03900755b4866aef2d73543a5
|
||||
icons.tar.bz2: a835954af164bf38f8ea4ea80608839bed7800a3
|
||||
new-system-icons.tar.xz: 89339b8b3b05359a8745ed7968fe148902a2fa28
|
||||
|
|
|
@ -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
|
||||
--- 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
|
||||
@@ -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:no_chromium_code",
|
||||
- "//build/config/sanitizers:cfi_icall_generalize_pointers",
|
||||
- ":pdfium_third_party_config",
|
||||
-
|
||||
- # 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") {
|
||||
@@ -477,61 +442,13 @@
|
||||
@@ -474,61 +440,13 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
|
10
chromium-53-bignum-werror-fix.patch
Normal file
10
chromium-53-bignum-werror-fix.patch
Normal 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" ]
|
||||
}
|
||||
|
|
@ -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 2017-08-30 15:47:23.952221630 +0200
|
||||
@@ -91,6 +91,9 @@ static const MimeInfo kPrimaryMappings[]
|
||||
{"image/jpeg", "jpeg,jpg"},
|
||||
{"image/png", "png"},
|
||||
{"image/apng", "png"},
|
||||
{"image/webp", "webp"},
|
||||
+ {"video/x-matroska", "mkv"},
|
||||
+ {"audio/x-matroska", "mkv"},
|
||||
|
|
|
@ -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" ]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -34,8 +34,8 @@
|
|||
|
||||
Summary: A fast web browser based on the Blink engine
|
||||
Name: chromium-browser-stable
|
||||
Version: 67.0.3396.99
|
||||
Release: 1
|
||||
Version: 66.0.3359.181
|
||||
Release: 2
|
||||
License: BSD, LGPL
|
||||
Group: Networking/WWW
|
||||
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
|
||||
|
||||
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)
|
||||
Patch28: chromium-53-gn-system-icu-jsoncpp.patch
|
||||
%endif
|
||||
# (cjw) build pdfium with system libtiff and libpng
|
||||
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.
|
||||
|
@ -83,7 +83,7 @@ Patch502: chromium-45.0.2454.101-system-icu-54-does-not-have-detectHostTimeZone.
|
|||
Patch504: chromium-system-icu-r0.patch
|
||||
# https://aur.archlinux.org/packages/chromium-vaapi/
|
||||
Patch508: chromium-vaapi-r18.patch
|
||||
Patch509: chromium-widevine-r2.patch
|
||||
Patch509: chromium-widevine.patch
|
||||
|
||||
# ROSA Build
|
||||
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
|
||||
# http://ftp.riken.jp/Linux/gentoo/www-client/chromium/files/
|
||||
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}
|
||||
Conflicts: chromium-browser-unstable
|
||||
|
@ -276,9 +272,8 @@ members of the Chromium and WebDriver teams.
|
|||
|
||||
%patch4 -p1 -b .prefs
|
||||
%patch22 -p1
|
||||
%if 0%{jsoncpp}
|
||||
%patch23 -p1
|
||||
%patch28 -p1
|
||||
%endif
|
||||
%patch30 -p1
|
||||
%patch32 -p1
|
||||
%if 0%{?ffmpeg}
|
||||
|
@ -309,9 +304,6 @@ members of the Chromium and WebDriver teams.
|
|||
%patch604 -p1
|
||||
%patch605 -p1
|
||||
|
||||
%patch607 -p1
|
||||
%patch608 -p1
|
||||
|
||||
mkdir -p third_party/llvm-build/Release+Asserts/bin
|
||||
pushd third_party/llvm-build/Release+Asserts/bin
|
||||
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 tools/gyp/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/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
|
||||
%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!
|
||||
%define gn_config use_sysroot=false \
|
||||
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} \
|
||||
custom_toolchain="%{_sourcedir}:default" \
|
||||
proprietary_codecs=true \
|
||||
linux_link_libgio = true \
|
||||
linux_link_libudev = true \
|
||||
linux_link_libspeechd = 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 \
|
||||
use_system_libjpeg=true \
|
||||
use_libjpeg_turbo=false \
|
||||
enable_widevine=%{is_widevine} \
|
||||
enable_widevine=true \
|
||||
pdf_enable_xfa=true \
|
||||
use_pulseaudio=true \
|
||||
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
|
||||
|
||||
pushd out/Release
|
||||
# widevinecdmadapter
|
||||
# Build error with widevinecdmadapter in 67.0.3396.62
|
||||
ninja %{_smp_mflags} chrome chrome_sandbox chromedriver
|
||||
ninja %{_smp_mflags} chrome chrome_sandbox chromedriver widevinecdmadapter
|
||||
popd
|
||||
|
||||
%install
|
||||
|
@ -519,6 +501,7 @@ install -m 4755 out/Release/chrome_sandbox %{buildroot}%{_crdir}/chrome-sandbox
|
|||
cp -a out/Release/chromedriver %{buildroot}%{_crdir}/chromedriver
|
||||
install -m 644 out/Release/*.pak %{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/resources.pak %{buildroot}%{_crdir}/
|
||||
|
|
|
@ -188,111 +188,3 @@ Type=Application
|
|||
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;
|
||||
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]=Cửa sổ Mới
|
||||
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]=Cửa sổ ẩn danh mới
|
||||
Name[zh_CN]=新建隐身窗口
|
||||
Name[zh_TW]=新增無痕式視窗
|
||||
Exec=chromium-browser --incognito
|
||||
|
||||
|
|
|
@ -117,7 +117,7 @@ Signed-off-by: Daniel Charles <daniel.charles@intel.com>
|
|||
+#endif
|
||||
::switches::kDisableBlinkFeatures,
|
||||
::switches::kDisableCastStreamingHWEncoding,
|
||||
::switches::kDisableGpu,
|
||||
::switches::kDisableDistanceFieldText,
|
||||
@@ -163,7 +169,7 @@ void DeriveCommandLine(const GURL& start
|
||||
::switches::kDisableWebGLImageChromium,
|
||||
::switches::kEnableWebGLImageChromium,
|
||||
|
@ -213,10 +213,10 @@ Signed-off-by: Daniel Charles <daniel.charles@intel.com>
|
|||
|
||||
--- a/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",
|
||||
SafeGetFeatureStatus(manager,
|
||||
gpu::GPU_FEATURE_TYPE_ACCELERATED_VIDEO_DECODE),
|
||||
manager->GetFeatureStatus(
|
||||
gpu::GPU_FEATURE_TYPE_ACCELERATED_VIDEO_DECODE),
|
||||
+#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(OS_ANDROID)
|
||||
+ !command_line.HasSwitch(switches::kEnableAcceleratedVideo),
|
||||
+#else
|
||||
|
@ -291,9 +291,9 @@ Signed-off-by: Daniel Charles <daniel.charles@intel.com>
|
|||
+#else
|
||||
switches::kDisableAcceleratedVideoDecode,
|
||||
+#endif
|
||||
switches::kDisableBackgroundTasks,
|
||||
switches::kDisableBackgroundTimerThrottling,
|
||||
switches::kDisableBreakpad,
|
||||
switches::kDisableCompositorUkmForTests,
|
||||
@@ -2658,8 +2662,10 @@ void RenderProcessHostImpl::PropagateBro
|
||||
switches::kDisableMojoRenderer,
|
||||
#endif
|
||||
|
@ -477,9 +477,9 @@ Signed-off-by: Daniel Charles <daniel.charles@intel.com>
|
|||
|
||||
--- a/content/renderer/render_thread_impl.cc
|
||||
+++ b/content/renderer/render_thread_impl.cc
|
||||
@@ -1578,7 +1578,11 @@
|
||||
kGpuStreamIdMedia, kGpuStreamPriorityMedia);
|
||||
|
||||
@@ -1581,7 +1581,11 @@ media::GpuVideoAcceleratorFactories* Ren
|
||||
scoped_refptr<base::SingleThreadTaskRunner> media_task_runner =
|
||||
GetMediaThreadTaskRunner();
|
||||
const bool enable_video_accelerator =
|
||||
+#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
|
||||
+ cmd_line->HasSwitch(switches::kEnableAcceleratedVideo) &&
|
||||
|
|
|
@ -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
10
chromium-widevine.patch
Normal 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_
|
|
@ -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
|
||||
|
Loading…
Add table
Reference in a new issue