Index: chromecast/renderer/cast_content_renderer_client.cc |
diff --git a/chromecast/renderer/cast_content_renderer_client.cc b/chromecast/renderer/cast_content_renderer_client.cc |
index 1036193d5f269a8c0ee72c4df4219566c5f2ae62..bd68a2d5f85518e9d850e6704939bf681f982350 100644 |
--- a/chromecast/renderer/cast_content_renderer_client.cc |
+++ b/chromecast/renderer/cast_content_renderer_client.cc |
@@ -11,11 +11,13 @@ |
#include "base/strings/string_number_conversions.h" |
#include "build/build_config.h" |
#include "chromecast/base/chromecast_switches.h" |
-#include "chromecast/common/media/cast_media_client.h" |
#include "chromecast/crash/cast_crash_keys.h" |
+#include "chromecast/media/base/media_caps.h" |
+#include "chromecast/media/base/media_codec_support.h" |
#include "chromecast/media/base/supported_codec_profile_levels_memo.h" |
+#include "chromecast/public/media/media_capabilities_shlib.h" |
#include "chromecast/renderer/cast_render_frame_action_deferrer.h" |
-#include "chromecast/renderer/key_systems_cast.h" |
+#include "chromecast/renderer/media/key_systems_cast.h" |
#include "chromecast/renderer/media/media_caps_observer_impl.h" |
#include "components/network_hints/renderer/prescient_networking_dispatcher.h" |
#include "content/public/common/content_switches.h" |
@@ -78,8 +80,6 @@ void CastContentRendererClient::RenderThreadStarted() { |
new media::MediaCapsObserverImpl(&proxy, supported_profiles_.get())); |
media_caps->AddObserver(std::move(proxy)); |
- chromecast::media::CastMediaClient::Initialize(supported_profiles_.get()); |
- |
prescient_networking_dispatcher_.reset( |
new network_hints::PrescientNetworkingDispatcher()); |
@@ -110,9 +110,51 @@ void CastContentRendererClient::RenderViewCreated( |
void CastContentRendererClient::AddSupportedKeySystems( |
std::vector<std::unique_ptr<::media::KeySystemProperties>>* |
key_systems_properties) { |
- AddChromecastKeySystems(key_systems_properties, |
- false /* enable_persistent_license_support */, |
- false /* force_software_crypto */); |
+ media::AddChromecastKeySystems(key_systems_properties, |
+ false /* enable_persistent_license_support */, |
+ false /* force_software_crypto */); |
+} |
+ |
+bool CastContentRendererClient::IsSupportedAudioConfig( |
+ const ::media::AudioConfig& config) { |
+#if defined(OS_ANDROID) |
+ // TODO(sanfin): Implement this for Android. |
+ return true; |
+#else |
+ media::AudioCodec codec = media::ToCastAudioCodec(config.codec); |
+ // Cast platform implements software decoding of Opus and FLAC, so only PCM |
+ // support is necessary in order to support Opus and FLAC. |
+ if (codec == media::kCodecOpus || codec == media::kCodecFLAC) |
+ codec = media::kCodecPCM; |
+ |
+ // If HDMI sink supports AC3/EAC3 codecs then we don't need the vendor backend |
+ // to support these codec directly. |
+ if (codec == media::kCodecEAC3 && |
+ media::MediaCapabilities::HdmiSinkSupportsEAC3()) |
+ return true; |
+ if (codec == media::kCodecAC3 && |
+ media::MediaCapabilities::HdmiSinkSupportsAC3()) |
+ return true; |
+ |
+ media::AudioConfig cast_audio_config; |
+ cast_audio_config.codec = codec; |
+ return media::MediaCapabilitiesShlib::IsSupportedAudioConfig( |
+ cast_audio_config); |
+#endif |
+} |
+ |
+bool CastContentRendererClient::IsSupportedVideoConfig( |
+ const ::media::VideoConfig& config) { |
+// TODO(servolk): make use of eotf. |
+#if defined(OS_ANDROID) |
+ return supported_profiles_->IsSupportedVideoConfig( |
+ media::ToCastVideoCodec(config.codec, config.profile), |
+ media::ToCastVideoProfile(config.profile), config.level); |
+#else |
+ return media::MediaCapabilitiesShlib::IsSupportedVideoConfig( |
+ media::ToCastVideoCodec(config.codec, config.profile), |
+ media::ToCastVideoProfile(config.profile), config.level); |
+#endif |
} |
blink::WebPrescientNetworking* |