mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-27 04:05:32 +00:00
2b1313aa34
Starting at the Widevine CDM10 interface, the CDM is expected to make a callback to an `OnInititalized` function to signal initialization has taken place. Prior to this, it was sufficient to call the init function on the CDM, with no waiting for a callback. This changeset puts in place the IPDL to support async init, as well as the handling for the ChromiumCDMParent and ChromiumCDMProxy. The code is not fully updated to handle CDM10, so CDM9 is the only compatible CDM. Because CDM9 does not perform the init callback, we immediately call our IPDL to signal init has taken place. This also accommodates the clearkey case, which uses the CDM9 interface. Further changesets will put in place more elaborate handling to accommodate the possible failure of init, as well as implementing the handling `OnInitialized` function explicitly. Differential Revision: https://phabricator.services.mozilla.com/D6061 --HG-- extra : moz-landing-system : lando
116 lines
3.3 KiB
Plaintext
116 lines
3.3 KiB
Plaintext
/* -*- 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;
|
|
|
|
namespace mozilla {
|
|
namespace gmp {
|
|
|
|
async protocol PChromiumCDM
|
|
{
|
|
manager PGMPContent;
|
|
child:
|
|
|
|
// cdm::ContentDecryptionModule9+10
|
|
async Init(bool aAllowDistinctiveIdentifier,
|
|
bool aAllowPersistentState) returns (bool unused);
|
|
|
|
async GetStatusForPolicy(uint32_t aPromiseId,
|
|
nsCString 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);
|
|
|
|
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::Host9+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 ResolveLoadSessionPromise(uint32_t aPromiseId, bool aSuccessful);
|
|
|
|
// Return values of cdm::ContentDecryptionModule9::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::ContentDecryptionModule9::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
|