mirror of
https://abf.rosa.ru/djam/chromium-browser-stable-slava86.git
synced 2025-02-23 15:32:54 +00:00
109.0.5414.119
This commit is contained in:
parent
c8f1c9e3b1
commit
eaa89e5f73
10 changed files with 492 additions and 79 deletions
8
.abf.yml
8
.abf.yml
|
@ -1,7 +1,11 @@
|
|||
sources:
|
||||
chromium-106.0.5249.61.tar.xz: 7170bc9699451d8b8664fca9dae7bca5557fe21c
|
||||
chromium-gost-2980e5bb5bec4bd52b615fc94a47ad2f29fcaae8.tar.gz: 68828d3dfd199535030c2f685a003b26e815b72b
|
||||
22x22_chromium.svg: 045aa39ba3e340ba5e2c4366ad34f909001c02f9
|
||||
48x48_chromium.svg: bbaa00aeb7b4f9820bc29474c5c1964ed17b32cc
|
||||
chromium-109.0.5414.119.tar.xz: da8546ed117895bd1c80ac6708d3b422bd2dd1f2
|
||||
chromium-gost-59b267ec653c1cbc13af73f5dff4757018331ff2.tar.gz: 0d706b72f70117b707005823daaaf1514eff6654
|
||||
chromium-gost-d8f964ab4cbcb2d054391ebdde7e8f70f3bace60.tar.gz: 8f09d03f4cd11b7ae0e8f816391bb53799713ab9
|
||||
depot_tools.tar.xz: 082b7f9a4dfa7eb03900755b4866aef2d73543a5
|
||||
icons-2012.tar.bz2: a835954af164bf38f8ea4ea80608839bed7800a3
|
||||
msspi-0d09dc6de9df58041fc385ac49e5778323e547f4.tar.gz: 6bc512f9bffae44418d9482f3ad7395864a8dc24
|
||||
rosa-logo-for-new-tab-page.svg: a01c204d34d1c8a8e4cb865891b1fd2720ff431c
|
||||
xcb-proto-1.14.1.tar.xz: 836d5b2dd00ff21bd038e92764fda9a256a1b022
|
||||
|
|
|
@ -23,10 +23,10 @@ but it would make Yandex.ru be the default even for not Russian users.
|
|||
2 files changed, 20 insertions(+), 16 deletions(-)
|
||||
|
||||
diff --git a/components/search_engines/prepopulated_engines.json b/components/search_engines/prepopulated_engines.json
|
||||
index 13572d4355..cc449a1ccb 100644
|
||||
index 5a0bf4d..49be5d2 100644
|
||||
--- a/components/search_engines/prepopulated_engines.json
|
||||
+++ b/components/search_engines/prepopulated_engines.json
|
||||
@@ -553,7 +553,7 @@
|
||||
@@ -557,7 +557,7 @@
|
||||
"suggest_url": "https://suggest.yandex.by/suggest-ff.cgi?part={searchTerms}&{google:cursorPosition}",
|
||||
"image_url": "https://yandex.by/images/search/?rpt=imageview",
|
||||
"image_url_post_params": "upfile={google:imageThumbnail},original_width={google:imageOriginalWidth},original_height={google:imageOriginalHeight},prg=1",
|
||||
|
@ -35,7 +35,7 @@ index 13572d4355..cc449a1ccb 100644
|
|||
"type": "SEARCH_ENGINE_YANDEX",
|
||||
"id": 15
|
||||
},
|
||||
@@ -566,6 +566,7 @@
|
||||
@@ -570,6 +570,7 @@
|
||||
"suggest_url": "https://suggest.yandex.com/suggest-ff.cgi?part={searchTerms}&{google:cursorPosition}&uil=en&v=3&sn=5",
|
||||
"image_url": "https://yandex.com/images/search?rpt=imageview",
|
||||
"image_url_post_params": "upfile={google:imageThumbnail},original_width={google:imageOriginalWidth},original_height={google:imageOriginalHeight},prg=1",
|
||||
|
@ -43,7 +43,7 @@ index 13572d4355..cc449a1ccb 100644
|
|||
"type": "SEARCH_ENGINE_YANDEX",
|
||||
"id": 15
|
||||
},
|
||||
@@ -579,7 +580,7 @@
|
||||
@@ -583,7 +584,7 @@
|
||||
"suggest_url": "https://suggest.yandex.kz/suggest-ff.cgi?part={searchTerms}&{google:cursorPosition}",
|
||||
"image_url": "https://yandex.kz/images/search/?rpt=imageview",
|
||||
"image_url_post_params": "upfile={google:imageThumbnail},original_width={google:imageOriginalWidth},original_height={google:imageOriginalHeight},prg=1",
|
||||
|
@ -52,7 +52,7 @@ index 13572d4355..cc449a1ccb 100644
|
|||
"type": "SEARCH_ENGINE_YANDEX",
|
||||
"id": 15
|
||||
},
|
||||
@@ -593,7 +594,7 @@
|
||||
@@ -597,7 +598,7 @@
|
||||
"suggest_url": "https://suggest.yandex.ru/suggest-ff.cgi?part={searchTerms}&{google:cursorPosition}",
|
||||
"image_url": "https://yandex.ru/images/search/?rpt=imageview",
|
||||
"image_url_post_params": "upfile={google:imageThumbnail},original_width={google:imageOriginalWidth},original_height={google:imageOriginalHeight},prg=1",
|
||||
|
@ -61,7 +61,7 @@ index 13572d4355..cc449a1ccb 100644
|
|||
"type": "SEARCH_ENGINE_YANDEX",
|
||||
"id": 15
|
||||
},
|
||||
@@ -606,7 +607,7 @@
|
||||
@@ -610,7 +611,7 @@
|
||||
"suggest_url": "https://suggest.yandex.com.tr/suggest-ff.cgi?part={searchTerms}&{google:cursorPosition}",
|
||||
"image_url": "https://yandex.com.tr/gorsel/search?rpt=imageview",
|
||||
"image_url_post_params": "upfile={google:imageThumbnail},original_width={google:imageOriginalWidth},original_height={google:imageOriginalHeight},prg=1",
|
||||
|
@ -70,11 +70,12 @@ index 13572d4355..cc449a1ccb 100644
|
|||
"type": "SEARCH_ENGINE_YANDEX",
|
||||
"id": 15
|
||||
},
|
||||
|
||||
diff --git a/components/search_engines/template_url_prepopulate_data.cc b/components/search_engines/template_url_prepopulate_data.cc
|
||||
index e38343c221..4759cd6711 100644
|
||||
index bb2366e..6cc8a24 100644
|
||||
--- a/components/search_engines/template_url_prepopulate_data.cc
|
||||
+++ b/components/search_engines/template_url_prepopulate_data.cc
|
||||
@@ -28,6 +28,7 @@ namespace {
|
||||
@@ -29,6 +29,7 @@ namespace {
|
||||
|
||||
// Default (for countries with no better engine set)
|
||||
const PrepopulatedEngine* const engines_default[] = {
|
||||
|
@ -82,7 +83,7 @@ index e38343c221..4759cd6711 100644
|
|||
&google,
|
||||
&bing,
|
||||
&yahoo,
|
||||
@@ -155,8 +156,8 @@ const PrepopulatedEngine* const engines_BR[] = {
|
||||
@@ -156,8 +157,8 @@ const PrepopulatedEngine* const engines_BR[] = {
|
||||
|
||||
// Belarus
|
||||
const PrepopulatedEngine* const engines_BY[] = {
|
||||
|
@ -92,7 +93,7 @@ index e38343c221..4759cd6711 100644
|
|||
&mail_ru,
|
||||
&bing,
|
||||
&duckduckgo,
|
||||
@@ -434,10 +435,10 @@ const PrepopulatedEngine* const engines_IN[] = {
|
||||
@@ -435,10 +436,10 @@ const PrepopulatedEngine* const engines_IN[] = {
|
||||
|
||||
// Iraq
|
||||
const PrepopulatedEngine* const engines_IQ[] = {
|
||||
|
@ -104,7 +105,7 @@ index e38343c221..4759cd6711 100644
|
|||
&duckduckgo,
|
||||
};
|
||||
|
||||
@@ -524,8 +525,8 @@ const PrepopulatedEngine* const engines_KW[] = {
|
||||
@@ -525,8 +526,8 @@ const PrepopulatedEngine* const engines_KW[] = {
|
||||
|
||||
// Kazakhstan
|
||||
const PrepopulatedEngine* const engines_KZ[] = {
|
||||
|
@ -114,7 +115,7 @@ index e38343c221..4759cd6711 100644
|
|||
&mail_ru,
|
||||
&bing,
|
||||
&duckduckgo,
|
||||
@@ -794,8 +795,8 @@ const PrepopulatedEngine* const engines_RS[] = {
|
||||
@@ -795,8 +796,8 @@ const PrepopulatedEngine* const engines_RS[] = {
|
||||
|
||||
// Russia
|
||||
const PrepopulatedEngine* const engines_RU[] = {
|
||||
|
@ -124,7 +125,7 @@ index e38343c221..4759cd6711 100644
|
|||
&mail_ru,
|
||||
&bing,
|
||||
&duckduckgo,
|
||||
@@ -893,8 +894,8 @@ const PrepopulatedEngine* const engines_TN[] = {
|
||||
@@ -894,8 +895,8 @@ const PrepopulatedEngine* const engines_TN[] = {
|
||||
|
||||
// Turkey
|
||||
const PrepopulatedEngine* const engines_TR[] = {
|
||||
|
@ -134,14 +135,13 @@ index e38343c221..4759cd6711 100644
|
|||
&yahoo_tr,
|
||||
&bing,
|
||||
&duckduckgo,
|
||||
@@ -1381,13 +1382,15 @@ std::vector<std::unique_ptr<TemplateURLData>> GetPrepopulatedEngines(
|
||||
@@ -1381,12 +1382,15 @@ std::vector<std::unique_ptr<TemplateURLData>> GetPrepopulatedEngines(
|
||||
t_urls = GetPrepopulationSetFromCountryID(
|
||||
country_codes::GetCountryIDFromPrefs(prefs));
|
||||
}
|
||||
- if (default_search_provider_index) {
|
||||
- const auto itr = std::find_if(
|
||||
- t_urls.begin(), t_urls.end(),
|
||||
- [](const auto& t_url) { return t_url->prepopulate_id == google.id; });
|
||||
- const auto itr =
|
||||
- base::ranges::find(t_urls, google.id, &TemplateURLData::prepopulate_id);
|
||||
- *default_search_provider_index =
|
||||
- itr == t_urls.end() ? 0 : std::distance(t_urls.begin(), itr);
|
||||
- }
|
||||
|
@ -157,6 +157,3 @@ index e38343c221..4759cd6711 100644
|
|||
return t_urls;
|
||||
}
|
||||
|
||||
--
|
||||
2.35.2
|
||||
|
||||
|
|
|
@ -1,29 +1,16 @@
|
|||
From 60e68a6bbac3904a68d1270843f839cf4c56883a Mon Sep 17 00:00:00 2001
|
||||
From: Mikhail Novosyolov <m.novosyolov@rosalinux.ru>
|
||||
Date: Mon, 30 May 2022 00:43:20 +0300
|
||||
Subject: [PATCH] Remove voice search button
|
||||
|
||||
Remove voice search button from chrome://new-tab-page.
|
||||
Firstly, Google APIs keys do not work now and this button also does not work.
|
||||
Secondly, we use Yandex as the default search for most users, and Google's voice search is irrelevant.
|
||||
---
|
||||
chrome/browser/resources/new_tab_page/realbox/realbox.html | 3 ---
|
||||
1 file changed, 3 deletions(-)
|
||||
|
||||
diff --git a/chrome/browser/resources/new_tab_page/realbox/realbox.html b/chrome/browser/resources/new_tab_page/realbox/realbox.html
|
||||
index 4f411aaf24..265dda16fe 100644
|
||||
index 2e91c57..fbdf426 100644
|
||||
--- a/chrome/browser/resources/new_tab_page/realbox/realbox.html
|
||||
+++ b/chrome/browser/resources/new_tab_page/realbox/realbox.html
|
||||
@@ -137,9 +137,6 @@
|
||||
@@ -187,11 +187,6 @@
|
||||
<ntp-realbox-icon id="icon" match="[[selectedMatch_]]"
|
||||
default-icon="[[realboxIcon_]]" in-searchbox>
|
||||
</ntp-realbox-icon>
|
||||
- <button id="voiceSearchButton" on-click="onVoiceSearchClick_"
|
||||
- title="$i18n{voiceSearchButtonLabel}">
|
||||
- <button id="voiceSearchButton"
|
||||
- class="realbox-icon-button"
|
||||
- on-click="onVoiceSearchClick_"
|
||||
- title="$i18n{voiceSearchButtonLabel}">
|
||||
- </button>
|
||||
<ntp-realbox-dropdown id="matches" role="listbox" theme="[[theme]]"
|
||||
result="[[result_]]" selected-match-index="{{selectedMatchIndex_}}"
|
||||
on-result-repaint="onResultRepaint_" on-match-focusin="onMatchFocusin_"
|
||||
--
|
||||
2.35.2
|
||||
|
||||
<template is="dom-if" if="[[realboxLensSearchEnabled_]]">
|
||||
<button id="lensSearchButton"
|
||||
class="realbox-icon-button"
|
||||
|
|
|
@ -22,8 +22,9 @@ if they want to use their own API keys.
|
|||
chrome/browser/ui/views/profiles/profile_menu_view.cc | 9 ++++-----
|
||||
3 files changed, 8 insertions(+), 5 deletions(-)
|
||||
|
||||
|
||||
diff --git a/chrome/browser/resources/settings/people_page/sync_account_control.html b/chrome/browser/resources/settings/people_page/sync_account_control.html
|
||||
index 70b3128642..b91ea8675a 100644
|
||||
index 26d7e46..38dd350 100644
|
||||
--- a/chrome/browser/resources/settings/people_page/sync_account_control.html
|
||||
+++ b/chrome/browser/resources/settings/people_page/sync_account_control.html
|
||||
@@ -117,6 +117,7 @@
|
||||
|
@ -43,10 +44,10 @@ index 70b3128642..b91ea8675a 100644
|
|||
<div class="cr-row first two-line" id="avatar-row">
|
||||
<div id="avatar-container">
|
||||
diff --git a/chrome/browser/resources/welcome/signin_view.html b/chrome/browser/resources/welcome/signin_view.html
|
||||
index b8ef23a4dc..b127c5b48a 100644
|
||||
index 9311059..0f697ff 100644
|
||||
--- a/chrome/browser/resources/welcome/signin_view.html
|
||||
+++ b/chrome/browser/resources/welcome/signin_view.html
|
||||
@@ -10,6 +10,7 @@
|
||||
@@ -9,6 +9,7 @@
|
||||
outline: none;
|
||||
}
|
||||
</style>
|
||||
|
@ -54,13 +55,13 @@ index b8ef23a4dc..b127c5b48a 100644
|
|||
<div id="container">
|
||||
<onboarding-background id="background" class="fade-in">
|
||||
</onboarding-background>
|
||||
@@ -24,3 +25,4 @@
|
||||
@@ -25,3 +26,4 @@
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
+-->
|
||||
diff --git a/chrome/browser/ui/views/profiles/profile_menu_view.cc b/chrome/browser/ui/views/profiles/profile_menu_view.cc
|
||||
index 1d9b51a8ec..0c597d2e67 100644
|
||||
index 8cf74d6..6e80536 100644
|
||||
--- a/chrome/browser/ui/views/profiles/profile_menu_view.cc
|
||||
+++ b/chrome/browser/ui/views/profiles/profile_menu_view.cc
|
||||
@@ -180,9 +180,7 @@ gfx::ImageSkia ProfileMenuView::GetSyncIcon() const {
|
||||
|
@ -74,7 +75,7 @@ index 1d9b51a8ec..0c597d2e67 100644
|
|||
if (!is_sync_feature_enabled) {
|
||||
// This is done regardless of GetAvatarSyncErrorType() because the icon
|
||||
// should reflect that sync-the-feature is off. The error will still be
|
||||
@@ -517,8 +515,7 @@ void ProfileMenuView::BuildSyncInfo() {
|
||||
@@ -526,8 +524,7 @@ void ProfileMenuView::BuildSyncInfo() {
|
||||
|
||||
signin::IdentityManager* identity_manager =
|
||||
IdentityManagerFactory::GetForProfile(profile);
|
||||
|
@ -84,7 +85,7 @@ index 1d9b51a8ec..0c597d2e67 100644
|
|||
// First, check for sync errors. They may exist even if sync-the-feature is
|
||||
// disabled and only sync-the-transport is running.
|
||||
const absl::optional<AvatarSyncErrorType> error =
|
||||
@@ -546,6 +543,7 @@ void ProfileMenuView::BuildSyncInfo() {
|
||||
@@ -555,6 +552,7 @@ void ProfileMenuView::BuildSyncInfo() {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -92,7 +93,7 @@ index 1d9b51a8ec..0c597d2e67 100644
|
|||
// If there's no error and sync-the-feature is disabled, show a sync promo.
|
||||
// For a signed-in user, the promo just opens the "turn on sync" dialog.
|
||||
// For a signed-out user, it prompts for sign-in first.
|
||||
@@ -573,6 +571,7 @@ void ProfileMenuView::BuildSyncInfo() {
|
||||
@@ -582,6 +580,7 @@ void ProfileMenuView::BuildSyncInfo() {
|
||||
/*show_sync_badge=*/false);
|
||||
#endif
|
||||
}
|
||||
|
@ -100,6 +101,3 @@ index 1d9b51a8ec..0c597d2e67 100644
|
|||
}
|
||||
|
||||
void ProfileMenuView::BuildFeatureButtons() {
|
||||
--
|
||||
2.35.2
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ Note: it is a hack. Text size depends on font and size.
|
|||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/ui/webui/resources/cr_components/most_visited/most_visited.html b/ui/webui/resources/cr_components/most_visited/most_visited.html
|
||||
index fa00ea2729..fc06516c2e 100644
|
||||
index 94c6d39..5c01a88 100644
|
||||
--- a/ui/webui/resources/cr_components/most_visited/most_visited.html
|
||||
+++ b/ui/webui/resources/cr_components/most_visited/most_visited.html
|
||||
@@ -5,7 +5,7 @@
|
||||
|
@ -27,7 +27,7 @@ index fa00ea2729..fc06516c2e 100644
|
|||
--title-height: 32px;
|
||||
}
|
||||
|
||||
@@ -135,7 +135,7 @@
|
||||
@@ -154,7 +154,7 @@
|
||||
line-height: calc(var(--title-height) / 2);
|
||||
margin-top: 6px;
|
||||
padding: 2px 8px;
|
||||
|
@ -36,6 +36,3 @@ index fa00ea2729..fc06516c2e 100644
|
|||
}
|
||||
|
||||
:host([use-title-pill_]) .tile-title {
|
||||
--
|
||||
2.35.2
|
||||
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
## Prevent request attempts
|
||||
# chrome://discards/ attempts to use d3 to display the graph
|
||||
diff --git a/chrome/browser/new_tab_page/one_google_bar/one_google_bar_loader_impl.cc b/chrome/browser/new_tab_page/one_google_bar/one_google_bar_loader_impl.cc
|
||||
index d31f73e..dc92b2a 100644
|
||||
--- a/chrome/browser/new_tab_page/one_google_bar/one_google_bar_loader_impl.cc
|
||||
+++ b/chrome/browser/new_tab_page/one_google_bar/one_google_bar_loader_impl.cc
|
||||
@@ -287,6 +287,7 @@ OneGoogleBarLoaderImpl::OneGoogleBarLoad
|
||||
@@ -287,6 +287,7 @@ OneGoogleBarLoaderImpl::OneGoogleBarLoaderImpl(
|
||||
OneGoogleBarLoaderImpl::~OneGoogleBarLoaderImpl() = default;
|
||||
|
||||
void OneGoogleBarLoaderImpl::Load(OneGoogleCallback callback) {
|
||||
|
@ -10,6 +12,8 @@
|
|||
callbacks_.push_back(std::move(callback));
|
||||
|
||||
// Note: If there is an ongoing request, abandon it. It's possible that
|
||||
diff --git a/chrome/browser/new_tab_page/promos/promo_service.cc b/chrome/browser/new_tab_page/promos/promo_service.cc
|
||||
index 6e55aac..9710e55 100644
|
||||
--- a/chrome/browser/new_tab_page/promos/promo_service.cc
|
||||
+++ b/chrome/browser/new_tab_page/promos/promo_service.cc
|
||||
@@ -171,6 +171,7 @@ PromoService::PromoService(
|
||||
|
@ -20,9 +24,11 @@
|
|||
std::string command_id;
|
||||
// Replace the promo URL with "command:<id>" if such a command ID is set
|
||||
// via the feature params.
|
||||
diff --git a/chrome/browser/resources/discards/graph_doc_template.html b/chrome/browser/resources/discards/graph_doc_template.html
|
||||
index 707f75a..8eb7a52 100644
|
||||
--- a/chrome/browser/resources/discards/graph_doc_template.html
|
||||
+++ b/chrome/browser/resources/discards/graph_doc_template.html
|
||||
@@ -78,10 +78,6 @@ URL. As result, this document needs to b
|
||||
@@ -78,10 +78,6 @@ URL. As result, this document needs to be self-contained, hence inline scripts.
|
||||
}
|
||||
|
||||
</style>
|
||||
|
@ -33,6 +39,8 @@
|
|||
<script type="application/javascript">
|
||||
${javascript_file}
|
||||
</script>
|
||||
diff --git a/chrome/browser/search/background/ntp_background_service.cc b/chrome/browser/search/background/ntp_background_service.cc
|
||||
index 3129a3c..31de4ff 100644
|
||||
--- a/chrome/browser/search/background/ntp_background_service.cc
|
||||
+++ b/chrome/browser/search/background/ntp_background_service.cc
|
||||
@@ -84,6 +84,7 @@ void NtpBackgroundService::Shutdown() {
|
||||
|
@ -43,9 +51,11 @@
|
|||
if (collections_loader_ != nullptr)
|
||||
return;
|
||||
collection_error_info_.ClearError();
|
||||
diff --git a/chrome/browser/spellchecker/spellcheck_hunspell_dictionary.cc b/chrome/browser/spellchecker/spellcheck_hunspell_dictionary.cc
|
||||
index 6bb7c99..b3e4ade 100644
|
||||
--- a/chrome/browser/spellchecker/spellcheck_hunspell_dictionary.cc
|
||||
+++ b/chrome/browser/spellchecker/spellcheck_hunspell_dictionary.cc
|
||||
@@ -286,6 +286,7 @@ GURL SpellcheckHunspellDictionary::GetDi
|
||||
@@ -286,6 +286,7 @@ GURL SpellcheckHunspellDictionary::GetDictionaryURL() {
|
||||
}
|
||||
|
||||
void SpellcheckHunspellDictionary::DownloadDictionary(GURL url) {
|
||||
|
@ -53,6 +63,8 @@
|
|||
DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
||||
DCHECK(browser_context_);
|
||||
|
||||
diff --git a/components/assist_ranker/ranker_url_fetcher.cc b/components/assist_ranker/ranker_url_fetcher.cc
|
||||
index 9af6e27..f78c458 100644
|
||||
--- a/components/assist_ranker/ranker_url_fetcher.cc
|
||||
+++ b/components/assist_ranker/ranker_url_fetcher.cc
|
||||
@@ -31,6 +31,7 @@ bool RankerURLFetcher::Request(
|
||||
|
@ -63,6 +75,8 @@
|
|||
// This function is not supposed to be called if the previous operation is not
|
||||
// finished.
|
||||
if (state_ == REQUESTING) {
|
||||
diff --git a/components/update_client/update_checker.cc b/components/update_client/update_checker.cc
|
||||
index 8cdb9a9..548fa9f 100644
|
||||
--- a/components/update_client/update_checker.cc
|
||||
+++ b/components/update_client/update_checker.cc
|
||||
@@ -98,6 +98,7 @@ void UpdateCheckerImpl::CheckForUpdates(
|
||||
|
|
|
@ -10,7 +10,6 @@
|
|||
|
||||
# Get the version number of latest stable version
|
||||
# $ curl -s 'https://omahaproxy.appspot.com/all?os=linux&channel=stable' | sed 1d | cut -d , -f 3
|
||||
|
||||
%ifarch %{x86_64} %ix86
|
||||
%bcond_without gost
|
||||
%else
|
||||
|
@ -21,6 +20,9 @@
|
|||
# http://a3f.at/lists/linkers
|
||||
%bcond_with gold
|
||||
|
||||
%global optflags %{nil}
|
||||
%global ldflags %{nil}
|
||||
|
||||
# Linker is out of memory on 32 bit with -g2
|
||||
# XXX debugsource package is empty, probably there are odd compiler flags
|
||||
# TODO: fix building with debuginfo
|
||||
|
@ -50,7 +52,7 @@
|
|||
# GOST patches and sources
|
||||
# Using commit hashes because upstream often puts tags long after making changes
|
||||
# (they wait for builds to finish to make a new "release" with binary packages)
|
||||
%define chromium_gost_commit 2980e5bb5bec4bd52b615fc94a47ad2f29fcaae8
|
||||
%define chromium_gost_commit d8f964ab4cbcb2d054391ebdde7e8f70f3bace60
|
||||
%define msspi_commit 0d09dc6de9df58041fc385ac49e5778323e547f4
|
||||
%define _gostsourcedir %{_builddir}/chromium-gost
|
||||
|
||||
|
@ -78,10 +80,14 @@
|
|||
|
||||
%define _default_patch_fuzz 12
|
||||
|
||||
%bcond_without use_qt
|
||||
%bcond_with use_gtk
|
||||
%bcond_without use_system_libffi
|
||||
|
||||
Summary: A fast web browser based on the Blink engine
|
||||
Name: chromium-browser-stable
|
||||
Version: 106.0.5249.61
|
||||
Release: 1
|
||||
Version: 109.0.5414.119
|
||||
Release: 2
|
||||
License: BSD, LGPL
|
||||
Group: Networking/WWW
|
||||
Url: https://www.chromium.org/Home
|
||||
|
@ -105,13 +111,15 @@ Source35: 22x22_chromium.svg
|
|||
Source36: 48x48_chromium.svg
|
||||
Source100: icons-2012.tar.bz2
|
||||
Source997: depot_tools.tar.xz
|
||||
Source1000: macros.clang
|
||||
|
||||
# segfaults on x86_32, but building with debuginfo is not possible, x86_32 has near to no users
|
||||
ExclusiveArch: %{x86_64} aarch64
|
||||
|
||||
# GOST
|
||||
Source1101: https://github.com/deemru/chromium-gost/archive/%{chromium_gost_commit}.tar.gz?/chromium-gost-%{chromium_gost_commit}.tar.gz
|
||||
Source1102: https://github.com/deemru/msspi/archive/%{msspi_commit}.tar.gz?/msspi-%{msspi_commit}.tar.gz
|
||||
|
||||
Patch1: fix-ffmpeg.106.0.5219.0.patch
|
||||
Patch4: chromium-30.0.1599.66-master-prefs-path.patch
|
||||
# (cjw) fix gn bootstrapping with gcc
|
||||
Patch190: chromium-69-gn-bootstrap.patch
|
||||
|
@ -119,9 +127,6 @@ Patch190: chromium-69-gn-bootstrap.patch
|
|||
Patch601: chromium-62-include-cstdlib.patch
|
||||
# Add "ROSA" to the user agent string
|
||||
Patch627: chromium-68.0.3440.106-rosa-user-agent.patch
|
||||
# Fix building with current glib2.0
|
||||
# Hunks from https://build.opensuse.org/package/view_file/openSUSE:Factory/chromium/chromium-gcc11.patch
|
||||
Patch643: glib2.0.patch
|
||||
Patch647: ALT-allow-to-override-clang-through-env-variables.patch
|
||||
# XXX This patch is not enough to fully fix debuginfo and debugsource subpackages
|
||||
Patch648: fix-debugsource.patch
|
||||
|
@ -141,8 +146,10 @@ Patch657: angle-wayland-include-protocol.patch
|
|||
|
||||
BuildRequires: bison
|
||||
BuildRequires: llvm15
|
||||
%if %{mdvver} == 201610
|
||||
# for gn, not chromium itself
|
||||
BuildRequires: stdc++-gcc10-devel
|
||||
%endif
|
||||
# gn needs these
|
||||
BuildRequires: flex
|
||||
%if %{with bundled_llvm}
|
||||
|
@ -225,6 +232,15 @@ BuildRequires: pkgconfig(zlib)
|
|||
BuildRequires: pythonegg(setuptools)
|
||||
# https://bugs.chromium.org/p/dawn/issues/detail?id=1441
|
||||
BuildRequires: git-core
|
||||
# Qt5
|
||||
%if %{with use_qt}
|
||||
BuildRequires: pkgconfig(Qt5Core)
|
||||
BuildRequires: pkgconfig(Qt5Widgets)
|
||||
%endif
|
||||
%if %{with use_system_libffi}
|
||||
BuildRequires: pkgconfig(libffi)
|
||||
BuildRequires: %{_lib}ffi-static-devel
|
||||
%endif
|
||||
|
||||
Requires: chromium-codecs = %{EVRD}
|
||||
|
||||
|
@ -278,6 +294,10 @@ if proprietary CryptoPro is installed.
|
|||
%{_crdir}/libGLESv2.so
|
||||
%{_crdir}/libvk_swiftshader.so
|
||||
%{_crdir}/vk_swiftshader_icd.json
|
||||
%{_crdir}/libvulkan.so.1
|
||||
%if %{with use_qt}
|
||||
%{_crdir}/libqt5_shim.so
|
||||
%endif
|
||||
%{_datadir}/applications/*.desktop
|
||||
%if %{mdvver} <= 201905
|
||||
%{_iconsdir}/hicolor/*/apps/chromium*
|
||||
|
@ -477,7 +497,7 @@ export PYTHONPATH="../../third_party/pyjson5/src:../../xcb-proto-%{xcb_version}"
|
|||
%endif
|
||||
|
||||
# Linking on 32 bit does not have enough memory for LTO
|
||||
%ifarch %{ix86}
|
||||
%ifarch %{ix86}
|
||||
%define use_thin_lto false
|
||||
%else
|
||||
%define use_thin_lto true
|
||||
|
@ -499,11 +519,12 @@ export PYTHONPATH="../../third_party/pyjson5/src:../../xcb-proto-%{xcb_version}"
|
|||
ffmpeg_branding="ChromeOS" \
|
||||
proprietary_codecs=true \
|
||||
is_component_ffmpeg=true \
|
||||
enable_ffmpeg_video_decoders=true \
|
||||
media_use_ffmpeg=true \
|
||||
is_component_build=false \
|
||||
use_system_libjpeg=true \
|
||||
use_libjpeg_turbo=false \
|
||||
enable_widevine=%{is_widevine} \
|
||||
enable_vulkan=true \
|
||||
enable_js_type_check=false \
|
||||
use_pulseaudio=true \
|
||||
link_pulseaudio=true \
|
||||
|
@ -522,7 +543,10 @@ export PYTHONPATH="../../third_party/pyjson5/src:../../xcb-proto-%{xcb_version}"
|
|||
v8_use_external_startup_data=false \
|
||||
google_api_key="%{google_api_key}" \
|
||||
google_default_client_id="%{google_default_client_id}" \
|
||||
google_default_client_secret="%{google_default_client_secret}"
|
||||
google_default_client_secret="%{google_default_client_secret}" \
|
||||
%{!?with_use_gtk:use_gtk=false}%{?with_use_gtk:use_gtk=true} \
|
||||
%{?with_use_qt:use_qt=true}%{!?with_use_qt:use_qt=false} \
|
||||
%{?with_use_system_libffi:use_system_libffi=true}%{!?with_use_system_libffi:use_system_libffi=false}
|
||||
|
||||
#clang_base_path="//third_party/llvm-build/Release+Asserts" \
|
||||
|
||||
|
@ -556,10 +580,10 @@ sed -i -e 's,chrome_pgo_phase = 2,chrome_pgo_phase = 0,' build/config/compiler/p
|
|||
|
||||
# ALT-allow-to-override-clang-through-env-variables.patch makes gn read these variables
|
||||
%if %{without bundled_llvm}
|
||||
export CC=%{llvm_prefix}/bin/clang
|
||||
export CXX=%{llvm_prefix}/bin/clang++
|
||||
export AR=%{llvm_prefix}/bin/llvm-ar
|
||||
export NM=%{llvm_prefix}/bin/llvm-nm
|
||||
# let's do a hack, remove the version check in update.py and resume it again only empty
|
||||
rm -vrf tools/clang/scripts/update.py && touch tools/clang/scripts/update.py
|
||||
# create a macro for convenience
|
||||
#_clang_alternative 15
|
||||
sed -i -e 's,//third_party/llvm-build/Release+Asserts,%{llvm_prefix},g' build/config/clang/clang.gni
|
||||
%else
|
||||
%define clang_path "%{_builddir}/chromium-%{version}/third_party/llvm-build/Release+Asserts/bin/"
|
||||
|
@ -568,9 +592,10 @@ export CXX="%{clang_path}clang++"
|
|||
export AR="%{clang_path}llvm-ar"
|
||||
export NM=nm
|
||||
%endif
|
||||
export READELF=readelf
|
||||
#export READELF=readelf
|
||||
|
||||
export PYTHON=%{__python}
|
||||
%if %{mdvver} == 201610
|
||||
# libstdc++ in rosa2016.1 is too old to build gn, there are 2 ways to solve this:
|
||||
# 1) run bootstrap.py with --use-custom-libcxx, it will build and use bundled libc++
|
||||
# 2) use libstdc++-gcc10 (https://forum.rosalinux.ru/viewtopic.php?t=10047&p=104560)
|
||||
|
@ -582,8 +607,12 @@ CXXFLAGS="-nostdinc++ \
|
|||
-I%{_includedir}/libstdc++-gcc10/%{_host} \
|
||||
-D__STDCPP_WANT_MATH_SPEC_FUNCS__=1 \
|
||||
" \
|
||||
%endif
|
||||
%{__python} tools/gn/bootstrap/bootstrap.py --gn-gen-args='%{gn_config}'
|
||||
|
||||
%if %{mdvver} == 201610
|
||||
unset LDFLAGS CXXFLAGS
|
||||
%endif
|
||||
|
||||
# Reduce memory usage by linker
|
||||
%ifarch %{ix86}
|
||||
|
@ -638,6 +667,11 @@ ln -s %{_crdir}/chromedriver %{buildroot}%{_bindir}/chromedriver
|
|||
install -m 644 out/Release/libEGL.so %{buildroot}%{_crdir}/
|
||||
install -m 644 out/Release/libGLESv2.so %{buildroot}%{_crdir}/
|
||||
install -m 644 out/Release/libvk_swiftshader.so %{buildroot}%{_crdir}/
|
||||
install -m 644 out/Release/libvulkan.so.1 %{buildroot}%{_crdir}/
|
||||
%if %{with use_qt}
|
||||
install -m 644 out/Release/libqt5_shim.so %{buildroot}%{_crdir}/
|
||||
strip %{buildroot}%{_crdir}/libqt5_shim.so
|
||||
%endif
|
||||
|
||||
# create global config file
|
||||
mkdir -p %{buildroot}%{_sysconfdir}/default
|
||||
|
@ -669,8 +703,13 @@ mkdir -p %{buildroot}%{_sysconfdir}/%{crname}
|
|||
install -m 0644 %{SOURCE30} %{buildroot}%{_sysconfdir}/%{crname}/
|
||||
install -m 0644 %{SOURCE31} %{buildroot}%{_sysconfdir}/%{crname}/
|
||||
|
||||
for st in libEGL.so libGLESv2.so libvk_swiftshader.so libvulkan.so.1 chrome chrome-sandbox chrome_crashpad_handler;do
|
||||
strip -v %{buildroot}%{_crdir}/${st}
|
||||
done
|
||||
|
||||
find %{buildroot} -name "*.nexe" -exec strip {} \;
|
||||
|
||||
%check
|
||||
# ensure JSON validity
|
||||
[ "$(jq .browser.custom_chrome_frame %{buildroot}%{_crdir}/chromium-default-config.json)" = "true" ]
|
||||
|
||||
|
|
355
fix-ffmpeg.106.0.5219.0.patch
Normal file
355
fix-ffmpeg.106.0.5219.0.patch
Normal file
|
@ -0,0 +1,355 @@
|
|||
diff --git a/media/filters/ffmpeg_demuxer.h b/media/filters/ffmpeg_demuxer.h
|
||||
index c147309..48a8f6a 100644
|
||||
--- a/media/filters/ffmpeg_demuxer.h
|
||||
+++ b/media/filters/ffmpeg_demuxer.h
|
||||
@@ -151,6 +151,8 @@
|
||||
base::TimeDelta start_time() const { return start_time_; }
|
||||
void set_start_time(base::TimeDelta time) { start_time_ = time; }
|
||||
|
||||
+ int64_t first_dts() const { return first_dts_; }
|
||||
+
|
||||
private:
|
||||
friend class FFmpegDemuxerTest;
|
||||
|
||||
@@ -208,6 +210,7 @@
|
||||
bool fixup_chained_ogg_;
|
||||
|
||||
int num_discarded_packet_warnings_;
|
||||
+ int64_t first_dts_;
|
||||
int64_t last_packet_pos_;
|
||||
int64_t last_packet_dts_;
|
||||
};
|
||||
--- a/media/filters/ffmpeg_demuxer.cc 2021-06-28 16:40:34.456861225 +0200
|
||||
+++ b/media/filters/ffmpeg_demuxer.cc 2021-06-28 16:49:27.746115753 +0200
|
||||
@@ -58,7 +58,7 @@
|
||||
|
||||
namespace {
|
||||
|
||||
-constexpr int64_t kInvalidPTSMarker = static_cast<int64_t>(0x8000000000000000);
|
||||
+constexpr int64_t kRelativeTsBase = static_cast<int64_t>(0x7ffeffffffffffff);
|
||||
|
||||
void SetAVStreamDiscard(AVStream* stream, AVDiscard discard) {
|
||||
DCHECK(stream);
|
||||
@@ -96,7 +96,7 @@
|
||||
sample_rate);
|
||||
}
|
||||
|
||||
-static base::TimeDelta ExtractStartTime(AVStream* stream) {
|
||||
+static base::TimeDelta ExtractStartTime(AVStream* stream, int64_t first_dts) {
|
||||
// The default start time is zero.
|
||||
base::TimeDelta start_time;
|
||||
|
||||
@@ -106,12 +106,12 @@
|
||||
|
||||
// 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 (av_stream_get_first_dts(stream) != kNoFFmpegTimestamp &&
|
||||
+ if (first_dts != AV_NOPTS_VALUE &&
|
||||
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, av_stream_get_first_dts(stream));
|
||||
+ ConvertFromTimeBase(stream->time_base, first_dts);
|
||||
if (first_pts < start_time)
|
||||
start_time = first_pts;
|
||||
}
|
||||
@@ -280,6 +280,7 @@
|
||||
fixup_negative_timestamps_(false),
|
||||
fixup_chained_ogg_(false),
|
||||
num_discarded_packet_warnings_(0),
|
||||
+ first_dts_(AV_NOPTS_VALUE),
|
||||
last_packet_pos_(AV_NOPTS_VALUE),
|
||||
last_packet_dts_(AV_NOPTS_VALUE) {
|
||||
DCHECK(demuxer_);
|
||||
@@ -346,6 +347,11 @@
|
||||
int64_t packet_dts =
|
||||
packet->dts == AV_NOPTS_VALUE ? packet->pts : packet->dts;
|
||||
|
||||
+ if (first_dts_ == AV_NOPTS_VALUE && packet->dts != AV_NOPTS_VALUE &&
|
||||
+ last_packet_dts_ != AV_NOPTS_VALUE) {
|
||||
+ first_dts_ = packet->dts - (last_packet_dts_ + kRelativeTsBase);
|
||||
+ }
|
||||
+
|
||||
// Chained ogg files have non-monotonically increasing position and time stamp
|
||||
// values, which prevents us from using them to determine if a packet should
|
||||
// be dropped. Since chained ogg is only allowed on single track audio only
|
||||
@@ -1439,7 +1445,7 @@
|
||||
|
||||
max_duration = std::max(max_duration, streams_[i]->duration());
|
||||
|
||||
- base::TimeDelta start_time = ExtractStartTime(stream);
|
||||
+ base::TimeDelta start_time = ExtractStartTime(stream, streams_[i]->first_dts());
|
||||
|
||||
// Note: This value is used for seeking, so we must take the true value and
|
||||
// not the one possibly clamped to zero below.
|
||||
@@ -1596,7 +1602,7 @@
|
||||
for (const auto& stream : streams_) {
|
||||
if (!stream || stream->IsEnabled() != enabled)
|
||||
continue;
|
||||
- if (av_stream_get_first_dts(stream->av_stream()) == kInvalidPTSMarker)
|
||||
+ if (stream->first_dts() == AV_NOPTS_VALUE)
|
||||
continue;
|
||||
if (!lowest_start_time_stream ||
|
||||
stream->start_time() < lowest_start_time_stream->start_time()) {
|
||||
@@ -1617,7 +1623,7 @@
|
||||
if (stream->type() != DemuxerStream::VIDEO)
|
||||
continue;
|
||||
|
||||
- if (av_stream_get_first_dts(stream->av_stream()) == kInvalidPTSMarker)
|
||||
+ if (stream->first_dts() == AV_NOPTS_VALUE)
|
||||
continue;
|
||||
|
||||
if (!stream->IsEnabled())
|
||||
diff --git a/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc b/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc
|
||||
index e4fc3f46..9b1ad9f 100644
|
||||
--- a/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc
|
||||
+++ b/media/cdm/library_cdm/clear_key_cdm/ffmpeg_cdm_audio_decoder.cc
|
||||
@@ -74,7 +74,7 @@
|
||||
codec_context->sample_fmt = AV_SAMPLE_FMT_NONE;
|
||||
}
|
||||
|
||||
- codec_context->ch_layout.nb_channels = config.channel_count;
|
||||
+ codec_context->channels = config.channel_count;
|
||||
codec_context->sample_rate = config.samples_per_second;
|
||||
|
||||
if (config.extra_data) {
|
||||
@@ -124,8 +124,8 @@
|
||||
case cdm::kAudioFormatPlanarS16:
|
||||
case cdm::kAudioFormatPlanarF32: {
|
||||
const int decoded_size_per_channel =
|
||||
- decoded_audio_size / av_frame.ch_layout.nb_channels;
|
||||
- for (int i = 0; i < av_frame.ch_layout.nb_channels; ++i) {
|
||||
+ decoded_audio_size / av_frame.channels;
|
||||
+ for (int i = 0; i < av_frame.channels; ++i) {
|
||||
memcpy(output_buffer, av_frame.extended_data[i],
|
||||
decoded_size_per_channel);
|
||||
output_buffer += decoded_size_per_channel;
|
||||
@@ -185,14 +185,13 @@
|
||||
// Success!
|
||||
decoding_loop_ = std::make_unique<FFmpegDecodingLoop>(codec_context_.get());
|
||||
samples_per_second_ = config.samples_per_second;
|
||||
- bytes_per_frame_ =
|
||||
- codec_context_->ch_layout.nb_channels * config.bits_per_channel / 8;
|
||||
+ bytes_per_frame_ = codec_context_->channels * config.bits_per_channel / 8;
|
||||
output_timestamp_helper_ =
|
||||
std::make_unique<AudioTimestampHelper>(config.samples_per_second);
|
||||
is_initialized_ = true;
|
||||
|
||||
// Store initial values to guard against midstream configuration changes.
|
||||
- channels_ = codec_context_->ch_layout.nb_channels;
|
||||
+ channels_ = codec_context_->channels;
|
||||
av_sample_format_ = codec_context_->sample_fmt;
|
||||
|
||||
return true;
|
||||
@@ -291,9 +291,8 @@
|
||||
for (auto& frame : audio_frames) {
|
||||
int decoded_audio_size = 0;
|
||||
if (frame->sample_rate != samples_per_second_ ||
|
||||
- frame->ch_layout.nb_channels != channels_ ||
|
||||
- frame->format != av_sample_format_) {
|
||||
- DLOG(ERROR) << "Unsupported midstream configuration change!"
|
||||
+ frame->channels != channels_ || frame->format != av_sample_format_) {
|
||||
+ DLOG(ERROR) << "Unsupported midstream configuration change!"
|
||||
<< " Sample Rate: " << frame->sample_rate << " vs "
|
||||
<< samples_per_second_
|
||||
<< ", Channels: " << frame->ch_layout.nb_channels << " vs "
|
||||
@@ -303,7 +302,7 @@
|
||||
}
|
||||
|
||||
decoded_audio_size = av_samples_get_buffer_size(
|
||||
- nullptr, codec_context_->ch_layout.nb_channels, frame->nb_samples,
|
||||
+ nullptr, codec_context_->channels, frame->nb_samples,
|
||||
codec_context_->sample_fmt, 1);
|
||||
if (!decoded_audio_size)
|
||||
continue;
|
||||
@@ -323,7 +322,7 @@
|
||||
std::vector<std::unique_ptr<AVFrame, ScopedPtrAVFreeFrame>>* audio_frames,
|
||||
AVFrame* frame) {
|
||||
*total_size += av_samples_get_buffer_size(
|
||||
- nullptr, codec_context_->ch_layout.nb_channels, frame->nb_samples,
|
||||
+ nullptr, codec_context_->channels, frame->nb_samples,
|
||||
codec_context_->sample_fmt, 1);
|
||||
audio_frames->emplace_back(av_frame_clone(frame));
|
||||
return true;
|
||||
diff --git a/media/ffmpeg/ffmpeg_common.cc b/media/ffmpeg/ffmpeg_common.cc
|
||||
index 87ca896..76f03d6 100644
|
||||
--- a/media/ffmpeg/ffmpeg_common.cc
|
||||
+++ b/media/ffmpeg/ffmpeg_common.cc
|
||||
@@ -345,11 +345,10 @@
|
||||
codec_context->sample_fmt, codec_context->codec_id);
|
||||
|
||||
ChannelLayout channel_layout =
|
||||
- codec_context->ch_layout.nb_channels > 8
|
||||
+ codec_context->channels > 8
|
||||
? CHANNEL_LAYOUT_DISCRETE
|
||||
- : ChannelLayoutToChromeChannelLayout(
|
||||
- codec_context->ch_layout.u.mask,
|
||||
- codec_context->ch_layout.nb_channels);
|
||||
+ : ChannelLayoutToChromeChannelLayout(codec_context->channel_layout,
|
||||
+ codec_context->channels);
|
||||
|
||||
int sample_rate = codec_context->sample_rate;
|
||||
switch (codec) {
|
||||
@@ -401,7 +402,7 @@
|
||||
extra_data, encryption_scheme, seek_preroll,
|
||||
codec_context->delay);
|
||||
if (channel_layout == CHANNEL_LAYOUT_DISCRETE)
|
||||
- config->SetChannelsForDiscrete(codec_context->ch_layout.nb_channels);
|
||||
+ config->SetChannelsForDiscrete(codec_context->channels);
|
||||
|
||||
#if BUILDFLAG(ENABLE_PLATFORM_AC3_EAC3_AUDIO)
|
||||
// These are bitstream formats unknown to ffmpeg, so they don't have
|
||||
@@ -470,7 +471,7 @@
|
||||
|
||||
// TODO(scherkus): should we set |channel_layout|? I'm not sure if FFmpeg uses
|
||||
// said information to decode.
|
||||
- codec_context->ch_layout.nb_channels = config.channels();
|
||||
+ codec_context->channels = config.channels();
|
||||
codec_context->sample_rate = config.samples_per_second();
|
||||
|
||||
if (config.extra_data().empty()) {
|
||||
diff --git a/media/filters/audio_file_reader.cc b/media/filters/audio_file_reader.cc
|
||||
index 5f257bd..e1be5aa 100644
|
||||
--- a/media/filters/audio_file_reader.cc
|
||||
+++ b/media/filters/audio_file_reader.cc
|
||||
@@ -113,15 +113,14 @@
|
||||
|
||||
// Verify the channel layout is supported by Chrome. Acts as a sanity check
|
||||
// against invalid files. See http://crbug.com/171962
|
||||
- if (ChannelLayoutToChromeChannelLayout(
|
||||
- codec_context_->ch_layout.u.mask,
|
||||
- codec_context_->ch_layout.nb_channels) ==
|
||||
+ if (ChannelLayoutToChromeChannelLayout(codec_context_->channel_layout,
|
||||
+ codec_context_->channels) ==
|
||||
CHANNEL_LAYOUT_UNSUPPORTED) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Store initial values to guard against midstream configuration changes.
|
||||
- channels_ = codec_context_->ch_layout.nb_channels;
|
||||
+ channels_ = codec_context_->channels;
|
||||
audio_codec_ = CodecIDToAudioCodec(codec_context_->codec_id);
|
||||
sample_rate_ = codec_context_->sample_rate;
|
||||
av_sample_format_ = codec_context_->sample_fmt;
|
||||
@@ -223,7 +224,7 @@
|
||||
if (frames_read < 0)
|
||||
return false;
|
||||
|
||||
- const int channels = frame->ch_layout.nb_channels;
|
||||
+ const int channels = frame->channels;
|
||||
if (frame->sample_rate != sample_rate_ || channels != channels_ ||
|
||||
frame->format != av_sample_format_) {
|
||||
DLOG(ERROR) << "Unsupported midstream configuration change!"
|
||||
@@ -243,10 +243,10 @@
|
||||
// silence from being output. In the case where we are also discarding some
|
||||
// portion of the packet (as indicated by a negative pts), we further want to
|
||||
// adjust the duration downward by however much exists before zero.
|
||||
- if (audio_codec_ == AudioCodec::kAAC && frame->duration) {
|
||||
+ if (audio_codec_ == AudioCodec::kAAC && frame->pkt_duration) {
|
||||
const base::TimeDelta pkt_duration = ConvertFromTimeBase(
|
||||
glue_->format_context()->streams[stream_index_]->time_base,
|
||||
- frame->duration + std::min(static_cast<int64_t>(0), frame->pts));
|
||||
+ frame->pkt_duration + std::min(static_cast<int64_t>(0), frame->pts));
|
||||
const base::TimeDelta frame_duration =
|
||||
base::Seconds(frames_read / static_cast<double>(sample_rate_));
|
||||
|
||||
diff --git a/media/filters/ffmpeg_aac_bitstream_converter.cc b/media/filters/ffmpeg_aac_bitstream_converter.cc
|
||||
index 6f231c8..ca5e5fb 100644
|
||||
--- a/media/filters/ffmpeg_aac_bitstream_converter.cc
|
||||
+++ b/media/filters/ffmpeg_aac_bitstream_converter.cc
|
||||
@@ -195,15 +195,14 @@
|
||||
if (!header_generated_ || codec_ != stream_codec_parameters_->codec_id ||
|
||||
audio_profile_ != stream_codec_parameters_->profile ||
|
||||
sample_rate_index_ != sample_rate_index ||
|
||||
- channel_configuration_ !=
|
||||
- stream_codec_parameters_->ch_layout.nb_channels ||
|
||||
+ channel_configuration_ != stream_codec_parameters_->channels ||
|
||||
frame_length_ != header_plus_packet_size) {
|
||||
header_generated_ =
|
||||
GenerateAdtsHeader(stream_codec_parameters_->codec_id,
|
||||
0, // layer
|
||||
stream_codec_parameters_->profile, sample_rate_index,
|
||||
0, // private stream
|
||||
- stream_codec_parameters_->ch_layout.nb_channels,
|
||||
+ stream_codec_parameters_->channels,
|
||||
0, // originality
|
||||
0, // home
|
||||
0, // copyrighted_stream
|
||||
@@ -214,7 +215,7 @@
|
||||
codec_ = stream_codec_parameters_->codec_id;
|
||||
audio_profile_ = stream_codec_parameters_->profile;
|
||||
sample_rate_index_ = sample_rate_index;
|
||||
- channel_configuration_ = stream_codec_parameters_->ch_layout.nb_channels;
|
||||
+ channel_configuration_ = stream_codec_parameters_->channels;
|
||||
frame_length_ = header_plus_packet_size;
|
||||
}
|
||||
|
||||
diff --git a/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc b/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc
|
||||
index 1fd4c5c..f59bcd8f 100644
|
||||
--- a/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc
|
||||
+++ b/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc
|
||||
@@ -34,7 +34,7 @@
|
||||
memset(&test_parameters_, 0, sizeof(AVCodecParameters));
|
||||
test_parameters_.codec_id = AV_CODEC_ID_AAC;
|
||||
test_parameters_.profile = FF_PROFILE_AAC_MAIN;
|
||||
- test_parameters_.ch_layout.nb_channels = 2;
|
||||
+ test_parameters_.channels = 2;
|
||||
test_parameters_.extradata = extradata_header_;
|
||||
test_parameters_.extradata_size = sizeof(extradata_header_);
|
||||
}
|
||||
diff --git a/media/filters/ffmpeg_audio_decoder.cc b/media/filters/ffmpeg_audio_decoder.cc
|
||||
index 6a56c67..4615fdeb 100644
|
||||
--- a/media/filters/ffmpeg_audio_decoder.cc
|
||||
+++ b/media/filters/ffmpeg_audio_decoder.cc
|
||||
@@ -28,7 +28,7 @@
|
||||
|
||||
// Return the number of channels from the data in |frame|.
|
||||
static inline int DetermineChannels(AVFrame* frame) {
|
||||
- return frame->ch_layout.nb_channels;
|
||||
+ return frame->channels;
|
||||
}
|
||||
|
||||
// Called by FFmpeg's allocation routine to allocate a buffer. Uses
|
||||
@@ -231,7 +231,7 @@
|
||||
// Translate unsupported into discrete layouts for discrete configurations;
|
||||
// ffmpeg does not have a labeled discrete configuration internally.
|
||||
ChannelLayout channel_layout = ChannelLayoutToChromeChannelLayout(
|
||||
- codec_context_->ch_layout.u.mask, codec_context_->ch_layout.nb_channels);
|
||||
+ codec_context_->channel_layout, codec_context_->channels);
|
||||
if (channel_layout == CHANNEL_LAYOUT_UNSUPPORTED &&
|
||||
config_.channel_layout() == CHANNEL_LAYOUT_DISCRETE) {
|
||||
channel_layout = CHANNEL_LAYOUT_DISCRETE;
|
||||
@@ -348,11 +348,11 @@
|
||||
// Success!
|
||||
av_sample_format_ = codec_context_->sample_fmt;
|
||||
|
||||
- if (codec_context_->ch_layout.nb_channels != config.channels()) {
|
||||
+ if (codec_context_->channels != config.channels()) {
|
||||
MEDIA_LOG(ERROR, media_log_)
|
||||
<< "Audio configuration specified " << config.channels()
|
||||
<< " channels, but FFmpeg thinks the file contains "
|
||||
- << codec_context_->ch_layout.nb_channels << " channels";
|
||||
+ << codec_context_->channels << " channels";
|
||||
ReleaseFFmpegResources();
|
||||
state_ = DecoderState::kUninitialized;
|
||||
return false;
|
||||
@@ -403,7 +403,7 @@
|
||||
if (frame->nb_samples <= 0)
|
||||
return AVERROR(EINVAL);
|
||||
|
||||
- if (s->ch_layout.nb_channels != channels) {
|
||||
+ if (s->channels != channels) {
|
||||
DLOG(ERROR) << "AVCodecContext and AVFrame disagree on channel count.";
|
||||
return AVERROR(EINVAL);
|
||||
}
|
||||
@@ -436,8 +436,7 @@
|
||||
ChannelLayout channel_layout =
|
||||
config_.channel_layout() == CHANNEL_LAYOUT_DISCRETE
|
||||
? CHANNEL_LAYOUT_DISCRETE
|
||||
- : ChannelLayoutToChromeChannelLayout(s->ch_layout.u.mask,
|
||||
- s->ch_layout.nb_channels);
|
||||
+ : ChannelLayoutToChromeChannelLayout(s->channel_layout, s->channels);
|
||||
|
||||
if (channel_layout == CHANNEL_LAYOUT_UNSUPPORTED) {
|
||||
DLOG(ERROR) << "Unsupported channel layout.";
|
22
macros.clang
Normal file
22
macros.clang
Normal file
|
@ -0,0 +1,22 @@
|
|||
%_clang_opt_flags() \
|
||||
CFLAGS=${CFLAGS:-%{optflags} -Wno-unknown-warning-option} ; export CFLAGS ; \
|
||||
CXXFLAGS=${CXXFLAGS:-%{optflags} -Wno-unknown-warning-option} ; export CXXFLAGS ; \
|
||||
%{nil}
|
||||
|
||||
%_clang_ldflags() \
|
||||
LDFLAGS=${LDFLAGS:-%{ldflags}} ; export LDFLAGS ; \
|
||||
%{nil}
|
||||
|
||||
|
||||
%_clang_compile_flags %{_clang_opt_flags} %{_clang_ldflags} %{nil}
|
||||
|
||||
%_clang_alternative() \
|
||||
PATH="PATH=/opt/llvm%{1}/bin:%{_libdir}/qt5/bin:$PATH" ; export PATH ; \
|
||||
LD_LIBRARY_PATH="/opt/llvm%{1}/%{_lib}:$LD_LIBRARY_PATH" ; export LD_LIBRARY_PATH ; \
|
||||
CC="${CC:-/opt/llvm%{1}/bin/clang}" ; export CC ; \
|
||||
CXX="${CXX:-/opt/llvm%{1}/bin/clang++}" ; export CXX ; \
|
||||
%_clang_compile_flags \
|
||||
AR="/opt/llvm%{1}/bin/llvm-ar" ; export AR ; \
|
||||
NM="/opt/llvm%{1}/bin/llvm-nm" ; export NM ; \
|
||||
READELF="/opt/llvm%{1}/bin/llvm-readelf" ; export READELF ; \
|
||||
%{nil}
|
0
rpmlint-wrapper.sh
Executable file → Normal file
0
rpmlint-wrapper.sh
Executable file → Normal file
Loading…
Add table
Reference in a new issue