[Chromecast] Remove is_cast_using_cma_backend flag.
All internal builds have this set to true, so no need to keep
this flag.
Merge-With: eureka-internal/288022
Bug: Internal b/136084695
Test: build/run Android TV and Android Things apks and unittests
Change-Id: I7815df32f721bf1e3c1be10a807a0fe557e4238f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1678549
Reviewed-by: Luke Halliwell <halliwell@chromium.org>
Reviewed-by: Dirk Pranke <dpranke@chromium.org>
Reviewed-by: Kenneth MacKay <kmackay@chromium.org>
Commit-Queue: Simeon Anfinrud <sanfin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#673622}
diff --git a/build/config/chromecast_build.gni b/build/config/chromecast_build.gni
index 7e5c1ea..e27cccf6 100644
--- a/build/config/chromecast_build.gni
+++ b/build/config/chromecast_build.gni
@@ -21,10 +21,6 @@
# Set this true for an audio-only Chromecast build.
is_cast_audio_only = false
-
- # If true, use cast CMA backend instead of default chromium media pipeline.
- # TODO(sanfin): Remove this flag when all builds enable CMA.
- is_cast_using_cma_backend = !is_android
}
# Note(slan): This arg depends on the value of is_chromecast, and thus must be
@@ -43,8 +39,7 @@
declare_args() {
# True to enable the cast renderer. It is enabled by default for non-android
# builds.
- enable_cast_renderer =
- is_chromecast && is_cast_using_cma_backend && !is_android
+ enable_cast_renderer = is_chromecast && !is_android
}
# Configures media options for cast. See media/media_options.gni
diff --git a/chromecast/BUILD.gn b/chromecast/BUILD.gn
index 02043699..149c7820 100644
--- a/chromecast/BUILD.gn
+++ b/chromecast/BUILD.gn
@@ -98,7 +98,7 @@
tests += [ "//chromecast/media/cma/backend:cast_audio_backend_unittests" ]
}
- if (is_android && is_cast_using_cma_backend) {
+ if (is_android) {
tests += [ "//chromecast/media/cma/backend/android:cast_android_cma_backend_unittests" ]
}
@@ -594,7 +594,6 @@
"IS_ANDROID_THINGS_NON_PUBLIC=$is_android_things_non_public",
"IS_CAST_AUDIO_ONLY=$is_cast_audio_only",
"IS_CAST_DESKTOP_BUILD=$is_cast_desktop_build",
- "IS_CAST_USING_CMA_BACKEND=$is_cast_using_cma_backend",
"IS_SINGLE_VOLUME=$is_single_volume",
"SUPPORTS_MULTIZONE=$supports_multizone",
"USE_ANDROID_USER_AGENT=$use_android_user_agent",
diff --git a/chromecast/android/BUILD.gn b/chromecast/android/BUILD.gn
index a7827a1..92cca38 100644
--- a/chromecast/android/BUILD.gn
+++ b/chromecast/android/BUILD.gn
@@ -25,6 +25,7 @@
"//chromecast/base:jni_headers",
"//chromecast/base/metrics",
"//chromecast/browser",
+ "//chromecast/media/cma/backend/android:cast_media_android",
"//components/crash/android:crash_android",
"//components/minidump_uploader",
"//content/public/app:both",
@@ -44,8 +45,4 @@
"//ui/shell_dialogs",
]
}
-
- if (is_cast_using_cma_backend) {
- deps += [ "//chromecast/media/cma/backend/android:cast_media_android" ]
- }
}
diff --git a/chromecast/browser/android/BUILD.gn b/chromecast/browser/android/BUILD.gn
index 7317f7c..e730107 100644
--- a/chromecast/browser/android/BUILD.gn
+++ b/chromecast/browser/android/BUILD.gn
@@ -142,6 +142,7 @@
":reactive_android_java",
"//base:base_java",
"//chromecast/base:base_java",
+ "//chromecast/media/cma/backend/android:audio_track_java",
"//components/crash/android:java",
"//components/embedder_support/android:content_view_java",
"//components/embedder_support/android:view_java",
@@ -150,16 +151,10 @@
"//media/base/android:media_java",
"//net/android:net_java",
"//third_party/android_deps:com_android_support_support_compat_java",
-
- # TODO(slan): We may need to pass this in as a parameter.
"//third_party/android_deps:com_android_support_support_core_utils_java",
"//ui/android:ui_java",
]
- if (is_cast_using_cma_backend) {
- deps += [ "//chromecast/media/cma/backend/android:audio_track_java" ]
- }
-
if (is_android_things_non_public) {
deps += [ ":cast_shell_android_things_sys_info_java" ]
if (enable_assistant) {
diff --git a/chromecast/browser/cast_browser_main_parts.cc b/chromecast/browser/cast_browser_main_parts.cc
index 1abfca51..0688306 100644
--- a/chromecast/browser/cast_browser_main_parts.cc
+++ b/chromecast/browser/cast_browser_main_parts.cc
@@ -365,7 +365,6 @@
}
CastBrowserMainParts::~CastBrowserMainParts() {
-#if BUILDFLAG(IS_CAST_USING_CMA_BACKEND)
if (cast_content_browser_client_->GetMediaTaskRunner() &&
media_pipeline_backend_manager_) {
// Make sure that media_pipeline_backend_manager_ is destroyed after any
@@ -382,10 +381,8 @@
cast_content_browser_client_->GetMediaTaskRunner()->DeleteSoon(
FROM_HERE, media_pipeline_backend_manager_.release());
}
-#endif // BUILDFLAG(IS_CAST_USING_CMA_BACKEND)
}
-#if BUILDFLAG(IS_CAST_USING_CMA_BACKEND)
media::MediaPipelineBackendManager*
CastBrowserMainParts::media_pipeline_backend_manager() {
if (!media_pipeline_backend_manager_) {
@@ -395,7 +392,6 @@
}
return media_pipeline_backend_manager_.get();
}
-#endif // BUILDFLAG(IS_CAST_USING_CMA_BACKEND)
media::MediaCapsImpl* CastBrowserMainParts::media_caps() {
return media_caps_.get();
@@ -568,9 +564,7 @@
video_plane_controller_.get(), window_manager_.get()));
cast_browser_process_->cast_service()->Initialize();
-#if BUILDFLAG(IS_CAST_USING_CMA_BACKEND)
cast_content_browser_client_->media_resource_tracker()->InitializeMediaLib();
-#endif
::media::InitializeMediaLibrary();
media_caps_->Initialize();
diff --git a/chromecast/browser/cast_browser_main_parts.h b/chromecast/browser/cast_browser_main_parts.h
index 650a1c4..99ed6d2 100644
--- a/chromecast/browser/cast_browser_main_parts.h
+++ b/chromecast/browser/cast_browser_main_parts.h
@@ -76,9 +76,7 @@
CastContentBrowserClient* cast_content_browser_client);
~CastBrowserMainParts() override;
-#if BUILDFLAG(IS_CAST_USING_CMA_BACKEND)
media::MediaPipelineBackendManager* media_pipeline_backend_manager();
-#endif
media::MediaCapsImpl* media_caps();
content::BrowserContext* browser_context();
@@ -117,13 +115,13 @@
std::unique_ptr<base::RepeatingTimer> crash_reporter_timer_;
#endif
-#if BUILDFLAG(IS_CAST_USING_CMA_BACKEND)
// Tracks all media pipeline backends.
std::unique_ptr<media::MediaPipelineBackendManager>
media_pipeline_backend_manager_;
+#if !defined(OS_ANDROID) && !defined(OS_FUCHSIA)
std::unique_ptr<CastMemoryPressureMonitor> memory_pressure_monitor_;
-#endif
+#endif // !defined(OS_ANDROID) && !defined(OS_FUCHSIA)
#if BUILDFLAG(ENABLE_CHROMECAST_EXTENSIONS)
std::unique_ptr<extensions::ExtensionsClient> extensions_client_;
diff --git a/chromecast/browser/cast_content_browser_client.cc b/chromecast/browser/cast_content_browser_client.cc
index 5e43b70..b610437 100644
--- a/chromecast/browser/cast_content_browser_client.cc
+++ b/chromecast/browser/cast_content_browser_client.cc
@@ -240,10 +240,8 @@
}
CastContentBrowserClient::~CastContentBrowserClient() {
-#if BUILDFLAG(IS_CAST_USING_CMA_BACKEND)
DCHECK(!media_resource_tracker_)
<< "ResetMediaResourceTracker was not called";
-#endif // BUILDFLAG(IS_CAST_USING_CMA_BACKEND)
cast_network_contexts_.reset();
content::BrowserThread::DeleteSoon(content::BrowserThread::IO, FROM_HERE,
url_request_context_factory_.release());
@@ -267,7 +265,6 @@
scoped_refptr<base::SingleThreadTaskRunner>
CastContentBrowserClient::GetMediaTaskRunner() {
-#if BUILDFLAG(IS_CAST_USING_CMA_BACKEND)
if (!media_thread_) {
media_thread_.reset(new base::Thread("CastMediaThread"));
base::Thread::Options options;
@@ -281,12 +278,8 @@
base::ThreadTaskRunnerHandle::Get(), media_thread_->task_runner());
}
return media_thread_->task_runner();
-#else
- return nullptr;
-#endif
}
-#if BUILDFLAG(IS_CAST_USING_CMA_BACKEND)
media::VideoResolutionPolicy*
CastContentBrowserClient::GetVideoResolutionPolicy() {
return nullptr;
@@ -369,7 +362,6 @@
#endif // defined(OS_ANDROID)
return true;
}
-#endif // BUILDFLAG(IS_CAST_USING_CMA_BACKEND)
#if BUILDFLAG(USE_CHROMECAST_CDMS)
std::unique_ptr<::media::CdmFactory> CastContentBrowserClient::CreateCdmFactory(
diff --git a/chromecast/browser/cast_content_browser_client.h b/chromecast/browser/cast_content_browser_client.h
index 81132ce..623ffc0 100644
--- a/chromecast/browser/cast_content_browser_client.h
+++ b/chromecast/browser/cast_content_browser_client.h
@@ -97,7 +97,6 @@
// Returns the task runner that must be used for media IO.
scoped_refptr<base::SingleThreadTaskRunner> GetMediaTaskRunner();
-#if BUILDFLAG(IS_CAST_USING_CMA_BACKEND)
// Gets object for enforcing video resolution policy restrictions.
virtual media::VideoResolutionPolicy* GetVideoResolutionPolicy();
@@ -113,7 +112,6 @@
std::unique_ptr<::media::AudioManager> CreateAudioManager(
::media::AudioLogFactory* audio_log_factory) override;
bool OverridesAudioManager() override;
-#endif // BUILDFLAG(IS_CAST_USING_CMA_BACKEND)
media::MediaCapsImpl* media_caps();
#if !defined(OS_ANDROID) && !defined(OS_FUCHSIA)
@@ -296,13 +294,11 @@
#endif // !defined(OS_ANDROID)
#endif // !defined(OS_FUCHSIA)
-#if BUILDFLAG(IS_CAST_USING_CMA_BACKEND)
// CMA thread used by AudioManager, MojoRenderer, and MediaPipelineBackend.
std::unique_ptr<base::Thread> media_thread_;
// Tracks usage of media resource by e.g. CMA pipeline, CDM.
media::MediaResourceTracker* media_resource_tracker_ = nullptr;
-#endif // BUILDFLAG(IS_CAST_USING_CMA_BACKEND)
// Created by CastContentBrowserClient but owned by BrowserMainLoop.
CastBrowserMainParts* cast_browser_main_parts_;
diff --git a/chromecast/browser/cast_web_view_default.cc b/chromecast/browser/cast_web_view_default.cc
index 04517ba..5a1a700 100644
--- a/chromecast/browser/cast_web_view_default.cc
+++ b/chromecast/browser/cast_web_view_default.cc
@@ -81,18 +81,9 @@
#endif
#if BUILDFLAG(IS_ANDROID_THINGS)
-// Configure the ducking multiplier for AThings speakers. When CMA backend is
-// used we don't want the Chromium MediaSession to duck since we are doing
-// our own ducking. When no CMA backend is used we rely on the MediaSession
-// for ducking. In that case set it to a proper value to match the ducking
-// done in CMA backend.
-#if BUILDFLAG(IS_CAST_USING_CMA_BACKEND)
- // passthrough, i.e., disable ducking
+ // Configure the ducking multiplier for AThings speakers. We don't want the
+ // Chromium MediaSession to duck since we are doing our own ducking.
constexpr double kDuckingMultiplier = 1.0;
-#else
- // duck by -30dB
- constexpr double kDuckingMultiplier = 0.03;
-#endif
content::MediaSession::Get(web_contents_.get())
->SetDuckingVolumeMultiplier(kDuckingMultiplier);
#endif
diff --git a/chromecast/chromecast.gni b/chromecast/chromecast.gni
index 8410c94e..5fca09e 100644
--- a/chromecast/chromecast.gni
+++ b/chromecast/chromecast.gni
@@ -152,7 +152,7 @@
# Use Chromecast CDMs for protected content. Some Android platforms use
# MediaDrm for CDM support.
declare_args() {
- use_chromecast_cdms = is_cast_using_cma_backend
+ use_chromecast_cdms = true
}
foreach(target_type,
diff --git a/chromecast/media/BUILD.gn b/chromecast/media/BUILD.gn
index 43547f13..1219bb1 100644
--- a/chromecast/media/BUILD.gn
+++ b/chromecast/media/BUILD.gn
@@ -20,15 +20,9 @@
# Handles the various differences between (ATV, Things, desktop, device builds).
group("libcast_media") {
if (is_android) {
- if (is_cast_using_cma_backend) {
- deps = [
- "//chromecast/media/cma/backend/android:cast_media_android",
- ]
- } else {
- deps = [
- "//chromecast/media/cma/backend:cast_media_android_dummy",
- ]
- }
+ deps = [
+ "//chromecast/media/cma/backend/android:cast_media_android",
+ ]
} else if (is_fuchsia) {
deps = [
"//chromecast/media/cma/backend/fuchsia:media_backend",
@@ -70,6 +64,7 @@
"//chromecast/base/metrics:test_support",
"//chromecast/common/mojom",
"//chromecast/media/cma:test_support",
+ "//chromecast/media/cma:unittests",
"//chromecast/public",
"//content/test:test_support",
"//media:test_support",
@@ -80,14 +75,11 @@
"//testing/gtest",
]
- if (is_cast_using_cma_backend) {
- deps += [ "//chromecast/media/cma:unittests" ]
- if (is_android) {
- deps += [
- "//chromecast/media/cma/backend/android:audio_track_java",
- "//media/base/android:media_java",
- ]
- shard_timeout = 300
- }
+ if (is_android) {
+ deps += [
+ "//chromecast/media/cma/backend/android:audio_track_java",
+ "//media/base/android:media_java",
+ ]
+ shard_timeout = 300
}
}
diff --git a/chromecast/media/audio/cast_audio_manager.h b/chromecast/media/audio/cast_audio_manager.h
index dcac0c3..f114a235 100644
--- a/chromecast/media/audio/cast_audio_manager.h
+++ b/chromecast/media/audio/cast_audio_manager.h
@@ -116,6 +116,7 @@
#endif
private:
+ FRIEND_TEST_ALL_PREFIXES(CastAudioManagerTest, CanMakeStreamProxy);
friend class CastAudioMixer;
friend class CastAudioManagerTest;
friend class CastAudioOutputStreamTest;
diff --git a/chromecast/media/audio/cast_audio_manager_unittest.cc b/chromecast/media/audio/cast_audio_manager_unittest.cc
index 369384a3..dd4f73e 100644
--- a/chromecast/media/audio/cast_audio_manager_unittest.cc
+++ b/chromecast/media/audio/cast_audio_manager_unittest.cc
@@ -211,8 +211,7 @@
RunThreadsUntilIdle();
}
-#if defined(OS_ANDROID) && !BUILDFLAG(IS_ANDROID_THINGS)
-// Android things emulators do not support AC3 codec
+#if defined(OS_ANDROID)
TEST_F(CastAudioManagerTest, CanMakeAC3Stream) {
const ::media::AudioParameters kAC3AudioParams(
::media::AudioParameters::AUDIO_BITSTREAM_AC3,
@@ -220,22 +219,23 @@
256);
::media::AudioOutputStream* stream = audio_manager_->MakeAudioOutputStream(
kAC3AudioParams, "", ::media::AudioManager::LogCallback());
- EXPECT_TRUE(stream->Open());
+ EXPECT_TRUE(stream);
+ // Only run the rest of the test if the device supports AC3.
+ if (stream->Open()) {
+ EXPECT_CALL(mock_source_callback_, OnMoreData(_, _, _, _))
+ .WillRepeatedly(Invoke(OnMoreData));
+ EXPECT_CALL(mock_source_callback_, OnError()).Times(0);
+ stream->Start(&mock_source_callback_);
+ RunThreadsUntilIdle();
- EXPECT_CALL(mock_source_callback_, OnMoreData(_, _, _, _))
- .WillRepeatedly(Invoke(OnMoreData));
- EXPECT_CALL(mock_source_callback_, OnError()).Times(0);
- stream->Start(&mock_source_callback_);
- RunThreadsUntilIdle();
-
- stream->Stop();
- RunThreadsUntilIdle();
-
+ stream->Stop();
+ RunThreadsUntilIdle();
+ }
stream->Close();
}
-#endif // defined(OS_ANDROID) && !BUILDFLAG(IS_ANDROID_THINGS)
+#endif // defined(OS_ANDROID)
-TEST_F(CastAudioManagerTest, DISABLED_CanMakeStreamProxy) {
+TEST_F(CastAudioManagerTest, CanMakeStreamProxy) {
SetUpBackendAndDecoder();
::media::AudioOutputStream* stream =
audio_manager_->MakeAudioOutputStreamProxy(kDefaultAudioParams, "");
@@ -251,8 +251,6 @@
stream->Close();
RunThreadsUntilIdle();
- // TODO(steinbock) Figure out why stream is not unregistering itself from
- // audio_manager_
}
TEST_F(CastAudioManagerTest, CanMakeMixerStream) {
diff --git a/chromecast/media/cdm/BUILD.gn b/chromecast/media/cdm/BUILD.gn
index 543fd6d..571fd09 100644
--- a/chromecast/media/cdm/BUILD.gn
+++ b/chromecast/media/cdm/BUILD.gn
@@ -7,6 +7,12 @@
cast_source_set("cdm") {
sources = [
+ "cast_cdm.cc",
+ "cast_cdm.h",
+ "cast_cdm_context.cc",
+ "cast_cdm_context.h",
+ "cast_cdm_factory.cc",
+ "cast_cdm_factory.h",
"chromecast_init_data.cc",
"chromecast_init_data.h",
]
@@ -14,26 +20,12 @@
deps = [
"//base",
"//chromecast/base/metrics",
+ "//chromecast/media/base",
+ "//chromecast/media/base:media_resource_tracker",
"//media",
+ "//url",
]
- if (is_cast_using_cma_backend) {
- sources += [
- "cast_cdm.cc",
- "cast_cdm.h",
- "cast_cdm_context.cc",
- "cast_cdm_context.h",
- "cast_cdm_factory.cc",
- "cast_cdm_factory.h",
- ]
-
- deps += [
- "//chromecast/media/base",
- "//chromecast/media/base:media_resource_tracker",
- "//url:url",
- ]
- }
-
if (is_android && enable_playready) {
sources += [
"playready_drm_delegate_android.cc",
diff --git a/chromecast/media/cma/backend/BUILD.gn b/chromecast/media/cma/backend/BUILD.gn
index 8f750e2..bf11007 100644
--- a/chromecast/media/cma/backend/BUILD.gn
+++ b/chromecast/media/cma/backend/BUILD.gn
@@ -48,18 +48,6 @@
]
}
-cast_source_set("cast_media_android_dummy") {
- sources = [
- "cast_media_android_dummy.cc",
- ]
- deps = [
- "//base",
- "//chromecast:chromecast_buildflags",
- "//chromecast/public",
- "//chromecast/public/media",
- ]
-}
-
# Target for OEM partners to override media shared library, i.e.
# libcast_media_1.0.so. This target is only used to build executables
# with correct linkage information.
diff --git a/chromecast/media/cma/backend/android/java/src/org/chromium/chromecast/cma/backend/android/AudioSinkAudioTrackImpl.java b/chromecast/media/cma/backend/android/java/src/org/chromium/chromecast/cma/backend/android/AudioSinkAudioTrackImpl.java
index d18031d..bce8d382 100644
--- a/chromecast/media/cma/backend/android/java/src/org/chromium/chromecast/cma/backend/android/AudioSinkAudioTrackImpl.java
+++ b/chromecast/media/cma/backend/android/java/src/org/chromium/chromecast/cma/backend/android/AudioSinkAudioTrackImpl.java
@@ -476,10 +476,10 @@
}
int getUnderrunCount() {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
return mAudioTrack.getUnderrunCount();
}
- // Using pre-M API.
+ // Using pre-N API.
return 0;
}
diff --git a/chromecast/media/cma/backend/cast_media_android_dummy.cc b/chromecast/media/cma/backend/cast_media_android_dummy.cc
deleted file mode 100644
index d2b7b54..0000000
--- a/chromecast/media/cma/backend/cast_media_android_dummy.cc
+++ /dev/null
@@ -1,94 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "base/logging.h"
-#include "chromecast/public/cast_media_shlib.h"
-#include "chromecast/public/media/decoder_config.h"
-#include "chromecast/public/media/media_capabilities_shlib.h"
-#include "chromecast/public/volume_control.h"
-
-namespace chromecast {
-namespace media {
-
-void CastMediaShlib::Initialize(const std::vector<std::string>& argv) {}
-
-void CastMediaShlib::Finalize() {}
-
-VideoPlane* CastMediaShlib::GetVideoPlane() {
- return nullptr;
-}
-
-MediaPipelineBackend* CastMediaShlib::CreateMediaPipelineBackend(
- const MediaPipelineDeviceParams& params) {
- return nullptr;
-}
-
-double CastMediaShlib::GetMediaClockRate() {
- return 0.0;
-}
-
-double CastMediaShlib::MediaClockRatePrecision() {
- return 0.0;
-}
-
-void CastMediaShlib::MediaClockRateRange(double* minimum_rate,
- double* maximum_rate) {}
-
-bool CastMediaShlib::SetMediaClockRate(double new_rate) {
- return false;
-}
-
-bool CastMediaShlib::SupportsMediaClockRateChange() {
- return false;
-}
-
-bool MediaCapabilitiesShlib::IsSupportedVideoConfig(VideoCodec codec,
- VideoProfile profile,
- int level) {
- // This should not be called directly.
- NOTREACHED() << "Unexpected call to "
- << "MediaCapabilitiesShlib::IsSupportedVideoConfig on Android";
- return false;
-}
-
-bool MediaCapabilitiesShlib::IsSupportedAudioConfig(const AudioConfig& config) {
- // This should not be called directly.
- NOTREACHED() << "Unexpected call to "
- << "MediaCapabilitiesShlib::IsSupportedAudioConfig on Android";
- return false;
-}
-
-void VolumeControl::Initialize(const std::vector<std::string>& argv) {}
-void VolumeControl::Finalize() {}
-void VolumeControl::AddVolumeObserver(VolumeObserver* observer) {}
-void VolumeControl::RemoveVolumeObserver(VolumeObserver* observer) {}
-
-float VolumeControl::GetVolume(AudioContentType type) {
- return 0.0f;
-}
-
-void VolumeControl::SetVolume(VolumeChangeSource source,
- AudioContentType type,
- float level) {}
-
-bool VolumeControl::IsMuted(AudioContentType type) {
- return false;
-}
-
-void VolumeControl::SetMuted(VolumeChangeSource source,
- AudioContentType type,
- bool muted) {}
-
-void VolumeControl::SetOutputLimit(AudioContentType type, float limit) {}
-
-float VolumeControl::VolumeToDbFS(float volume) {
- return 0.0f;
-}
-
-float VolumeControl::DbFSToVolume(float db) {
- return 0.0f;
-}
-
-} // namespace media
-} // namespace chromecast