mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-08 02:14:43 +00:00
Bug 1319159 - Updates how 'ParseChromiumManifest' works so that it doesn't assume Widevine (now it assumes Widevine or Clearkey..). r=cpearce
MozReview-Commit-ID: 8m6hPIiUPT --HG-- extra : rebase_source : 457da21982f35b66eac1ff32316ceee243139652 extra : histedit_source : 4ebc011309b9013952435bf0ff32206a73de0854
This commit is contained in:
parent
fd396ecf1d
commit
f4929b46d1
@ -802,7 +802,7 @@ bin/libfreebl_32int64_3.so
|
||||
|
||||
; media
|
||||
@RESPATH@/gmp-clearkey/0.1/@DLL_PREFIX@clearkey@DLL_SUFFIX@
|
||||
@RESPATH@/gmp-clearkey/0.1/clearkey.info
|
||||
@RESPATH@/gmp-clearkey/0.1/manifest.json
|
||||
|
||||
#ifdef PKG_LOCALE_MANIFEST
|
||||
#include @PKG_LOCALE_MANIFEST@
|
||||
|
@ -797,7 +797,7 @@ bin/libfreebl_32int64_3.so
|
||||
|
||||
; media
|
||||
@RESPATH@/gmp-clearkey/0.1/@DLL_PREFIX@clearkey@DLL_SUFFIX@
|
||||
@RESPATH@/gmp-clearkey/0.1/clearkey.info
|
||||
@RESPATH@/gmp-clearkey/0.1/manifest.json
|
||||
|
||||
; gfx
|
||||
#ifdef XP_WIN
|
||||
|
@ -958,22 +958,54 @@ GMPParent::ParseChromiumManifest(const nsAString& aJSON)
|
||||
mDescription = NS_ConvertUTF16toUTF8(m.mDescription);
|
||||
mVersion = NS_ConvertUTF16toUTF8(m.mVersion);
|
||||
|
||||
nsCString kEMEKeySystem;
|
||||
|
||||
// We hard code a few of the settings because they can't be stored in the
|
||||
// widevine manifest without making our API different to widevine's.
|
||||
if (mDisplayName.EqualsASCII("clearkey")) {
|
||||
kEMEKeySystem = kEMEKeySystemClearkey;
|
||||
#if XP_WIN
|
||||
mLibs = NS_LITERAL_CSTRING("dxva2.dll, msmpeg2vdec.dll, evr.dll, mfh264dec.dll, mfplat.dll");
|
||||
#endif
|
||||
} else if (mDisplayName.EqualsASCII("WidevineCdm")) {
|
||||
kEMEKeySystem = kEMEKeySystemWidevine;
|
||||
#if XP_WIN
|
||||
mLibs = NS_LITERAL_CSTRING("dxva2.dll");
|
||||
#endif
|
||||
} else {
|
||||
return GenericPromise::CreateAndReject(NS_ERROR_FAILURE, __func__);
|
||||
}
|
||||
|
||||
GMPCapability video(NS_LITERAL_CSTRING(GMP_API_VIDEO_DECODER));
|
||||
video.mAPITags.AppendElement(NS_LITERAL_CSTRING("h264"));
|
||||
video.mAPITags.AppendElement(NS_LITERAL_CSTRING("vp8"));
|
||||
video.mAPITags.AppendElement(NS_LITERAL_CSTRING("vp9"));
|
||||
video.mAPITags.AppendElement(kEMEKeySystemWidevine);
|
||||
|
||||
nsCString codecsString = NS_ConvertUTF16toUTF8(m.mX_cdm_codecs);
|
||||
nsTArray<nsCString> codecs;
|
||||
SplitAt(",", codecsString, codecs);
|
||||
|
||||
for (const nsCString& chromiumCodec : codecs) {
|
||||
nsCString codec;
|
||||
if (chromiumCodec.EqualsASCII("vp8")) {
|
||||
codec = NS_LITERAL_CSTRING("vp8");
|
||||
} else if (chromiumCodec.EqualsASCII("vp9.0")) {
|
||||
codec = NS_LITERAL_CSTRING("vp9");
|
||||
} else if (chromiumCodec.EqualsASCII("avc1")) {
|
||||
codec = NS_LITERAL_CSTRING("h264");
|
||||
} else {
|
||||
return GenericPromise::CreateAndReject(NS_ERROR_FAILURE, __func__);
|
||||
}
|
||||
|
||||
video.mAPITags.AppendElement(codec);
|
||||
}
|
||||
|
||||
video.mAPITags.AppendElement(kEMEKeySystem);
|
||||
mCapabilities.AppendElement(Move(video));
|
||||
|
||||
GMPCapability decrypt(NS_LITERAL_CSTRING(GMP_API_DECRYPTOR));
|
||||
decrypt.mAPITags.AppendElement(kEMEKeySystemWidevine);
|
||||
|
||||
decrypt.mAPITags.AppendElement(kEMEKeySystem);
|
||||
mCapabilities.AppendElement(Move(decrypt));
|
||||
|
||||
MOZ_ASSERT(mName.EqualsLiteral("widevinecdm"));
|
||||
mAdapter = NS_LITERAL_STRING("widevine");
|
||||
#ifdef XP_WIN
|
||||
mLibs = NS_LITERAL_CSTRING("dxva2.dll");
|
||||
#endif
|
||||
|
||||
return GenericPromise::CreateAndResolve(true, __func__);
|
||||
}
|
||||
|
@ -1,10 +0,0 @@
|
||||
Name: clearkey
|
||||
Description: ClearKey Gecko Media Plugin
|
||||
Version: 1
|
||||
#ifdef ENABLE_WMF
|
||||
APIs: eme-decrypt-v9[org.w3.clearkey], decode-video[h264:org.w3.clearkey]
|
||||
Libraries: dxva2.dll, d3d9.dll, msmpeg2vdec.dll, msmpeg2adec.dll, MSAudDecMFT.dll, evr.dll, mfheaacdec.dll, mfh264dec.dll, mfplat.dll
|
||||
#else
|
||||
APIs: eme-decrypt-v9[org.w3.clearkey]
|
||||
Libraries:
|
||||
#endif
|
13
media/gmp-clearkey/0.1/manifest.json.in
Normal file
13
media/gmp-clearkey/0.1/manifest.json.in
Normal file
@ -0,0 +1,13 @@
|
||||
{
|
||||
"name": "clearkey",
|
||||
"description": "ClearKey Gecko Media Plugin",
|
||||
"version": "1",
|
||||
"x-cdm-module-versions": "4",
|
||||
"x-cdm-interface-versions": "8",
|
||||
"x-cdm-host-versions": "8",
|
||||
#ifdef ENABLE_WMF
|
||||
"x-cdm-codecs": "avc1"
|
||||
#else
|
||||
"x-cdm-codecs": ""
|
||||
#endif
|
||||
}
|
@ -8,7 +8,7 @@ SharedLibrary('clearkey')
|
||||
|
||||
FINAL_TARGET = 'dist/bin/gmp-clearkey/0.1'
|
||||
|
||||
FINAL_TARGET_PP_FILES += ['clearkey.info.in']
|
||||
FINAL_TARGET_PP_FILES += ['manifest.json.in']
|
||||
|
||||
UNIFIED_SOURCES += [
|
||||
'ClearKeyAsyncShutdown.cpp',
|
||||
|
Loading…
Reference in New Issue
Block a user