summaryrefslogtreecommitdiffstats
path: root/dom/media/platforms/android/MediaCodecDataDecoder.h
diff options
context:
space:
mode:
Diffstat (limited to 'dom/media/platforms/android/MediaCodecDataDecoder.h')
-rw-r--r--dom/media/platforms/android/MediaCodecDataDecoder.h126
1 files changed, 0 insertions, 126 deletions
diff --git a/dom/media/platforms/android/MediaCodecDataDecoder.h b/dom/media/platforms/android/MediaCodecDataDecoder.h
deleted file mode 100644
index 0db6407bf..000000000
--- a/dom/media/platforms/android/MediaCodecDataDecoder.h
+++ /dev/null
@@ -1,126 +0,0 @@
-/* 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 MediaCodecDataDecoder_h_
-#define MediaCodecDataDecoder_h_
-
-#include "AndroidDecoderModule.h"
-
-#include "MediaCodec.h"
-#include "SurfaceTexture.h"
-#include "TimeUnits.h"
-#include "mozilla/Monitor.h"
-#include "mozilla/Maybe.h"
-
-#include <deque>
-
-namespace mozilla {
-
-typedef std::deque<RefPtr<MediaRawData>> SampleQueue;
-
-class MediaCodecDataDecoder : public MediaDataDecoder {
-public:
- static MediaDataDecoder* CreateAudioDecoder(const AudioInfo& aConfig,
- java::sdk::MediaFormat::Param aFormat,
- MediaDataDecoderCallback* aCallback);
-
- static MediaDataDecoder* CreateVideoDecoder(const VideoInfo& aConfig,
- java::sdk::MediaFormat::Param aFormat,
- MediaDataDecoderCallback* aCallback,
- layers::ImageContainer* aImageContainer);
-
- virtual ~MediaCodecDataDecoder();
-
- RefPtr<MediaDataDecoder::InitPromise> Init() override;
- void Flush() override;
- void Drain() override;
- void Shutdown() override;
- void Input(MediaRawData* aSample) override;
- const char* GetDescriptionName() const override
- {
- return "Android MediaCodec decoder";
- }
-
-protected:
- enum class ModuleState : uint8_t {
- kDecoding = 0,
- kFlushing,
- kDrainQueue,
- kDrainDecoder,
- kDrainWaitEOS,
- kStopping,
- kShutdown
- };
-
- friend class AndroidDecoderModule;
-
- MediaCodecDataDecoder(MediaData::Type aType,
- const nsACString& aMimeType,
- java::sdk::MediaFormat::Param aFormat,
- MediaDataDecoderCallback* aCallback);
-
- static const char* ModuleStateStr(ModuleState aState);
-
- virtual nsresult InitDecoder(java::sdk::Surface::Param aSurface);
-
- virtual nsresult Output(java::sdk::BufferInfo::Param aInfo, void* aBuffer,
- java::sdk::MediaFormat::Param aFormat, const media::TimeUnit& aDuration)
- {
- return NS_OK;
- }
-
- virtual nsresult PostOutput(java::sdk::BufferInfo::Param aInfo,
- java::sdk::MediaFormat::Param aFormat, const media::TimeUnit& aDuration)
- {
- return NS_OK;
- }
-
- virtual void Cleanup() {};
-
- nsresult ResetInputBuffers();
- nsresult ResetOutputBuffers();
-
- nsresult GetInputBuffer(JNIEnv* env, int index, jni::Object::LocalRef* buffer);
- bool WaitForInput();
- already_AddRefed<MediaRawData> PeekNextSample();
- nsresult QueueSample(const MediaRawData* aSample);
- nsresult QueueEOS();
- void HandleEOS(int32_t aOutputStatus);
- Maybe<media::TimeUnit> GetOutputDuration();
- nsresult ProcessOutput(java::sdk::BufferInfo::Param aInfo,
- java::sdk::MediaFormat::Param aFormat,
- int32_t aStatus);
- // Sets decoder state and returns whether the new state has become effective.
- bool SetState(ModuleState aState);
- void DecoderLoop();
-
- virtual void ClearQueue();
-
- MediaData::Type mType;
-
- nsAutoCString mMimeType;
- java::sdk::MediaFormat::GlobalRef mFormat;
-
- MediaDataDecoderCallback* mCallback;
-
- java::sdk::MediaCodec::GlobalRef mDecoder;
-
- jni::ObjectArray::GlobalRef mInputBuffers;
- jni::ObjectArray::GlobalRef mOutputBuffers;
-
- nsCOMPtr<nsIThread> mThread;
-
- // Only these members are protected by mMonitor.
- Monitor mMonitor;
-
- ModuleState mState;
-
- SampleQueue mQueue;
- // Durations are stored in microseconds.
- std::deque<media::TimeUnit> mDurations;
-};
-
-} // namespace mozilla
-
-#endif