| Index: media/blink/webmediacapabilitiesclient_impl.cc
|
| diff --git a/media/blink/webmediacapabilitiesclient_impl.cc b/media/blink/webmediacapabilitiesclient_impl.cc
|
| index a407f88b06549f04bc3b23651b2c2d46e175895b..7b9ecbca573e7e823734d6b37ec68ac94247a42a 100644
|
| --- a/media/blink/webmediacapabilitiesclient_impl.cc
|
| +++ b/media/blink/webmediacapabilitiesclient_impl.cc
|
| @@ -4,7 +4,11 @@
|
|
|
| #include "media/blink/webmediacapabilitiesclient_impl.h"
|
|
|
| +#include "media/base/mime_util.h"
|
| +#include "third_party/WebKit/public/platform/modules/media_capabilities/WebAudioConfiguration.h"
|
| #include "third_party/WebKit/public/platform/modules/media_capabilities/WebMediaCapabilitiesInfo.h"
|
| +#include "third_party/WebKit/public/platform/modules/media_capabilities/WebMediaConfiguration.h"
|
| +#include "third_party/WebKit/public/platform/modules/media_capabilities/WebVideoConfiguration.h"
|
|
|
| namespace media {
|
|
|
| @@ -15,13 +19,53 @@ WebMediaCapabilitiesClientImpl::~WebMediaCapabilitiesClientImpl() = default;
|
| void WebMediaCapabilitiesClientImpl::DecodingInfo(
|
| const blink::WebMediaConfiguration& configuration,
|
| std::unique_ptr<blink::WebMediaCapabilitiesQueryCallbacks> callbacks) {
|
| - // TODO(chcunningham, mlamouri): this is a dummy implementation that returns
|
| - // true for all the fields.
|
| std::unique_ptr<blink::WebMediaCapabilitiesInfo> info(
|
| new blink::WebMediaCapabilitiesInfo());
|
| - info->supported = true;
|
| - info->smooth = true;
|
| - info->power_efficient = true;
|
| +
|
| + SupportsType audio_support = IsSupported;
|
| + SupportsType video_support = IsSupported;
|
| +
|
| + if (configuration.audio_configuration) {
|
| + const blink::WebAudioConfiguration& audio_config =
|
| + configuration.audio_configuration.value();
|
| + std::vector<std::string> codec_vector;
|
| + SplitCodecsToVector(audio_config.codec.Ascii(), &codec_vector, false);
|
| +
|
| + // TODO(chcunningham): Update to throw exception pending outcome of
|
| + // https://github.com/WICG/media-capabilities/issues/32
|
| + DCHECK_LE(codec_vector.size(), 1U);
|
| +
|
| + audio_support =
|
| + IsSupportedMediaFormat(audio_config.mime_type.Ascii(), codec_vector);
|
| + }
|
| +
|
| + if (configuration.video_configuration) {
|
| + const blink::WebVideoConfiguration& video_config =
|
| + configuration.video_configuration.value();
|
| + std::vector<std::string> codec_vector;
|
| + SplitCodecsToVector(video_config.codec.Ascii(), &codec_vector, false);
|
| +
|
| + // TODO(chcunningham): Update to throw exception pending outcome of
|
| + // https://github.com/WICG/media-capabilities/issues/32
|
| + DCHECK_LE(codec_vector.size(), 1U);
|
| +
|
| + video_support =
|
| + IsSupportedMediaFormat(video_config.mime_type.Ascii(), codec_vector);
|
| + }
|
| +
|
| + // TODO(chcunningham): API should never have to mask uncertainty. Log a metric
|
| + // for any content type that is "maybe" supported.
|
| + if (video_support == MayBeSupported)
|
| + video_support = IsSupported;
|
| + if (audio_support == MayBeSupported)
|
| + audio_support = IsSupported;
|
| +
|
| + info->supported =
|
| + audio_support == IsSupported && video_support == IsSupported;
|
| +
|
| + // TODO(chcunningham, mlamouri): real implementation for these.
|
| + info->smooth = info->power_efficient = info->supported;
|
| +
|
| callbacks->OnSuccess(std::move(info));
|
| }
|
|
|
|
|