nsresult GMPVideoDecoderParent::InitDecode(const GMPVideoCodec& aCodecSettings, const nsTArray<uint8_t>& aCodecSpecific, GMPVideoDecoderCallbackProxy* aCallback, int32_t aCoreCount) { LOGD(("GMPVideoDecoderParent[%p]::InitDecode()", this)); if (mActorDestroyed) { NS_WARNING("Trying to use a destroyed GMP video decoder!"); return NS_ERROR_FAILURE; } if (mIsOpen) { NS_WARNING("Trying to re-init an in-use GMP video decoder!"); return NS_ERROR_FAILURE; } MOZ_ASSERT(mPlugin->GMPThread() == NS_GetCurrentThread()); if (!aCallback) { return NS_ERROR_FAILURE; } mCallback = aCallback; if (!SendInitDecode(aCodecSettings, aCodecSpecific, aCoreCount)) { return NS_ERROR_FAILURE; } mIsOpen = true; // Async IPC, we don't have access to a return value. return NS_OK; }
nsresult GMPAudioDecoderParent::InitDecode(GMPAudioCodecType aCodecType, uint32_t aChannelCount, uint32_t aBitsPerChannel, uint32_t aSamplesPerSecond, nsTArray<uint8_t>& aExtraData, GMPAudioDecoderCallbackProxy* aCallback) { if (mIsOpen) { NS_WARNING("Trying to re-init an in-use GMP audio decoder!"); return NS_ERROR_FAILURE; } MOZ_ASSERT(mPlugin->GMPThread() == NS_GetCurrentThread()); if (!aCallback) { return NS_ERROR_FAILURE; } mCallback = aCallback; GMPAudioCodecData data; data.mCodecType() = aCodecType; data.mChannelCount() = aChannelCount; data.mBitsPerChannel() = aBitsPerChannel; data.mSamplesPerSecond() = aSamplesPerSecond; data.mExtraData() = aExtraData; if (!SendInitDecode(data)) { return NS_ERROR_FAILURE; } mIsOpen = true; // Async IPC, we don't have access to a return value. return NS_OK; }
nsresult GMPVideoDecoderParent::InitDecode(const GMPVideoCodec& aCodecSettings, const nsTArray<uint8_t>& aCodecSpecific, GMPVideoDecoderCallback* aCallback, int32_t aCoreCount) { if (!mCanSendMessages) { NS_WARNING("Trying to use an invalid GMP video decoder!"); return NS_ERROR_FAILURE; } MOZ_ASSERT(mPlugin->GMPThread() == NS_GetCurrentThread()); if (!aCallback) { return NS_ERROR_FAILURE; } mCallback = aCallback; if (!SendInitDecode(aCodecSettings, aCodecSpecific, aCoreCount)) { return NS_ERROR_FAILURE; } // Async IPC, we don't have access to a return value. return NS_OK; }