summaryrefslogtreecommitdiffstats
path: root/dom/media/gmp/PChromiumCDM.ipdl
diff options
context:
space:
mode:
Diffstat (limited to 'dom/media/gmp/PChromiumCDM.ipdl')
-rw-r--r--dom/media/gmp/PChromiumCDM.ipdl129
1 files changed, 129 insertions, 0 deletions
diff --git a/dom/media/gmp/PChromiumCDM.ipdl b/dom/media/gmp/PChromiumCDM.ipdl
new file mode 100644
index 0000000000..2355839c17
--- /dev/null
+++ b/dom/media/gmp/PChromiumCDM.ipdl
@@ -0,0 +1,129 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+include protocol PGMPContent;
+include GMPTypes;
+
+include "GMPMessageUtils.h";
+include "ChromiumCDMParent.h";
+
+using cdm::HdcpVersion from "GMPSanitizedExports.h";
+
+namespace mozilla {
+namespace gmp {
+
+[ChildImpl=virtual, ParentImpl="ChromiumCDMParent"]
+async protocol PChromiumCDM
+{
+ manager PGMPContent;
+child:
+
+ // cdm::ContentDecryptionModule_10
+ async Init(bool aAllowDistinctiveIdentifier,
+ bool aAllowPersistentState) returns (bool aSuccess);
+
+ async GetStatusForPolicy(uint32_t aPromiseId,
+ HdcpVersion aMinHdcpVersion);
+
+ async SetServerCertificate(uint32_t aPromiseId,
+ uint8_t[] aServerCert);
+
+ async CreateSessionAndGenerateRequest(uint32_t aPromiseId,
+ uint32_t aSessionType,
+ uint32_t aInitDataType,
+ uint8_t[] aInitData);
+
+ async LoadSession(uint32_t aPromiseId,
+ uint32_t aSessionType,
+ nsCString aSessionId);
+
+ async UpdateSession(uint32_t aPromiseId,
+ nsCString aSessionId,
+ uint8_t[] aResponse);
+
+ async CloseSession(uint32_t aPromiseId,
+ nsCString aSessionId);
+
+ async RemoveSession(uint32_t aPromiseId,
+ nsCString aSessionId);
+
+ // This is called after the parent has verified the protection status and
+ // round tripped the call back to the child.
+ async CompleteQueryOutputProtectionStatus(bool aSuccess,
+ uint32_t aLinkMask,
+ uint32_t aProtectionMask);
+
+ async Decrypt(uint32_t aId, CDMInputBuffer aBuffer);
+
+ async InitializeVideoDecoder(CDMVideoDecoderConfig aConfig);
+
+ async DeinitializeVideoDecoder();
+
+ async ResetVideoDecoder();
+
+ async DecryptAndDecodeFrame(CDMInputBuffer aBuffer);
+
+ async Drain();
+
+ async Destroy();
+
+ async GiveBuffer(Shmem aShmem);
+
+ async PurgeShmems();
+
+
+parent:
+ async __delete__();
+
+ // cdm::Host_10
+ async OnResolvePromiseWithKeyStatus(uint32_t aPromiseId, uint32_t aKeyStatus);
+
+ async OnResolveNewSessionPromise(uint32_t aPromiseId, nsCString aSessionId);
+
+ async OnResolvePromise(uint32_t aPromiseId);
+
+ async OnRejectPromise(uint32_t aPromiseId,
+ uint32_t aException,
+ uint32_t aSystemCode,
+ nsCString aErrorMessage);
+
+ async OnSessionMessage(nsCString aSessionId,
+ uint32_t aMessageType,
+ uint8_t[] aMessage);
+
+ async OnSessionKeysChange(nsCString aSessionId,
+ CDMKeyInformation[] aKeysInfo);
+
+ async OnExpirationChange(nsCString aSessionId,
+ double aSecondsSinceEpoch);
+
+ async OnSessionClosed(nsCString aSessionId);
+
+ async OnQueryOutputProtectionStatus();
+
+ async ResolveLoadSessionPromise(uint32_t aPromiseId, bool aSuccessful);
+
+ // Return values of cdm::ContentDecryptionModule_10::Decrypt
+ async Decrypted(uint32_t aId, uint32_t aStatus, Shmem aDecryptedData);
+ async DecryptFailed(uint32_t aId, uint32_t aStatus);
+
+ async OnDecoderInitDone(uint32_t aStatus);
+
+ // Return values of cdm::ContentDecryptionModule_10::DecryptAndDecodeFrame
+ async DecodedShmem(CDMVideoFrame aFrame, Shmem aData);
+ async DecodedData(CDMVideoFrame aFrame, uint8_t[] aData);
+ async DecodeFailed(uint32_t aStatus);
+
+ async ResetVideoDecoderComplete();
+
+ async DrainComplete();
+
+ async Shutdown();
+
+ async IncreaseShmemPoolSize();
+};
+
+} // namespace gmp
+} // namespace mozilla