--- a/dom/media/eme/MediaKeySystemAccess.cpp
+++ b/dom/media/eme/MediaKeySystemAccess.cpp
@@ -22,18 +22,16 @@
#include "mozilla/Services.h"
#include "nsIObserverService.h"
#include "mozilla/EMEUtils.h"
#include "GMPUtils.h"
#include "nsAppDirectoryServiceDefs.h"
#include "nsDirectoryServiceUtils.h"
#include "nsDirectoryServiceDefs.h"
#include "nsXULAppAPI.h"
-#include "gmp-audio-decode.h"
-#include "gmp-video-decode.h"
#include "DecoderDoctorDiagnostics.h"
#include "WebMDecoder.h"
#include "mozilla/StaticPtr.h"
#include "mozilla/ClearOnShutdown.h"
#include "nsUnicharUtils.h"
#include "mozilla/dom/MediaSource.h"
#ifdef MOZ_WIDGET_ANDROID
#include "FennecJNIWrappers.h"
deleted file mode 100644
--- a/dom/media/gmp/GMPAudioDecoderChild.cpp
+++ /dev/null
@@ -1,172 +0,0 @@
-/* -*- 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 "GMPAudioDecoderChild.h"
-#include "GMPContentChild.h"
-#include "GMPAudioHost.h"
-#include "mozilla/Unused.h"
-#include <stdio.h>
-
-namespace mozilla {
-namespace gmp {
-
-GMPAudioDecoderChild::GMPAudioDecoderChild(GMPContentChild* aPlugin)
- : mPlugin(aPlugin)
- , mAudioDecoder(nullptr)
-{
- MOZ_ASSERT(mPlugin);
-}
-
-GMPAudioDecoderChild::~GMPAudioDecoderChild()
-{
-}
-
-void
-GMPAudioDecoderChild::Init(GMPAudioDecoder* aDecoder)
-{
- MOZ_ASSERT(aDecoder, "Cannot initialize Audio decoder child without a Audio decoder!");
- mAudioDecoder = aDecoder;
-}
-
-GMPAudioHostImpl&
-GMPAudioDecoderChild::Host()
-{
- return mAudioHost;
-}
-
-void
-GMPAudioDecoderChild::Decoded(GMPAudioSamples* aDecodedSamples)
-{
- MOZ_ASSERT(mPlugin->GMPMessageLoop() == MessageLoop::current());
-
- if (!aDecodedSamples) {
- MOZ_CRASH("Not given decoded audio samples!");
- }
-
- GMPAudioDecodedSampleData samples;
- samples.mData().AppendElements((int16_t*)aDecodedSamples->Buffer(),
- aDecodedSamples->Size() / sizeof(int16_t));
- samples.mTimeStamp() = aDecodedSamples->TimeStamp();
- samples.mChannelCount() = aDecodedSamples->Channels();
- samples.mSamplesPerSecond() = aDecodedSamples->Rate();
-
- Unused << SendDecoded(samples);
-
- aDecodedSamples->Destroy();
-}
-
-void
-GMPAudioDecoderChild::InputDataExhausted()
-{
- MOZ_ASSERT(mPlugin->GMPMessageLoop() == MessageLoop::current());
-
- Unused << SendInputDataExhausted();
-}
-
-void
-GMPAudioDecoderChild::DrainComplete()
-{
- MOZ_ASSERT(mPlugin->GMPMessageLoop() == MessageLoop::current());
-
- Unused << SendDrainComplete();
-}
-
-void
-GMPAudioDecoderChild::ResetComplete()
-{
- MOZ_ASSERT(mPlugin->GMPMessageLoop() == MessageLoop::current());
-
- Unused << SendResetComplete();
-}
-
-void
-GMPAudioDecoderChild::Error(GMPErr aError)
-{
- MOZ_ASSERT(mPlugin->GMPMessageLoop() == MessageLoop::current());
-
- Unused << SendError(aError);
-}
-
-mozilla::ipc::IPCResult
-GMPAudioDecoderChild::RecvInitDecode(const GMPAudioCodecData& a)
-{
- MOZ_ASSERT(mAudioDecoder);
- if (!mAudioDecoder) {
- return IPC_FAIL_NO_REASON(this);
- }
-
- GMPAudioCodec codec;
- codec.mCodecType = a.mCodecType();
- codec.mChannelCount = a.mChannelCount();
- codec.mBitsPerChannel = a.mBitsPerChannel();
- codec.mSamplesPerSecond = a.mSamplesPerSecond();
- codec.mExtraData = a.mExtraData().Elements();
- codec.mExtraDataLen = a.mExtraData().Length();
-
- // Ignore any return code. It is OK for this to fail without killing the process.
- mAudioDecoder->InitDecode(codec, this);
-
- return IPC_OK();
-}
-
-mozilla::ipc::IPCResult
-GMPAudioDecoderChild::RecvDecode(const GMPAudioEncodedSampleData& aEncodedSamples)
-{
- if (!mAudioDecoder) {
- return IPC_FAIL_NO_REASON(this);
- }
-
- GMPAudioSamples* samples = new GMPAudioSamplesImpl(aEncodedSamples);
-
- // Ignore any return code. It is OK for this to fail without killing the process.
- mAudioDecoder->Decode(samples);
-
- return IPC_OK();
-}
-
-mozilla::ipc::IPCResult
-GMPAudioDecoderChild::RecvReset()
-{
- if (!mAudioDecoder) {
- return IPC_FAIL_NO_REASON(this);
- }
-
- // Ignore any return code. It is OK for this to fail without killing the process.
- mAudioDecoder->Reset();
-
- return IPC_OK();
-}
-
-mozilla::ipc::IPCResult
-GMPAudioDecoderChild::RecvDrain()
-{
- if (!mAudioDecoder) {
- return IPC_FAIL_NO_REASON(this);
- }
-
- // Ignore any return code. It is OK for this to fail without killing the process.
- mAudioDecoder->Drain();
-
- return IPC_OK();
-}
-
-mozilla::ipc::IPCResult
-GMPAudioDecoderChild::RecvDecodingComplete()
-{
- if (mAudioDecoder) {
- // Ignore any return code. It is OK for this to fail without killing the process.
- mAudioDecoder->DecodingComplete();
- mAudioDecoder = nullptr;
- }
-
- mPlugin = nullptr;
-
- Unused << Send__delete__(this);
-
- return IPC_OK();
-}
-
-} // namespace gmp
-} // namespace mozilla
deleted file mode 100644
--- a/dom/media/gmp/GMPAudioDecoderChild.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* -*- 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/. */
-
-#ifndef GMPAudioDecoderChild_h_
-#define GMPAudioDecoderChild_h_
-
-#include "mozilla/gmp/PGMPAudioDecoderChild.h"
-#include "gmp-audio-decode.h"
-#include "GMPAudioHost.h"
-
-namespace mozilla {
-namespace gmp {
-
-class GMPContentChild;
-
-class GMPAudioDecoderChild : public PGMPAudioDecoderChild,
- public GMPAudioDecoderCallback
-{
-public:
- explicit GMPAudioDecoderChild(GMPContentChild* aPlugin);
- virtual ~GMPAudioDecoderChild();
-
- void Init(GMPAudioDecoder* aDecoder);
- GMPAudioHostImpl& Host();
-
- // GMPAudioDecoderCallback
- void Decoded(GMPAudioSamples* aEncodedSamples) override;
- void InputDataExhausted() override;
- void DrainComplete() override;
- void ResetComplete() override;
- void Error(GMPErr aError) override;
-
-private:
- // PGMPAudioDecoderChild
- mozilla::ipc::IPCResult RecvInitDecode(const GMPAudioCodecData& codecSettings) override;
- mozilla::ipc::IPCResult RecvDecode(const GMPAudioEncodedSampleData& input) override;
- mozilla::ipc::IPCResult RecvReset() override;
- mozilla::ipc::IPCResult RecvDrain() override;
- mozilla::ipc::IPCResult RecvDecodingComplete() override;
-
- GMPContentChild* mPlugin;
- GMPAudioDecoder* mAudioDecoder;
- GMPAudioHostImpl mAudioHost;
-};
-
-} // namespace gmp
-} // namespace mozilla
-
-#endif // GMPAudioDecoderChild_h_
deleted file mode 100644
--- a/dom/media/gmp/GMPAudioDecoderParent.cpp
+++ /dev/null
@@ -1,369 +0,0 @@
-/* -*- 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 "GMPAudioDecoderParent.h"
-#include "GMPContentParent.h"
-#include <stdio.h>
-#include "mozilla/Unused.h"
-#include "GMPMessageUtils.h"
-#include "nsThreadUtils.h"
-#include "mozilla/Logging.h"
-
-namespace mozilla {
-
-#ifdef LOG
-#undef LOG
-#endif
-
-extern LogModule* GetGMPLog();
-
-#define LOGV(msg) MOZ_LOG(GetGMPLog(), mozilla::LogLevel::Verbose, msg)
-#define LOGD(msg) MOZ_LOG(GetGMPLog(), mozilla::LogLevel::Debug, msg)
-#define LOG(level, msg) MOZ_LOG(GetGMPLog(), (level), msg)
-
-namespace gmp {
-
-GMPAudioDecoderParent::GMPAudioDecoderParent(GMPContentParent* aPlugin)
- : mIsOpen(false)
- , mShuttingDown(false)
- , mActorDestroyed(false)
- , mIsAwaitingResetComplete(false)
- , mIsAwaitingDrainComplete(false)
- , mPlugin(aPlugin)
- , mCallback(nullptr)
-{
- MOZ_ASSERT(mPlugin);
-}
-
-GMPAudioDecoderParent::~GMPAudioDecoderParent()
-{
-}
-
-nsresult
-GMPAudioDecoderParent::InitDecode(GMPAudioCodecType aCodecType,
- uint32_t aChannelCount,
- uint32_t aBitsPerChannel,
- uint32_t aSamplesPerSecond,
- nsTArray<uint8_t>& aExtraData,
- GMPAudioDecoderCallbackProxy* aCallback)
-{
- LOGD(("GMPAudioDecoderParent[%p]::InitDecode()", this));
-
- 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
-GMPAudioDecoderParent::Decode(GMPAudioSamplesImpl& aEncodedSamples)
-{
- LOGV(("GMPAudioDecoderParent[%p]::Decode() timestamp=%lld",
- this, aEncodedSamples.TimeStamp()));
-
- if (!mIsOpen) {
- NS_WARNING("Trying to use a dead GMP Audio decoder!");
- return NS_ERROR_FAILURE;
- }
-
- MOZ_ASSERT(mPlugin->GMPThread() == NS_GetCurrentThread());
-
- GMPAudioEncodedSampleData samples;
- aEncodedSamples.RelinquishData(samples);
-
- if (!SendDecode(samples)) {
- return NS_ERROR_FAILURE;
- }
-
- // Async IPC, we don't have access to a return value.
- return NS_OK;
-}
-
-nsresult
-GMPAudioDecoderParent::Reset()
-{
- LOGD(("GMPAudioDecoderParent[%p]::Reset()", this));
-
- if (!mIsOpen) {
- NS_WARNING("Trying to use a dead GMP Audio decoder!");
- return NS_ERROR_FAILURE;
- }
-
- MOZ_ASSERT(mPlugin->GMPThread() == NS_GetCurrentThread());
-
- if (!SendReset()) {
- return NS_ERROR_FAILURE;
- }
-
- mIsAwaitingResetComplete = true;
-
- // Async IPC, we don't have access to a return value.
- return NS_OK;
-}
-
-nsresult
-GMPAudioDecoderParent::Drain()
-{
- LOGD(("GMPAudioDecoderParent[%p]::Drain()", this));
-
- if (!mIsOpen) {
- NS_WARNING("Trying to use a dead GMP Audio decoder!");
- return NS_ERROR_FAILURE;
- }
-
- MOZ_ASSERT(mPlugin->GMPThread() == NS_GetCurrentThread());
-
- if (!SendDrain()) {
- return NS_ERROR_FAILURE;
- }
-
- mIsAwaitingDrainComplete = true;
-
- // Async IPC, we don't have access to a return value.
- return NS_OK;
-}
-
-// Note: Consider keeping ActorDestroy sync'd up when making changes here.
-nsresult
-GMPAudioDecoderParent::Close()
-{
- LOGD(("GMPAudioDecoderParent[%p]::Close()", this));
- MOZ_ASSERT(!mPlugin || mPlugin->GMPThread() == NS_GetCurrentThread());
-
- // Ensure if we've received a Close while waiting for a ResetComplete
- // or DrainComplete notification, we'll unblock the caller before processing
- // the close. This seems unlikely to happen, but better to be careful.
- UnblockResetAndDrain();
-
- // Consumer is done with us; we can shut down. No more callbacks should
- // be made to mCallback. Note: do this before Shutdown()!
- mCallback = nullptr;
- // Let Shutdown mark us as dead so it knows if we had been alive
-
- // In case this is the last reference
- RefPtr<GMPAudioDecoderParent> kungfudeathgrip(this);
- Release();
- Shutdown();
-
- return NS_OK;
-}
-
-// Note: Consider keeping ActorDestroy sync'd up when making changes here.
-nsresult
-GMPAudioDecoderParent::Shutdown()
-{
- LOGD(("GMPAudioDecoderParent[%p]::Shutdown()", this));
- MOZ_ASSERT(!mPlugin || mPlugin->GMPThread() == NS_GetCurrentThread());
-
- if (mShuttingDown) {
- return NS_OK;
- }
- mShuttingDown = true;
-
- // Ensure if we've received a shutdown while waiting for a ResetComplete
- // or DrainComplete notification, we'll unblock the caller before processing
- // the shutdown.
- UnblockResetAndDrain();
-
- // Notify client we're gone! Won't occur after Close()
- if (mCallback) {
- mCallback->Terminated();
- mCallback = nullptr;
- }
-
- mIsOpen = false;
- if (!mActorDestroyed) {
- Unused << SendDecodingComplete();
- }
-
- return NS_OK;
-}
-
-// Note: Keep this sync'd up with DecodingComplete
-void
-GMPAudioDecoderParent::ActorDestroy(ActorDestroyReason aWhy)
-{
- LOGD(("GMPAudioDecoderParent[%p]::ActorDestroy(reason=%d)", this, aWhy));
-
- mIsOpen = false;
- mActorDestroyed = true;
-
- // Ensure if we've received a destroy while waiting for a ResetComplete
- // or DrainComplete notification, we'll unblock the caller before processing
- // the error.
- UnblockResetAndDrain();
-
- if (mCallback) {
- // May call Close() (and Shutdown()) immediately or with a delay
- mCallback->Terminated();
- mCallback = nullptr;
- }
- if (mPlugin) {
- // Ignore any return code. It is OK for this to fail without killing the process.
- mPlugin->AudioDecoderDestroyed(this);
- mPlugin = nullptr;
- }
- MaybeDisconnect(aWhy == AbnormalShutdown);
-}
-
-mozilla::ipc::IPCResult
-GMPAudioDecoderParent::RecvDecoded(const GMPAudioDecodedSampleData& aDecoded)
-{
- LOGV(("GMPAudioDecoderParent[%p]::RecvDecoded() timestamp=%lld",
- this, aDecoded.mTimeStamp()));
-
- if (!mCallback) {
- return IPC_FAIL_NO_REASON(this);
- }
-
- mCallback->Decoded(aDecoded.mData(),
- aDecoded.mTimeStamp(),
- aDecoded.mChannelCount(),
- aDecoded.mSamplesPerSecond());
-
- return IPC_OK();
-}
-
-mozilla::ipc::IPCResult
-GMPAudioDecoderParent::RecvInputDataExhausted()
-{
- LOGV(("GMPAudioDecoderParent[%p]::RecvInputDataExhausted()", this));
-
- if (!mCallback) {
- return IPC_FAIL_NO_REASON(this);
- }
-
- // Ignore any return code. It is OK for this to fail without killing the process.
- mCallback->InputDataExhausted();
-
- return IPC_OK();
-}
-
-mozilla::ipc::IPCResult
-GMPAudioDecoderParent::RecvDrainComplete()
-{
- LOGD(("GMPAudioDecoderParent[%p]::RecvDrainComplete()", this));
-
- if (!mCallback) {
- return IPC_FAIL_NO_REASON(this);
- }
-
- if (!mIsAwaitingDrainComplete) {
- return IPC_OK();
- }
- mIsAwaitingDrainComplete = false;
-
- // Ignore any return code. It is OK for this to fail without killing the process.
- mCallback->DrainComplete();
-
- return IPC_OK();
-}
-
-mozilla::ipc::IPCResult
-GMPAudioDecoderParent::RecvResetComplete()
-{
- LOGD(("GMPAudioDecoderParent[%p]::RecvResetComplete()", this));
-
- if (!mCallback) {
- return IPC_FAIL_NO_REASON(this);
- }
-
- if (!mIsAwaitingResetComplete) {
- return IPC_OK();
- }
- mIsAwaitingResetComplete = false;
-
- // Ignore any return code. It is OK for this to fail without killing the process.
- mCallback->ResetComplete();
-
- return IPC_OK();
-}
-
-mozilla::ipc::IPCResult
-GMPAudioDecoderParent::RecvError(const GMPErr& aError)
-{
- LOGD(("GMPAudioDecoderParent[%p]::RecvError(error=%d)", this, aError));
-
- if (!mCallback) {
- return IPC_FAIL_NO_REASON(this);
- }
-
- // Ensure if we've received an error while waiting for a ResetComplete
- // or DrainComplete notification, we'll unblock the caller before processing
- // the error.
- UnblockResetAndDrain();
-
- // Ignore any return code. It is OK for this to fail without killing the process.
- mCallback->Error(aError);
-
- return IPC_OK();
-}
-
-mozilla::ipc::IPCResult
-GMPAudioDecoderParent::RecvShutdown()
-{
- LOGD(("GMPAudioDecoderParent[%p]::RecvShutdown()", this));
-
- Shutdown();
- return IPC_OK();
-}
-
-mozilla::ipc::IPCResult
-GMPAudioDecoderParent::Recv__delete__()
-{
- LOGD(("GMPAudioDecoderParent[%p]::Recv__delete__()", this));
-
- if (mPlugin) {
- // Ignore any return code. It is OK for this to fail without killing the process.
- mPlugin->AudioDecoderDestroyed(this);
- mPlugin = nullptr;
- }
-
- return IPC_OK();
-}
-
-void
-GMPAudioDecoderParent::UnblockResetAndDrain()
-{
- LOGD(("GMPAudioDecoderParent[%p]::UnblockResetAndDrain()", this));
-
- if (!mCallback) {
- MOZ_ASSERT(!mIsAwaitingResetComplete);
- MOZ_ASSERT(!mIsAwaitingDrainComplete);
- return;
- }
- if (mIsAwaitingResetComplete) {
- mIsAwaitingResetComplete = false;
- mCallback->ResetComplete();
- }
- if (mIsAwaitingDrainComplete) {
- mIsAwaitingDrainComplete = false;
- mCallback->DrainComplete();
- }
-}
-
-} // namespace gmp
-} // namespace mozilla
deleted file mode 100644
--- a/dom/media/gmp/GMPAudioDecoderParent.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/* -*- 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/. */
-
-#ifndef GMPAudioDecoderParent_h_
-#define GMPAudioDecoderParent_h_
-
-#include "mozilla/RefPtr.h"
-#include "gmp-audio-decode.h"
-#include "gmp-audio-codec.h"
-#include "mozilla/gmp/PGMPAudioDecoderParent.h"
-#include "GMPMessageUtils.h"
-#include "GMPAudioDecoderProxy.h"
-#include "GMPCrashHelperHolder.h"
-
-namespace mozilla {
-namespace gmp {
-
-class GMPContentParent;
-
-class GMPAudioDecoderParent final : public GMPAudioDecoderProxy
- , public PGMPAudioDecoderParent
- , public GMPCrashHelperHolder
-{
-public:
- NS_INLINE_DECL_REFCOUNTING(GMPAudioDecoderParent)
-
- explicit GMPAudioDecoderParent(GMPContentParent *aPlugin);
-
- nsresult Shutdown();
-
- // GMPAudioDecoderProxy
- nsresult InitDecode(GMPAudioCodecType aCodecType,
- uint32_t aChannelCount,
- uint32_t aBitsPerChannel,
- uint32_t aSamplesPerSecond,
- nsTArray<uint8_t>& aExtraData,
- GMPAudioDecoderCallbackProxy* aCallback) override;
- nsresult Decode(GMPAudioSamplesImpl& aInput) override;
- nsresult Reset() override;
- nsresult Drain() override;
- nsresult Close() override;
-
-private:
- ~GMPAudioDecoderParent();
-
- // PGMPAudioDecoderParent
- void ActorDestroy(ActorDestroyReason aWhy) override;
- mozilla::ipc::IPCResult RecvDecoded(const GMPAudioDecodedSampleData& aDecoded) override;
- mozilla::ipc::IPCResult RecvInputDataExhausted() override;
- mozilla::ipc::IPCResult RecvDrainComplete() override;
- mozilla::ipc::IPCResult RecvResetComplete() override;
- mozilla::ipc::IPCResult RecvError(const GMPErr& aError) override;
- mozilla::ipc::IPCResult RecvShutdown() override;
- mozilla::ipc::IPCResult Recv__delete__() override;
-
- void UnblockResetAndDrain();
-
- bool mIsOpen;
- bool mShuttingDown;
- bool mActorDestroyed;
- bool mIsAwaitingResetComplete;
- bool mIsAwaitingDrainComplete;
- RefPtr<GMPContentParent> mPlugin;
- GMPAudioDecoderCallbackProxy* mCallback;
-};
-
-} // namespace gmp
-} // namespace mozilla
-
-#endif // GMPAudioDecoderParent_h_
deleted file mode 100644
--- a/dom/media/gmp/GMPAudioDecoderProxy.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/* -*- 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/. */
-
-#ifndef GMPAudioDecoderProxy_h_
-#define GMPAudioDecoderProxy_h_
-
-#include "GMPCallbackBase.h"
-#include "gmp-audio-codec.h"
-#include "GMPAudioHost.h"
-#include "nsTArray.h"
-#include "mozilla/gmp/GMPTypes.h"
-
-class GMPAudioDecoderCallbackProxy : public GMPCallbackBase {
-public:
- virtual ~GMPAudioDecoderCallbackProxy() {}
- // Note: aChannelCount and aSamplesPerSecond may not be consistent from
- // one invocation to the next.
- virtual void Decoded(const nsTArray<int16_t>& aPCM,
- uint64_t aTimeStamp,
- uint32_t aChannelCount,
- uint32_t aSamplesPerSecond) = 0;
- virtual void InputDataExhausted() = 0;
- virtual void DrainComplete() = 0;
- virtual void ResetComplete() = 0;
- virtual void Error(GMPErr aError) = 0;
-};
-
-class GMPAudioDecoderProxy {
-public:
- virtual ~GMPAudioDecoderProxy() {}
-
- virtual nsresult InitDecode(GMPAudioCodecType aCodecType,
- uint32_t aChannelCount,
- uint32_t aBitsPerChannel,
- uint32_t aSamplesPerSecond,
- nsTArray<uint8_t>& aExtraData,
- GMPAudioDecoderCallbackProxy* aCallback) = 0;
- virtual nsresult Decode(mozilla::gmp::GMPAudioSamplesImpl& aSamples) = 0;
- virtual nsresult Reset() = 0;
- virtual nsresult Drain() = 0;
- // Call to tell GMP/plugin the consumer will no longer use this
- // interface/codec.
- virtual nsresult Close() = 0;
-};
-
-#endif // GMPAudioDecoderProxy_h_
deleted file mode 100644
--- a/dom/media/gmp/GMPAudioHost.cpp
+++ /dev/null
@@ -1,162 +0,0 @@
-/* -*- 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 "GMPAudioHost.h"
-#include "gmp-audio-samples.h"
-#include "gmp-errors.h"
-#include "GMPEncryptedBufferDataImpl.h"
-#include "MediaData.h"
-
-namespace mozilla {
-namespace gmp {
-
-GMPAudioSamplesImpl::GMPAudioSamplesImpl(GMPAudioFormat aFormat)
- : mFormat(aFormat)
- , mTimeStamp(0)
- , mChannels(0)
- , mRate(0)
-{
-}
-
-GMPAudioSamplesImpl::GMPAudioSamplesImpl(const GMPAudioEncodedSampleData& aData)
- : mFormat(kGMPAudioEncodedSamples)
- , mBuffer(aData.mData())
- , mTimeStamp(aData.mTimeStamp())
- , mChannels(aData.mChannelCount())
- , mRate(aData.mSamplesPerSecond())
-{
- if (aData.mDecryptionData().mKeyId().Length() > 0) {
- mCrypto = new GMPEncryptedBufferDataImpl(aData.mDecryptionData());
- }
-}
-
-GMPAudioSamplesImpl::GMPAudioSamplesImpl(MediaRawData* aSample,
- uint32_t aChannels,
- uint32_t aRate)
- : mFormat(kGMPAudioEncodedSamples)
- , mTimeStamp(aSample->mTime)
- , mChannels(aChannels)
- , mRate(aRate)
-{
- mBuffer.AppendElements(aSample->Data(), aSample->Size());
- if (aSample->mCrypto.mValid) {
- mCrypto = new GMPEncryptedBufferDataImpl(aSample->mCrypto);
- }
-}
-
-GMPAudioSamplesImpl::~GMPAudioSamplesImpl()
-{
-}
-
-GMPAudioFormat
-GMPAudioSamplesImpl::GetFormat()
-{
- return mFormat;
-}
-
-void
-GMPAudioSamplesImpl::Destroy()
-{
- delete this;
-}
-
-GMPErr
-GMPAudioSamplesImpl::SetBufferSize(uint32_t aSize)
-{
- mBuffer.SetLength(aSize);
- return GMPNoErr;
-}
-
-uint32_t
-GMPAudioSamplesImpl::Size()
-{
- return mBuffer.Length();
-}
-
-void
-GMPAudioSamplesImpl::SetTimeStamp(uint64_t aTimeStamp)
-{
- mTimeStamp = aTimeStamp;
-}
-
-uint64_t
-GMPAudioSamplesImpl::TimeStamp()
-{
- return mTimeStamp;
-}
-
-const uint8_t*
-GMPAudioSamplesImpl::Buffer() const
-{
- return mBuffer.Elements();
-}
-
-uint8_t*
-GMPAudioSamplesImpl::Buffer()
-{
- return mBuffer.Elements();
-}
-
-const GMPEncryptedBufferMetadata*
-GMPAudioSamplesImpl::GetDecryptionData() const
-{
- return mCrypto;
-}
-
-void
-GMPAudioSamplesImpl::InitCrypto(const CryptoSample& aCrypto)
-{
- if (!aCrypto.mValid) {
- return;
- }
- mCrypto = new GMPEncryptedBufferDataImpl(aCrypto);
-}
-
-void
-GMPAudioSamplesImpl::RelinquishData(GMPAudioEncodedSampleData& aData)
-{
- aData.mData() = Move(mBuffer);
- aData.mTimeStamp() = TimeStamp();
- if (mCrypto) {
- mCrypto->RelinquishData(aData.mDecryptionData());
- }
-}
-
-uint32_t
-GMPAudioSamplesImpl::Channels() const
-{
- return mChannels;
-}
-
-void
-GMPAudioSamplesImpl::SetChannels(uint32_t aChannels)
-{
- mChannels = aChannels;
-}
-
-uint32_t
-GMPAudioSamplesImpl::Rate() const
-{
- return mRate;
-}
-
-void
-GMPAudioSamplesImpl::SetRate(uint32_t aRate)
-{
- mRate = aRate;
-}
-
-
-GMPErr
-GMPAudioHostImpl::CreateSamples(GMPAudioFormat aFormat,
- GMPAudioSamples** aSamples)
-{
-
- *aSamples = new GMPAudioSamplesImpl(aFormat);
- return GMPNoErr;
-}
-
-} // namespace gmp
-} // namespace mozilla
deleted file mode 100644
--- a/dom/media/gmp/GMPAudioHost.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/* -*- 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/. */
-
-#ifndef GMPAudioHost_h_
-#define GMPAudioHost_h_
-
-#include "gmp-audio-host.h"
-#include "gmp-audio-samples.h"
-#include "nsTArray.h"
-#include "gmp-decryption.h"
-#include "nsAutoPtr.h"
-#include "GMPEncryptedBufferDataImpl.h"
-#include "mozilla/gmp/GMPTypes.h"
-
-namespace mozilla {
-class CryptoSample;
-class MediaRawData;
-
-namespace gmp {
-
-class GMPAudioSamplesImpl : public GMPAudioSamples {
-public:
- explicit GMPAudioSamplesImpl(GMPAudioFormat aFormat);
- explicit GMPAudioSamplesImpl(const GMPAudioEncodedSampleData& aData);
- GMPAudioSamplesImpl(MediaRawData* aSample,
- uint32_t aChannels,
- uint32_t aRate);
- virtual ~GMPAudioSamplesImpl();
-
- GMPAudioFormat GetFormat() override;
- void Destroy() override;
- GMPErr SetBufferSize(uint32_t aSize) override;
- uint32_t Size() override;
- void SetTimeStamp(uint64_t aTimeStamp) override;
- uint64_t TimeStamp() override;
- const uint8_t* Buffer() const override;
- uint8_t* Buffer() override;
- const GMPEncryptedBufferMetadata* GetDecryptionData() const override;
-
- void InitCrypto(const CryptoSample& aCrypto);
-
- void RelinquishData(GMPAudioEncodedSampleData& aData);
-
- uint32_t Channels() const override;
- void SetChannels(uint32_t aChannels) override;
- uint32_t Rate() const override;
- void SetRate(uint32_t aRate) override;
-
-private:
- GMPAudioFormat mFormat;
- nsTArray<uint8_t> mBuffer;
- int64_t mTimeStamp;
- nsAutoPtr<GMPEncryptedBufferDataImpl> mCrypto;
- uint32_t mChannels;
- uint32_t mRate;
-};
-
-class GMPAudioHostImpl : public GMPAudioHost
-{
-public:
- GMPErr CreateSamples(GMPAudioFormat aFormat,
- GMPAudioSamples** aSamples) override;
-private:
-};
-
-} // namespace gmp
-} // namespace mozilla
-
-#endif // GMPAudioHost_h_
--- a/dom/media/gmp/GMPChild.cpp
+++ b/dom/media/gmp/GMPChild.cpp
@@ -4,17 +4,16 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "GMPChild.h"
#include "GMPContentChild.h"
#include "GMPProcessChild.h"
#include "GMPLoader.h"
#include "GMPVideoDecoderChild.h"
#include "GMPVideoEncoderChild.h"
-#include "GMPAudioDecoderChild.h"
#include "GMPDecryptorChild.h"
#include "GMPVideoHost.h"
#include "nsDebugImpl.h"
#include "nsIFile.h"
#include "nsXULAppAPI.h"
#include "gmp-video-decode.h"
#include "gmp-video-encode.h"
#include "GMPPlatform.h"
--- a/dom/media/gmp/GMPContentChild.cpp
+++ b/dom/media/gmp/GMPContentChild.cpp
@@ -1,16 +1,15 @@
/* -*- 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 "GMPContentChild.h"
#include "GMPChild.h"
-#include "GMPAudioDecoderChild.h"
#include "GMPDecryptorChild.h"
#include "GMPVideoDecoderChild.h"
#include "GMPVideoEncoderChild.h"
#include "base/task.h"
namespace mozilla {
namespace gmp {
@@ -44,29 +43,16 @@ GMPContentChild::ActorDestroy(ActorDestr
}
void
GMPContentChild::ProcessingError(Result aCode, const char* aReason)
{
mGMPChild->ProcessingError(aCode, aReason);
}
-PGMPAudioDecoderChild*
-GMPContentChild::AllocPGMPAudioDecoderChild()
-{
- return new GMPAudioDecoderChild(this);
-}
-
-bool
-GMPContentChild::DeallocPGMPAudioDecoderChild(PGMPAudioDecoderChild* aActor)
-{
- delete aActor;
- return true;
-}
-
PGMPDecryptorChild*
GMPContentChild::AllocPGMPDecryptorChild()
{
GMPDecryptorChild* actor = new GMPDecryptorChild(this,
mGMPChild->mPluginVoucher,
mGMPChild->mSandboxVoucher);
actor->AddRef();
return actor;
@@ -223,32 +209,16 @@ GMPContentChild::RecvPGMPDecryptorConstr
}
child->Init(decryptor);
return IPC_OK();
}
mozilla::ipc::IPCResult
-GMPContentChild::RecvPGMPAudioDecoderConstructor(PGMPAudioDecoderChild* aActor)
-{
- auto vdc = static_cast<GMPAudioDecoderChild*>(aActor);
-
- void* vd = nullptr;
- GMPErr err = mGMPChild->GetAPI(GMP_API_AUDIO_DECODER, &vdc->Host(), &vd);
- if (err != GMPNoErr || !vd) {
- return IPC_FAIL_NO_REASON(this);
- }
-
- vdc->Init(static_cast<GMPAudioDecoder*>(vd));
-
- return IPC_OK();
-}
-
-mozilla::ipc::IPCResult
GMPContentChild::RecvPGMPVideoDecoderConstructor(PGMPVideoDecoderChild* aActor,
const uint32_t& aDecryptorId)
{
auto vdc = static_cast<GMPVideoDecoderChild*>(aActor);
void* vd = nullptr;
GMPErr err = mGMPChild->GetAPI(GMP_API_VIDEO_DECODER, &vdc->Host(), &vd, aDecryptorId);
if (err != GMPNoErr || !vd) {
@@ -277,22 +247,16 @@ GMPContentChild::RecvPGMPVideoEncoderCon
return IPC_OK();
}
void
GMPContentChild::CloseActive()
{
// Invalidate and remove any remaining API objects.
- const ManagedContainer<PGMPAudioDecoderChild>& audioDecoders =
- ManagedPGMPAudioDecoderChild();
- for (auto iter = audioDecoders.ConstIter(); !iter.Done(); iter.Next()) {
- iter.Get()->GetKey()->SendShutdown();
- }
-
const ManagedContainer<PGMPDecryptorChild>& decryptors =
ManagedPGMPDecryptorChild();
for (auto iter = decryptors.ConstIter(); !iter.Done(); iter.Next()) {
iter.Get()->GetKey()->SendShutdown();
}
const ManagedContainer<PGMPVideoDecoderChild>& videoDecoders =
ManagedPGMPVideoDecoderChild();
@@ -305,16 +269,15 @@ GMPContentChild::CloseActive()
for (auto iter = videoEncoders.ConstIter(); !iter.Done(); iter.Next()) {
iter.Get()->GetKey()->SendShutdown();
}
}
bool
GMPContentChild::IsUsed()
{
- return !ManagedPGMPAudioDecoderChild().IsEmpty() ||
- !ManagedPGMPDecryptorChild().IsEmpty() ||
+ return !ManagedPGMPDecryptorChild().IsEmpty() ||
!ManagedPGMPVideoDecoderChild().IsEmpty() ||
!ManagedPGMPVideoEncoderChild().IsEmpty();
}
} // namespace gmp
} // namespace mozilla
--- a/dom/media/gmp/GMPContentChild.h
+++ b/dom/media/gmp/GMPContentChild.h
@@ -18,24 +18,20 @@ class GMPContentChild : public PGMPConte
, public GMPSharedMem
{
public:
explicit GMPContentChild(GMPChild* aChild);
virtual ~GMPContentChild();
MessageLoop* GMPMessageLoop();
- mozilla::ipc::IPCResult RecvPGMPAudioDecoderConstructor(PGMPAudioDecoderChild* aActor) override;
mozilla::ipc::IPCResult RecvPGMPDecryptorConstructor(PGMPDecryptorChild* aActor) override;
mozilla::ipc::IPCResult RecvPGMPVideoDecoderConstructor(PGMPVideoDecoderChild* aActor, const uint32_t& aDecryptorId) override;
mozilla::ipc::IPCResult RecvPGMPVideoEncoderConstructor(PGMPVideoEncoderChild* aActor) override;
- PGMPAudioDecoderChild* AllocPGMPAudioDecoderChild() override;
- bool DeallocPGMPAudioDecoderChild(PGMPAudioDecoderChild* aActor) override;
-
PGMPDecryptorChild* AllocPGMPDecryptorChild() override;
bool DeallocPGMPDecryptorChild(PGMPDecryptorChild* aActor) override;
PGMPVideoDecoderChild* AllocPGMPVideoDecoderChild(const uint32_t& aDecryptorId) override;
bool DeallocPGMPVideoDecoderChild(PGMPVideoDecoderChild* aActor) override;
PGMPVideoEncoderChild* AllocPGMPVideoEncoderChild() override;
bool DeallocPGMPVideoEncoderChild(PGMPVideoEncoderChild* aActor) override;
--- a/dom/media/gmp/GMPContentParent.cpp
+++ b/dom/media/gmp/GMPContentParent.cpp
@@ -1,15 +1,14 @@
/* -*- 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 "GMPContentParent.h"
-#include "GMPAudioDecoderParent.h"
#include "GMPDecryptorParent.h"
#include "GMPParent.h"
#include "GMPServiceChild.h"
#include "GMPVideoDecoderParent.h"
#include "GMPVideoEncoderParent.h"
#include "mozIGeckoMediaPluginService.h"
#include "mozilla/Logging.h"
#include "mozilla/Unused.h"
@@ -61,39 +60,29 @@ public:
private:
RefPtr<GMPContentParent> mToRelease;
};
void
GMPContentParent::ActorDestroy(ActorDestroyReason aWhy)
{
- MOZ_ASSERT(mAudioDecoders.IsEmpty() &&
- mDecryptors.IsEmpty() &&
+ MOZ_ASSERT(mDecryptors.IsEmpty() &&
mVideoDecoders.IsEmpty() &&
mVideoEncoders.IsEmpty());
NS_DispatchToCurrentThread(new ReleaseGMPContentParent(this));
}
void
GMPContentParent::CheckThread()
{
MOZ_ASSERT(mGMPThread == NS_GetCurrentThread());
}
void
-GMPContentParent::AudioDecoderDestroyed(GMPAudioDecoderParent* aDecoder)
-{
- MOZ_ASSERT(GMPThread() == NS_GetCurrentThread());
-
- MOZ_ALWAYS_TRUE(mAudioDecoders.RemoveElement(aDecoder));
- CloseIfUnused();
-}
-
-void
GMPContentParent::VideoDecoderDestroyed(GMPVideoDecoderParent* aDecoder)
{
MOZ_ASSERT(GMPThread() == NS_GetCurrentThread());
// If the constructor fails, we'll get called before it's added
Unused << NS_WARN_IF(!mVideoDecoders.RemoveElement(aDecoder));
CloseIfUnused();
}
@@ -130,18 +119,17 @@ GMPContentParent::RemoveCloseBlocker()
MOZ_ASSERT(GMPThread() == NS_GetCurrentThread());
--mCloseBlockerCount;
CloseIfUnused();
}
void
GMPContentParent::CloseIfUnused()
{
- if (mAudioDecoders.IsEmpty() &&
- mDecryptors.IsEmpty() &&
+ if (mDecryptors.IsEmpty() &&
mVideoDecoders.IsEmpty() &&
mVideoEncoders.IsEmpty() &&
mCloseBlockerCount == 0) {
RefPtr<GMPContentParent> toClose;
if (mParent) {
toClose = mParent->ForgetGMPContentParent();
} else {
toClose = this;
@@ -188,33 +176,16 @@ GMPContentParent::GMPThread()
mps->GetThread(getter_AddRefs(mGMPThread));
MOZ_ASSERT(mGMPThread);
}
return mGMPThread;
}
nsresult
-GMPContentParent::GetGMPAudioDecoder(GMPAudioDecoderParent** aGMPAD)
-{
- PGMPAudioDecoderParent* pvap = SendPGMPAudioDecoderConstructor();
- if (!pvap) {
- return NS_ERROR_FAILURE;
- }
- GMPAudioDecoderParent* vap = static_cast<GMPAudioDecoderParent*>(pvap);
- // This addref corresponds to the Proxy pointer the consumer is returned.
- // It's dropped by calling Close() on the interface.
- NS_ADDREF(vap);
- *aGMPAD = vap;
- mAudioDecoders.AppendElement(vap);
-
- return NS_OK;
-}
-
-nsresult
GMPContentParent::GetGMPVideoDecoder(GMPVideoDecoderParent** aGMPVD,
uint32_t aDecryptorId)
{
// returned with one anonymous AddRef that locks it until Destroy
PGMPVideoDecoderParent* pvdp = SendPGMPVideoDecoderConstructor(aDecryptorId);
if (!pvdp) {
return NS_ERROR_FAILURE;
}
@@ -289,26 +260,10 @@ GMPContentParent::AllocPGMPDecryptorPare
bool
GMPContentParent::DeallocPGMPDecryptorParent(PGMPDecryptorParent* aActor)
{
GMPDecryptorParent* ksp = static_cast<GMPDecryptorParent*>(aActor);
NS_RELEASE(ksp);
return true;
}
-PGMPAudioDecoderParent*
-GMPContentParent::AllocPGMPAudioDecoderParent()
-{
- GMPAudioDecoderParent* vdp = new GMPAudioDecoderParent(this);
- NS_ADDREF(vdp);
- return vdp;
-}
-
-bool
-GMPContentParent::DeallocPGMPAudioDecoderParent(PGMPAudioDecoderParent* aActor)
-{
- GMPAudioDecoderParent* vdp = static_cast<GMPAudioDecoderParent*>(aActor);
- NS_RELEASE(vdp);
- return true;
-}
-
} // namespace gmp
} // namespace mozilla
--- a/dom/media/gmp/GMPContentParent.h
+++ b/dom/media/gmp/GMPContentParent.h
@@ -8,17 +8,16 @@
#include "mozilla/gmp/PGMPContentParent.h"
#include "GMPSharedMemManager.h"
#include "nsISupportsImpl.h"
namespace mozilla {
namespace gmp {
-class GMPAudioDecoderParent;
class GMPDecryptorParent;
class GMPParent;
class GMPVideoDecoderParent;
class GMPVideoEncoderParent;
class GMPContentParent final : public PGMPContentParent,
public GMPSharedMem
{
@@ -32,19 +31,16 @@ public:
void VideoDecoderDestroyed(GMPVideoDecoderParent* aDecoder);
nsresult GetGMPVideoEncoder(GMPVideoEncoderParent** aGMPVE);
void VideoEncoderDestroyed(GMPVideoEncoderParent* aEncoder);
nsresult GetGMPDecryptor(GMPDecryptorParent** aGMPKS);
void DecryptorDestroyed(GMPDecryptorParent* aSession);
- nsresult GetGMPAudioDecoder(GMPAudioDecoderParent** aGMPAD);
- void AudioDecoderDestroyed(GMPAudioDecoderParent* aDecoder);
-
nsIThread* GMPThread();
// GMPSharedMem
void CheckThread() override;
void SetDisplayName(const nsCString& aDisplayName)
{
mDisplayName = aDisplayName;
@@ -91,31 +87,27 @@ private:
bool DeallocPGMPVideoDecoderParent(PGMPVideoDecoderParent* aActor) override;
PGMPVideoEncoderParent* AllocPGMPVideoEncoderParent() override;
bool DeallocPGMPVideoEncoderParent(PGMPVideoEncoderParent* aActor) override;
PGMPDecryptorParent* AllocPGMPDecryptorParent() override;
bool DeallocPGMPDecryptorParent(PGMPDecryptorParent* aActor) override;
- PGMPAudioDecoderParent* AllocPGMPAudioDecoderParent() override;
- bool DeallocPGMPAudioDecoderParent(PGMPAudioDecoderParent* aActor) override;
-
void CloseIfUnused();
// Needed because NewRunnableMethod tried to use the class that the method
// lives on to store the receiver, but PGMPContentParent isn't refcounted.
void Close()
{
PGMPContentParent::Close();
}
nsTArray<RefPtr<GMPVideoDecoderParent>> mVideoDecoders;
nsTArray<RefPtr<GMPVideoEncoderParent>> mVideoEncoders;
nsTArray<RefPtr<GMPDecryptorParent>> mDecryptors;
- nsTArray<RefPtr<GMPAudioDecoderParent>> mAudioDecoders;
nsCOMPtr<nsIThread> mGMPThread;
RefPtr<GMPParent> mParent;
nsCString mDisplayName;
uint32_t mPluginId;
uint32_t mCloseBlockerCount = 0;
};
} // namespace gmp
--- a/dom/media/gmp/GMPMessageUtils.h
+++ b/dom/media/gmp/GMPMessageUtils.h
@@ -3,17 +3,16 @@
* 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/. */
#ifndef GMPMessageUtils_h_
#define GMPMessageUtils_h_
#include "gmp-video-codec.h"
#include "gmp-video-frame-encoded.h"
-#include "gmp-audio-codec.h"
#include "gmp-decryption.h"
namespace IPC {
template <>
struct ParamTraits<GMPErr>
: public ContiguousEnumSerializer<GMPErr,
GMPNoErr,
@@ -71,23 +70,16 @@ struct ParamTraits<GMPMediaKeyStatus>
template <>
struct ParamTraits<GMPSessionType>
: public ContiguousEnumSerializer<GMPSessionType,
kGMPTemporySession,
kGMPSessionInvalid>
{};
template <>
-struct ParamTraits<GMPAudioCodecType>
-: public ContiguousEnumSerializer<GMPAudioCodecType,
- kGMPAudioCodecAAC,
- kGMPAudioCodecInvalid>
-{};
-
-template <>
struct ParamTraits<GMPVideoCodecComplexity>
: public ContiguousEnumSerializer<GMPVideoCodecComplexity,
kGMPComplexityNormal,
kGMPComplexityInvalid>
{};
template <>
struct ParamTraits<GMPVP8ResilienceMode>
--- a/dom/media/gmp/GMPParent.h
+++ b/dom/media/gmp/GMPParent.h
@@ -3,17 +3,16 @@
* 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/. */
#ifndef GMPParent_h_
#define GMPParent_h_
#include "GMPProcessParent.h"
#include "GMPServiceParent.h"
-#include "GMPAudioDecoderParent.h"
#include "GMPDecryptorParent.h"
#include "GMPVideoDecoderParent.h"
#include "GMPVideoEncoderParent.h"
#include "GMPTimerParent.h"
#include "GMPStorageParent.h"
#include "mozilla/gmp/PGMPParent.h"
#include "nsCOMPtr.h"
#include "nscore.h"
--- a/dom/media/gmp/GMPService.cpp
+++ b/dom/media/gmp/GMPService.cpp
@@ -17,17 +17,16 @@
#include "mozilla/SyncRunnable.h"
#include "nsXPCOMPrivate.h"
#include "mozilla/Services.h"
#include "nsNativeCharsetUtils.h"
#include "nsIXULAppInfo.h"
#include "nsIConsoleService.h"
#include "mozilla/Unused.h"
#include "GMPDecryptorParent.h"
-#include "GMPAudioDecoderParent.h"
#include "nsComponentManagerUtils.h"
#include "runnable_utils.h"
#include "VideoUtils.h"
#if defined(XP_LINUX) && defined(MOZ_GMP_SANDBOX)
#include "mozilla/SandboxInfo.h"
#endif
#include "nsAppDirectoryServiceDefs.h"
#include "nsDirectoryServiceUtils.h"
@@ -303,52 +302,16 @@ GeckoMediaPluginService::GetThread(nsITh
RefPtr<AbstractThread>
GeckoMediaPluginService::GetAbstractGMPThread()
{
MutexAutoLock lock(mMutex);
return mAbstractGMPThread;
}
NS_IMETHODIMP
-GeckoMediaPluginService::GetGMPAudioDecoder(GMPCrashHelper* aHelper,
- nsTArray<nsCString>* aTags,
- const nsACString& aNodeId,
- UniquePtr<GetGMPAudioDecoderCallback>&& aCallback)
-{
- MOZ_ASSERT(NS_GetCurrentThread() == mGMPThread);
- NS_ENSURE_ARG(aTags && aTags->Length() > 0);
- NS_ENSURE_ARG(aCallback);
-
- if (mShuttingDownOnGMPThread) {
- return NS_ERROR_FAILURE;
- }
-
- GetGMPAudioDecoderCallback* rawCallback = aCallback.release();
- RefPtr<AbstractThread> thread(GetAbstractGMPThread());
- RefPtr<GMPCrashHelper> helper(aHelper);
- GetContentParent(aHelper, aNodeId, NS_LITERAL_CSTRING(GMP_API_AUDIO_DECODER), *aTags)
- ->Then(thread, __func__,
- [rawCallback, helper](RefPtr<GMPContentParent::CloseBlocker> wrapper) {
- RefPtr<GMPContentParent> parent = wrapper->mParent;
- UniquePtr<GetGMPAudioDecoderCallback> callback(rawCallback);
- GMPAudioDecoderParent* actor = nullptr;
- if (parent && NS_SUCCEEDED(parent->GetGMPAudioDecoder(&actor))) {
- actor->SetCrashHelper(helper);
- }
- callback->Done(actor);
- },
- [rawCallback] {
- UniquePtr<GetGMPAudioDecoderCallback> callback(rawCallback);
- callback->Done(nullptr);
- });
-
- return NS_OK;
-}
-
-NS_IMETHODIMP
GeckoMediaPluginService::GetDecryptingGMPVideoDecoder(GMPCrashHelper* aHelper,
nsTArray<nsCString>* aTags,
const nsACString& aNodeId,
UniquePtr<GetGMPVideoDecoderCallback>&& aCallback,
uint32_t aDecryptorId)
{
MOZ_ASSERT(NS_GetCurrentThread() == mGMPThread);
NS_ENSURE_ARG(aTags && aTags->Length() > 0);
--- a/dom/media/gmp/GMPService.h
+++ b/dom/media/gmp/GMPService.h
@@ -54,21 +54,16 @@ public:
UniquePtr<GetGMPVideoDecoderCallback>&& aCallback,
uint32_t aDecryptorId)
override;
NS_IMETHOD GetGMPVideoEncoder(GMPCrashHelper* aHelper,
nsTArray<nsCString>* aTags,
const nsACString& aNodeId,
UniquePtr<GetGMPVideoEncoderCallback>&& aCallback)
override;
- NS_IMETHOD GetGMPAudioDecoder(GMPCrashHelper* aHelper,
- nsTArray<nsCString>* aTags,
- const nsACString& aNodeId,
- UniquePtr<GetGMPAudioDecoderCallback>&& aCallback)
- override;
NS_IMETHOD GetGMPDecryptor(GMPCrashHelper* aHelper,
nsTArray<nsCString>* aTags,
const nsACString& aNodeId,
UniquePtr<GetGMPDecryptorCallback>&& aCallback)
override;
// Helper for backwards compatibility with WebRTC/tests.
NS_IMETHOD
--- a/dom/media/gmp/GMPServiceParent.cpp
+++ b/dom/media/gmp/GMPServiceParent.cpp
@@ -18,17 +18,16 @@
#include "mozilla/ClearOnShutdown.h"
#include "mozilla/SyncRunnable.h"
#include "nsXPCOMPrivate.h"
#include "mozilla/Services.h"
#include "nsNativeCharsetUtils.h"
#include "nsIConsoleService.h"
#include "mozilla/Unused.h"
#include "GMPDecryptorParent.h"
-#include "GMPAudioDecoderParent.h"
#include "nsComponentManagerUtils.h"
#include "runnable_utils.h"
#include "VideoUtils.h"
#if defined(XP_LINUX) && defined(MOZ_GMP_SANDBOX)
#include "mozilla/SandboxInfo.h"
#endif
#include "nsAppDirectoryServiceDefs.h"
#include "nsDirectoryServiceUtils.h"
--- a/dom/media/gmp/GMPTypes.ipdlh
+++ b/dom/media/gmp/GMPTypes.ipdlh
@@ -1,15 +1,14 @@
/* -*- 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/. */
using GMPBufferType from "gmp-video-codec.h";
-using GMPAudioCodecType from "gmp-audio-codec.h";
using GMPMediaKeyStatus from "gmp-decryption.h";
namespace mozilla {
namespace gmp {
struct GMPDecryptionData {
uint8_t[] mKeyId;
uint8_t[] mIV;
@@ -45,42 +44,15 @@ struct GMPVideoi420FrameData
GMPPlaneData mUPlane;
GMPPlaneData mVPlane;
int32_t mWidth;
int32_t mHeight;
uint64_t mTimestamp; // microseconds
uint64_t mDuration; // microseconds
};
-struct GMPAudioCodecData
-{
- GMPAudioCodecType mCodecType;
- uint32_t mChannelCount;
- uint32_t mBitsPerChannel;
- uint32_t mSamplesPerSecond;
-
- uint8_t[] mExtraData;
-};
-
-struct GMPAudioEncodedSampleData
-{
- uint8_t[] mData;
- uint64_t mTimeStamp; // microseconds.
- GMPDecryptionData mDecryptionData;
- uint32_t mChannelCount;
- uint32_t mSamplesPerSecond;
-};
-
-struct GMPAudioDecodedSampleData
-{
- int16_t[] mData;
- uint64_t mTimeStamp; // microseconds.
- uint32_t mChannelCount;
- uint32_t mSamplesPerSecond;
-};
-
struct GMPKeyInformation {
uint8_t[] keyId;
GMPMediaKeyStatus status;
};
}
}
deleted file mode 100644
--- a/dom/media/gmp/PGMPAudioDecoder.ipdl
+++ /dev/null
@@ -1,37 +0,0 @@
-/* -*- 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;
-
-using GMPCodecSpecificInfo from "gmp-audio-codec.h";
-using GMPErr from "gmp-errors.h";
-
-include "GMPMessageUtils.h";
-
-namespace mozilla {
-namespace gmp {
-
-async protocol PGMPAudioDecoder
-{
- manager PGMPContent;
-child:
- async InitDecode(GMPAudioCodecData aCodecSettings);
- async Decode(GMPAudioEncodedSampleData aInput);
- async Reset();
- async Drain();
- async DecodingComplete();
-parent:
- async __delete__();
- async Decoded(GMPAudioDecodedSampleData aDecoded);
- async InputDataExhausted();
- async DrainComplete();
- async ResetComplete();
- async Error(GMPErr aErr);
- async Shutdown();
-};
-
-} // namespace gmp
-} // namespace mozilla
--- a/dom/media/gmp/PGMPContent.ipdl
+++ b/dom/media/gmp/PGMPContent.ipdl
@@ -3,31 +3,28 @@
* 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 PGMP;
include protocol PGMPService;
include protocol PGMPVideoDecoder;
include protocol PGMPVideoEncoder;
include protocol PGMPDecryptor;
-include protocol PGMPAudioDecoder;
namespace mozilla {
namespace gmp {
intr protocol PGMPContent
{
bridges PGMPService, PGMP;
- manages PGMPAudioDecoder;
manages PGMPDecryptor;
manages PGMPVideoDecoder;
manages PGMPVideoEncoder;
child:
- async PGMPAudioDecoder();
async PGMPDecryptor();
async PGMPVideoDecoder(uint32_t aDecryptorId);
async PGMPVideoEncoder();
};
} // namespace gmp
} // namespace mozilla
deleted file mode 100644
--- a/dom/media/gmp/gmp-api/gmp-audio-codec.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-* Copyright 2013, Mozilla Foundation and contributors
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-#ifndef GMP_AUDIO_CODEC_h_
-#define GMP_AUDIO_CODEC_h_
-
-#include <stdint.h>
-
-enum GMPAudioCodecType
-{
- kGMPAudioCodecAAC,
- kGMPAudioCodecVorbis,
- kGMPAudioCodecInvalid // Should always be last.
-};
-
-struct GMPAudioCodec
-{
- GMPAudioCodecType mCodecType;
- uint32_t mChannelCount;
- uint32_t mBitsPerChannel;
- uint32_t mSamplesPerSecond;
-
- // Codec extra data, such as vorbis setup header, or
- // AAC AudioSpecificConfig.
- // These are null/0 if not externally negotiated
- const uint8_t* mExtraData;
- uint32_t mExtraDataLen;
-};
-
-#endif // GMP_AUDIO_CODEC_h_
deleted file mode 100644
--- a/dom/media/gmp/gmp-api/gmp-audio-decode.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
-* Copyright 2013, Mozilla Foundation and contributors
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-#ifndef GMP_AUDIO_DECODE_h_
-#define GMP_AUDIO_DECODE_h_
-
-#include "gmp-errors.h"
-#include "gmp-audio-samples.h"
-#include "gmp-audio-codec.h"
-#include <stdint.h>
-
-// ALL METHODS MUST BE CALLED ON THE MAIN THREAD
-class GMPAudioDecoderCallback
-{
-public:
- virtual ~GMPAudioDecoderCallback() {}
-
- virtual void Decoded(GMPAudioSamples* aDecodedSamples) = 0;
-
- virtual void InputDataExhausted() = 0;
-
- virtual void DrainComplete() = 0;
-
- virtual void ResetComplete() = 0;
-
- // Called when the decoder encounters a catestrophic error and cannot
- // continue. Gecko will not send any more input for decoding.
- virtual void Error(GMPErr aError) = 0;
-};
-
-#define GMP_API_AUDIO_DECODER "decode-audio"
-
-// Audio decoding for a single stream. A GMP may be asked to create multiple
-// decoders concurrently.
-//
-// API name macro: GMP_API_AUDIO_DECODER
-// Host API: GMPAudioHost
-//
-// ALL METHODS MUST BE CALLED ON THE MAIN THREAD
-class GMPAudioDecoder
-{
-public:
- virtual ~GMPAudioDecoder() {}
-
- // aCallback: Subclass should retain reference to it until DecodingComplete
- // is called. Do not attempt to delete it, host retains ownership.
- // TODO: Pass AudioHost so decoder can create GMPAudioEncodedFrame objects?
- virtual void InitDecode(const GMPAudioCodec& aCodecSettings,
- GMPAudioDecoderCallback* aCallback) = 0;
-
- // Decode encoded audio frames (as a part of an audio stream). The decoded
- // frames must be returned to the user through the decode complete callback.
- virtual void Decode(GMPAudioSamples* aEncodedSamples) = 0;
-
- // Reset decoder state and prepare for a new call to Decode(...).
- // Flushes the decoder pipeline.
- // The decoder should enqueue a task to run ResetComplete() on the main
- // thread once the reset has finished.
- virtual void Reset() = 0;
-
- // Output decoded frames for any data in the pipeline, regardless of ordering.
- // All remaining decoded frames should be immediately returned via callback.
- // The decoder should enqueue a task to run DrainComplete() on the main
- // thread once the reset has finished.
- virtual void Drain() = 0;
-
- // May free decoder memory.
- virtual void DecodingComplete() = 0;
-};
-
-#endif // GMP_VIDEO_DECODE_h_
deleted file mode 100644
--- a/dom/media/gmp/gmp-api/gmp-audio-host.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
-* Copyright 2013, Mozilla Foundation and contributors
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-#ifndef GMP_AUDIO_HOST_h_
-#define GMP_AUDIO_HOST_h_
-
-#include "gmp-errors.h"
-#include "gmp-audio-samples.h"
-
-class GMPAudioHost
-{
-public:
- // Construct various Audio API objects. Host does not retain reference,
- // caller is owner and responsible for deleting.
- virtual GMPErr CreateSamples(GMPAudioFormat aFormat,
- GMPAudioSamples** aSamples) = 0;
-};
-
-#endif // GMP_AUDIO_HOST_h_
deleted file mode 100644
--- a/dom/media/gmp/gmp-api/gmp-audio-samples.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
-* Copyright 2013, Mozilla Foundation and contributors
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-#ifndef GMP_AUDIO_FRAME_h_
-#define GMP_AUDIO_FRAME_h_
-
-#include <stdint.h>
-#include "gmp-errors.h"
-#include "gmp-decryption.h"
-
-enum GMPAudioFormat
-{
- kGMPAudioEncodedSamples, // Raw compressed data, i.e. an AAC/Vorbis packet.
- kGMPAudioIS16Samples, // Interleaved int16_t PCM samples.
- kGMPAudioSamplesFormatInvalid // Should always be last.
-};
-
-class GMPAudioSamples {
-public:
- // The format of the buffer.
- virtual GMPAudioFormat GetFormat() = 0;
- virtual void Destroy() = 0;
-
- // MAIN THREAD ONLY
- // Buffer size must be exactly what's required to contain all samples in
- // the buffer; every byte is assumed to be part of a sample.
- virtual GMPErr SetBufferSize(uint32_t aSize) = 0;
-
- // Size of the buffer in bytes.
- virtual uint32_t Size() = 0;
-
- // Timestamps are in microseconds, and are the playback start time of the
- // first sample in the buffer.
- virtual void SetTimeStamp(uint64_t aTimeStamp) = 0;
- virtual uint64_t TimeStamp() = 0;
- virtual const uint8_t* Buffer() const = 0;
- virtual uint8_t* Buffer() = 0;
-
- // Get metadata describing how this frame is encrypted, or nullptr if the
- // buffer is not encrypted.
- virtual const GMPEncryptedBufferMetadata* GetDecryptionData() const = 0;
-
- virtual uint32_t Channels() const = 0;
- virtual void SetChannels(uint32_t aChannels) = 0;
-
- // Rate; the number of frames per second, where a "frame" is one sample for
- // each channel.
- //
- // For IS16 samples, the number of samples should be:
- // Size() / (Channels() * sizeof(int16_t)).
- //
- // Note: Channels() and Rate() may not be constant across a decoding
- // session. For example the rate for decoded samples may be different
- // than the rate advertised by the MP4 container for encoded samples
- // for HE-AAC streams with SBR/PS, and an EME-GMP may need to downsample
- // to satisfy DRM requirements.
- virtual uint32_t Rate() const = 0;
- virtual void SetRate(uint32_t aRate) = 0;
-};
-
-#endif // GMP_AUDIO_FRAME_h_
--- a/dom/media/gmp/moz.build
+++ b/dom/media/gmp/moz.build
@@ -8,37 +8,29 @@ XPIDL_MODULE = 'content_geckomediaplugin
XPIDL_SOURCES += [
'mozIGeckoMediaPluginChromeService.idl',
'mozIGeckoMediaPluginService.idl',
]
EXPORTS += [
'gmp-api/gmp-async-shutdown.h',
- 'gmp-api/gmp-audio-codec.h',
- 'gmp-api/gmp-audio-decode.h',
- 'gmp-api/gmp-audio-host.h',
- 'gmp-api/gmp-audio-samples.h',
'gmp-api/gmp-decryption.h',
'gmp-api/gmp-entrypoints.h',
'gmp-api/gmp-errors.h',
'gmp-api/gmp-platform.h',
'gmp-api/gmp-storage.h',
'gmp-api/gmp-video-codec.h',
'gmp-api/gmp-video-decode.h',
'gmp-api/gmp-video-encode.h',
'gmp-api/gmp-video-frame-encoded.h',
'gmp-api/gmp-video-frame-i420.h',
'gmp-api/gmp-video-frame.h',
'gmp-api/gmp-video-host.h',
'gmp-api/gmp-video-plane.h',
- 'GMPAudioDecoderChild.h',
- 'GMPAudioDecoderParent.h',
- 'GMPAudioDecoderProxy.h',
- 'GMPAudioHost.h',
'GMPCallbackBase.h',
'GMPCDMCallbackProxy.h',
'GMPCDMProxy.h',
'GMPChild.h',
'GMPContentChild.h',
'GMPContentParent.h',
'GMPCrashHelper.h',
'GMPCrashHelperHolder.h',
@@ -80,19 +72,16 @@ if CONFIG['OS_ARCH'] == 'Linux':
SOURCES += [
'GMPLoader.cpp',
]
USE_LIBS += [
'rlz',
]
UNIFIED_SOURCES += [
- 'GMPAudioDecoderChild.cpp',
- 'GMPAudioDecoderParent.cpp',
- 'GMPAudioHost.cpp',
'GMPCDMCallbackProxy.cpp',
'GMPCDMProxy.cpp',
'GMPChild.cpp',
'GMPContentChild.cpp',
'GMPContentParent.cpp',
'GMPCrashHelper.cpp',
'GMPDecryptorChild.cpp',
'GMPDecryptorParent.cpp',
@@ -125,17 +114,16 @@ UNIFIED_SOURCES += [
DIRS += [
'rlz',
'widevine-adapter',
]
IPDL_SOURCES += [
'GMPTypes.ipdlh',
'PGMP.ipdl',
- 'PGMPAudioDecoder.ipdl',
'PGMPContent.ipdl',
'PGMPDecryptor.ipdl',
'PGMPService.ipdl',
'PGMPStorage.ipdl',
'PGMPTimer.ipdl',
'PGMPVideoDecoder.ipdl',
'PGMPVideoEncoder.ipdl',
]
--- a/dom/media/gmp/mozIGeckoMediaPluginService.idl
+++ b/dom/media/gmp/mozIGeckoMediaPluginService.idl
@@ -5,17 +5,16 @@
#include "nsISupports.idl"
#include "nsIThread.idl"
%{C++
#include "mozilla/UniquePtr.h"
#include "nsTArray.h"
#include "nsStringGlue.h"
-class GMPAudioDecoderProxy;
class GMPDecryptorProxy;
class GMPVideoDecoderProxy;
class GMPVideoEncoderProxy;
class GMPVideoHost;
namespace mozilla {
class GMPCrashHelper;
}
@@ -32,31 +31,29 @@ template<class T>
class GMPVideoGetterCallback
{
public:
GMPVideoGetterCallback() { MOZ_COUNT_CTOR(GMPVideoGetterCallback<T>); }
virtual ~GMPVideoGetterCallback() { MOZ_COUNT_DTOR(GMPVideoGetterCallback<T>); }
virtual void Done(T*, GMPVideoHost*) = 0;
};
typedef GMPGetterCallback<GMPDecryptorProxy> GetGMPDecryptorCallback;
-typedef GMPGetterCallback<GMPAudioDecoderProxy> GetGMPAudioDecoderCallback;
typedef GMPVideoGetterCallback<GMPVideoDecoderProxy> GetGMPVideoDecoderCallback;
typedef GMPVideoGetterCallback<GMPVideoEncoderProxy> GetGMPVideoEncoderCallback;
class GetNodeIdCallback
{
public:
GetNodeIdCallback() { MOZ_COUNT_CTOR(GetNodeIdCallback); }
virtual ~GetNodeIdCallback() { MOZ_COUNT_DTOR(GetNodeIdCallback); }
virtual void Done(nsresult aResult, const nsACString& aNodeId) = 0;
};
%}
[ptr] native TagArray(nsTArray<nsCString>);
native GetGMPDecryptorCallback(mozilla::UniquePtr<GetGMPDecryptorCallback>&&);
-native GetGMPAudioDecoderCallback(mozilla::UniquePtr<GetGMPAudioDecoderCallback>&&);
native GetGMPVideoDecoderCallback(mozilla::UniquePtr<GetGMPVideoDecoderCallback>&&);
native GetGMPVideoEncoderCallback(mozilla::UniquePtr<GetGMPVideoEncoderCallback>&&);
native GetNodeIdCallback(mozilla::UniquePtr<GetNodeIdCallback>&&);
native GMPCrashHelperPtr(mozilla::GMPCrashHelper*);
[scriptable, uuid(44d362ae-937a-4803-bee6-f2512a0149d1)]
interface mozIGeckoMediaPluginService : nsISupports
{
@@ -122,33 +119,16 @@ interface mozIGeckoMediaPluginService :
*/
[noscript]
void getGMPVideoEncoder(in GMPCrashHelperPtr helper,
in TagArray tags,
[optional] in ACString nodeId,
in GetGMPVideoEncoderCallback callback);
/**
- * Returns an audio decoder that supports the specified tags.
- * The array of tags should at least contain a codec tag, and optionally
- * other tags such as for EME keysystem.
- * Callable only on GMP thread.
- * This is an asynchronous operation, the Done method of the callback object
- * will be called on the GMP thread with the result (which might be null in
- * the case of failure). This method always takes ownership of the callback
- * object, but if this method returns an error then the Done method of the
- * callback object will not be called at all.
- */
- [noscript]
- void getGMPAudioDecoder(in GMPCrashHelperPtr helper,
- in TagArray tags,
- [optional] in ACString nodeId,
- in GetGMPAudioDecoderCallback callback);
-
- /**
* Returns a decryption session manager that supports the specified tags.
* The array of tags should at least contain a key system tag, and optionally
* other tags.
* Callable only on GMP thread.
* This is an asynchronous operation, the Done method of the callback object
* will be called on the GMP thread with the result (which might be null in
* the case of failure). This method always takes ownership of the callback
* object, but if this method returns an error then the Done method of the
--- a/dom/media/platforms/agnostic/gmp/GMPDecoderModule.cpp
+++ b/dom/media/platforms/agnostic/gmp/GMPDecoderModule.cpp
@@ -9,17 +9,16 @@
#include "GMPVideoDecoder.h"
#include "GMPUtils.h"
#include "MediaDataDecoderProxy.h"
#include "MediaPrefs.h"
#include "VideoUtils.h"
#include "mozIGeckoMediaPluginService.h"
#include "nsServiceManagerUtils.h"
#include "mozilla/StaticMutex.h"
-#include "gmp-audio-decode.h"
#include "gmp-video-decode.h"
#include "MP4Decoder.h"
#include "VPXDecoder.h"
#ifdef XP_WIN
#include "WMFDecoderModule.h"
#endif
namespace mozilla {
@@ -98,21 +97,16 @@ GMPDecoderModule::SupportsMimeType(const
{ NS_LITERAL_CSTRING("vp9"), aGMP.value()});
}
if (VPXDecoder::IsVP8(aMimeType)) {
return HaveGMPFor(NS_LITERAL_CSTRING(GMP_API_VIDEO_DECODER),
{ NS_LITERAL_CSTRING("vp8"), aGMP.value()});
}
- if (MP4Decoder::IsAAC(aMimeType)) {
- return HaveGMPFor(NS_LITERAL_CSTRING(GMP_API_AUDIO_DECODER),
- { NS_LITERAL_CSTRING("aac"), aGMP.value()});
- }
-
return false;
}
bool
GMPDecoderModule::SupportsMimeType(const nsACString& aMimeType,
DecoderDoctorDiagnostics* aDiagnostics) const
{
return false;