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 8a5965956ac8fc1c8bd43a7dd06c7fec37c28415..cf6e6d62d6d2c99afc29fdbbf284850ce4cdbe06 100644 |
--- a/chromecast/media/base/media_codec_support.cc |
+++ b/chromecast/media/base/media_codec_support.cc |
@@ -35,6 +35,12 @@ bool IsCodecSupported(const std::string& codec) { |
if (codec == "ec-3" || codec == "mp4a.a6" || codec == "mp4a.A6") { |
return MediaCapabilities::HdmiSinkSupportsEAC3(); |
} |
+ // Shared library should return kDefault if the platform depends on sink |
wolenetz
2017/01/24 21:52:23
Is kDefault a bool? Or am I confused by this comme
erickung1
2017/02/03 18:18:30
Done.
|
+ // device capability to stream Dolby Vision. |
+ if (base::StartsWith(codec, "dvav.", base::CompareCase::SENSITIVE) || |
+ base::StartsWith(codec, "dvhe.", base::CompareCase::SENSITIVE)) { |
+ return MediaCapabilities::HdmiSinkSupportsDolbyVision(); |
+ } |
// This function is invoked from MimeUtil::AreSupportedCodecs to check if a |
// given codec id is supported by Chromecast or not. So by default we should |
@@ -52,7 +58,8 @@ bool IsCodecSupported(const std::string& codec) { |
// Converts ::media::VideoCodec to chromecast::media::VideoCodec. Any unknown or |
wolenetz
2017/01/24 21:52:24
comments like this belong in .h instead of .cc
Als
erickung1
2017/02/03 18:18:30
Done.
|
// unsupported codec will be converted to chromecast::media::kCodecUnknown. |
-VideoCodec ToCastVideoCodec(const ::media::VideoCodec video_codec) { |
+VideoCodec ToCastVideoCodec(const ::media::VideoCodec video_codec, |
+ const ::media::VideoCodecProfile codec_profile) { |
switch (video_codec) { |
case ::media::kCodecH264: |
return kCodecH264; |
@@ -62,6 +69,15 @@ VideoCodec ToCastVideoCodec(const ::media::VideoCodec video_codec) { |
return kCodecVP9; |
case ::media::kCodecHEVC: |
return kCodecHEVC; |
+ case ::media::kCodecDolbyVision: |
+ if (codec_profile == ::media::DOLBYVISION_PROFILE0) |
wolenetz
2017/01/24 21:52:24
I'm unfamiliar with DV profiles, but compared to p
erickung1
2017/02/03 18:18:30
Yes, for the latest DV spec from Dolby, profile 1
|
+ return kCodecDolbyVisionH264; |
+ else if (codec_profile == ::media::DOLBYVISION_PROFILE4 || |
wolenetz
2017/01/24 21:52:24
Ditto: is omission of check for DV profiles 3 and
erickung1
2017/02/03 18:18:31
ditto, the profile 3 and 6 will deprecated.
|
+ codec_profile == ::media::DOLBYVISION_PROFILE5 || |
+ codec_profile == ::media::DOLBYVISION_PROFILE7) |
halliwell
2017/01/20 02:05:04
nit, prefer braces { } for multi-line conditions
wolenetz
2017/01/24 21:52:23
Chromium definitely needs { } here.
erickung1
2017/02/03 18:18:31
Done.
|
+ return kCodecDolbyVisionHEVC; |
+ LOG(ERROR) << "Unsupported video codec profile " << codec_profile; |
+ break; |
default: |
LOG(ERROR) << "Unsupported video codec " << video_codec; |
} |
@@ -110,6 +126,14 @@ VideoProfile ToCastVideoProfile( |
return kVP9Profile2; |
case ::media::VP9PROFILE_PROFILE3: |
return kVP9Profile3; |
+ case ::media::DOLBYVISION_PROFILE0: |
wolenetz
2017/01/24 21:52:24
(Ditto of above query about intentionality of omis
erickung1
2017/02/03 18:18:30
as mentioned above, profile 1 2 3 and 6 are deprec
|
+ return kDolbyVisionCompatible_EL_MD; |
+ case ::media::DOLBYVISION_PROFILE4: |
+ return kDolbyVisionCompatible_EL_MD; |
+ case ::media::DOLBYVISION_PROFILE5: |
+ return kDolbyVisionNonCompatible_BL_MD; |
+ case ::media::DOLBYVISION_PROFILE7: |
+ return kDolbyVisionNonCompatible_BL_EL_MD; |
default: |
LOG(INFO) << "Unsupported video codec profile " << codec_profile; |
} |