Index: chromecast/media/base/media_codec_support.cc |
diff --git a/chromecast/media/base/media_codec_support.cc b/chromecast/media/base/media_codec_support.cc |
index b04a077961e31c0d6274e43feb7e844bb7410fad..1d82f9ca21787c66d11cbdd5e0f32d7df358e28a 100644 |
--- a/chromecast/media/base/media_codec_support.cc |
+++ b/chromecast/media/base/media_codec_support.cc |
@@ -4,13 +4,41 @@ |
#include "chromecast/media/base/media_codec_support.h" |
-// TODO(gunsch/servolk): delete this file once a solution exists upstream. |
+#include "base/bind.h" |
+#include "chromecast/media/base/media_caps.h" |
+#include "chromecast/public/media_codec_support_shlib.h" |
+#include "net/base/mime_util.h" |
-namespace net { |
+namespace chromecast { |
+namespace media { |
+namespace { |
+ |
+bool IsCodecSupported(const std::string& codec) { |
+ MediaCodecSupportShlib::CodecSupport platform_support = |
+ MediaCodecSupportShlib::IsSupported(codec); |
+ if (platform_support == MediaCodecSupportShlib::kSupported) |
+ return true; |
+ else if (platform_support == MediaCodecSupportShlib::kNotSupported) |
+ return false; |
+ |
+ if (codec == "aac51") { |
+ return ::media::HdmiSinkSupportsPcmSurroundSound(); |
+ } |
+ if (codec == "ac-3" || codec == "mp4a.a5") { |
+ return ::media::HdmiSinkSupportsAC3(); |
+ } |
+ if (codec == "ec-3" || codec == "mp4a.a6") { |
+ return ::media::HdmiSinkSupportsEAC3(); |
+ } |
-bool DefaultIsCodecSupported(const std::string&) { |
return true; |
} |
-} // namespace net |
+} // namespace |
+ |
+net::IsCodecSupportedCB GetIsCodecSupportedOnChromecastCB() { |
+ return base::Bind(&IsCodecSupported); |
+} |
+} // namespace media |
+} // namespace chromecast |