Bug 1846848 - part3 : add a way to get CDM capabilities from the chrome process. r=gerard-majax,jolin

Differential Revision: https://phabricator.services.mozilla.com/D194452
This commit is contained in:
alwu
2023-12-06 09:04:02 +00:00
parent b5f8c375cb
commit ad843e13ee
8 changed files with 90 additions and 11 deletions

View File

@@ -19,6 +19,11 @@
# include "mozilla/layers/VideoBridgeUtils.h"
#endif
#ifdef MOZ_WMF_CDM
# include "mozilla/EMEUtils.h"
# include "mozilla/PMFCDM.h"
#endif
namespace mozilla::ipc {
NS_IMETHODIMP UtilityAudioDecoderChildShutdownObserver::Observe(
@@ -173,4 +178,33 @@ bool UtilityAudioDecoderChild::CreateVideoBridge() {
}
#endif
#ifdef MOZ_WMF_CDM
void UtilityAudioDecoderChild::GetKeySystemCapabilities() {
EME_LOG("Ask capabilities for all supported CDMs");
SendGetKeySystemCapabilities()->Then(
NS_GetCurrentThread(), __func__,
[](CopyableTArray<MFCDMCapabilitiesIPDL>&& result) {
for (const auto& capabilities : result) {
EME_LOG("Received capabilities for %s",
NS_ConvertUTF16toUTF8(capabilities.keySystem()).get());
for (const auto& v : capabilities.videoCapabilities()) {
EME_LOG(" capabilities: video=%s",
NS_ConvertUTF16toUTF8(v.contentType()).get());
}
for (const auto& a : capabilities.audioCapabilities()) {
EME_LOG(" capabilities: audio=%s",
NS_ConvertUTF16toUTF8(a.contentType()).get());
}
for (const auto& e : capabilities.encryptionSchemes()) {
EME_LOG(" capabilities: encryptionScheme=%s",
EncryptionSchemeStr(e));
}
}
},
[](const mozilla::ipc::ResponseRejectReason& aReason) {
EME_LOG("IPC failure for GetKeySystemCapabilities!");
});
}
#endif
} // namespace mozilla::ipc