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..57ae5a8974a0083db5efe39bb3bfd3cca691f7fc 100644 |
--- a/chromecast/media/base/media_codec_support.cc |
+++ b/chromecast/media/base/media_codec_support.cc |
@@ -4,13 +4,48 @@ |
#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" |
+// TODO(gunsch/servolk): delete this definition once a solution exists upstream. |
gunsch
2015/07/27 17:14:49
You might be able to resolve this TODO now. Intern
servolk
2015/07/27 21:25:47
It's true, internal implementations won't call thi
halliwell
2015/07/28 02:19:35
I could remove this TODO by just returning true lo
gunsch
2015/07/29 17:04:19
Yeah, go ahead and delete it. We shouldn't be defi
halliwell
2015/07/29 19:58:19
Ok, removed.
|
namespace net { |
- |
bool DefaultIsCodecSupported(const std::string&) { |
return true; |
} |
+} |
+ |
+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(); |
+ } |
-} // namespace net |
+ return net::DefaultIsCodecSupported(codec); |
+} |
+ |
+} // namespace |
+ |
+net::IsCodecSupportedCB GetIsCodecSupportedOnChromecastCB() { |
+ return base::Bind(&IsCodecSupported); |
+} |
+} // namespace media |
+} // namespace chromecast |