Bug 1315850 - Create CDM video decoder in EMEDecoderModule. r=jya
MozReview-Commit-ID: 3xgFxg1WfmY
--- a/dom/media/platforms/agnostic/eme/EMEDecoderModule.cpp
+++ b/dom/media/platforms/agnostic/eme/EMEDecoderModule.cpp
@@ -348,17 +348,21 @@ EMEDecoderModule::CreateVideoDecoder(con
return m->CreateVideoDecoder(aParams);
}
if (SupportsMimeType(aParams.mConfig.mMimeType, nullptr)) {
// GMP decodes. Assume that means it can decrypt too.
RefPtr<MediaDataDecoderProxy> wrapper =
CreateDecoderWrapper(mProxy, aParams);
auto params = GMPVideoDecoderParams(aParams);
- wrapper->SetProxyTarget(new EMEVideoDecoder(mProxy, params));
+ if (MediaPrefs::EMEChromiumAPIEnabled()) {
+ wrapper->SetProxyTarget(new ChromiumCDMVideoDecoder(params, mProxy));
+ } else {
+ wrapper->SetProxyTarget(new EMEVideoDecoder(mProxy, params));
+ }
return wrapper.forget();
}
MOZ_ASSERT(mPDM);
RefPtr<MediaDataDecoder> decoder(mPDM->CreateDecoder(aParams));
if (!decoder) {
return nullptr;
}
--- a/dom/media/platforms/agnostic/gmp/GMPDecoderModule.cpp
+++ b/dom/media/platforms/agnostic/gmp/GMPDecoderModule.cpp
@@ -74,29 +74,30 @@ GMPDecoderModule::CreateAudioDecoder(con
bool
GMPDecoderModule::SupportsMimeType(const nsACString& aMimeType,
const Maybe<nsCString>& aGMP)
{
if (aGMP.isNothing()) {
return false;
}
+ nsCString api = MediaPrefs::EMEChromiumAPIEnabled()
+ ? NS_LITERAL_CSTRING(CHROMIUM_CDM_API)
+ : NS_LITERAL_CSTRING(GMP_API_VIDEO_DECODER);
+
if (MP4Decoder::IsH264(aMimeType)) {
- return HaveGMPFor(NS_LITERAL_CSTRING(GMP_API_VIDEO_DECODER),
- { NS_LITERAL_CSTRING("h264"), aGMP.value()});
+ return HaveGMPFor(api, { NS_LITERAL_CSTRING("h264"), aGMP.value()});
}
if (VPXDecoder::IsVP9(aMimeType)) {
- return HaveGMPFor(NS_LITERAL_CSTRING(GMP_API_VIDEO_DECODER),
- { NS_LITERAL_CSTRING("vp9"), aGMP.value()});
+ return HaveGMPFor(api, { NS_LITERAL_CSTRING("vp9"), aGMP.value()});
}
if (VPXDecoder::IsVP8(aMimeType)) {
- return HaveGMPFor(NS_LITERAL_CSTRING(GMP_API_VIDEO_DECODER),
- { NS_LITERAL_CSTRING("vp8"), aGMP.value()});
+ return HaveGMPFor(api, { NS_LITERAL_CSTRING("vp8"), aGMP.value()});
}
return false;
}
bool
GMPDecoderModule::SupportsMimeType(const nsACString& aMimeType,
DecoderDoctorDiagnostics* aDiagnostics) const