mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-26 20:30:41 +00:00
Bug 1316211. P15 - remove MDR from the base class of MFR. r=gerald
MozReview-Commit-ID: Jf5pCxkhexg --HG-- extra : rebase_source : 3ec9423d4d0f3b60ee9e5f6f19af18188530e1d9 extra : source : 4fbc225bfc79abacaf47ffd4405ef2d6711dea32
This commit is contained in:
parent
2e40eb607f
commit
ef025c6fcf
@ -25,7 +25,7 @@ ADTSDecoder::Clone(MediaDecoderInit& aInit)
|
||||
MediaDecoderStateMachine*
|
||||
ADTSDecoder::CreateStateMachine()
|
||||
{
|
||||
MediaDecoderReaderInit init(this);
|
||||
MediaFormatReaderInit init(this);
|
||||
init.mCrashHelper = GetOwner()->CreateGMPCrashHelper();
|
||||
mReader = new MediaFormatReader(init, new ADTSDemuxer(mResource));
|
||||
return new MediaDecoderStateMachine(this, mReader);
|
||||
|
@ -292,7 +292,7 @@ DecoderTraits::CreateDecoder(MediaDecoderInit& aInit,
|
||||
/* static */
|
||||
MediaFormatReader*
|
||||
DecoderTraits::CreateReader(const MediaContainerType& aType,
|
||||
MediaDecoderReaderInit& aInit)
|
||||
MediaFormatReaderInit& aInit)
|
||||
{
|
||||
MOZ_ASSERT(NS_IsMainThread());
|
||||
MediaFormatReader* decoderReader = nullptr;
|
||||
|
@ -19,7 +19,7 @@ class ChannelMediaDecoder;
|
||||
class DecoderDoctorDiagnostics;
|
||||
class MediaContainerType;
|
||||
struct MediaDecoderInit;
|
||||
struct MediaDecoderReaderInit;
|
||||
struct MediaFormatReaderInit;
|
||||
class MediaDecoderOwner;
|
||||
class MediaFormatReader;
|
||||
class MediaResource;
|
||||
@ -52,7 +52,7 @@ public:
|
||||
// Create a reader for thew given MIME type aType. Returns null
|
||||
// if we were unable to create the reader.
|
||||
static MediaFormatReader* CreateReader(const MediaContainerType& aType,
|
||||
MediaDecoderReaderInit& aInit);
|
||||
MediaFormatReaderInit& aInit);
|
||||
|
||||
// Returns true if MIME type aType is supported in video documents,
|
||||
// or false otherwise. Not all platforms support all MIME types, and
|
||||
|
@ -37,7 +37,7 @@ extern LazyLogModule gMediaDecoderLog;
|
||||
#define DECODER_LOG(...) MOZ_LOG(gMediaDecoderLog, LogLevel::Debug, (FMT(__VA_ARGS__)))
|
||||
#define DECODER_WARN(...) NS_WARNING(nsPrintfCString(FMT(__VA_ARGS__)).get())
|
||||
|
||||
MediaDecoderReader::MediaDecoderReader(MediaDecoderReaderInit& aInit)
|
||||
MediaDecoderReader::MediaDecoderReader()
|
||||
{
|
||||
MOZ_COUNT_CTOR(MediaDecoderReader);
|
||||
MOZ_ASSERT(NS_IsMainThread());
|
||||
|
@ -29,20 +29,6 @@ class MediaDecoderReader;
|
||||
class TaskQueue;
|
||||
class VideoFrameContainer;
|
||||
|
||||
struct MOZ_STACK_CLASS MediaDecoderReaderInit
|
||||
{
|
||||
AbstractMediaDecoder* const mDecoder;
|
||||
MediaResource* mResource = nullptr;
|
||||
VideoFrameContainer* mVideoFrameContainer = nullptr;
|
||||
already_AddRefed<layers::KnowsCompositor> mKnowsCompositor;
|
||||
already_AddRefed<GMPCrashHelper> mCrashHelper;
|
||||
|
||||
explicit MediaDecoderReaderInit(AbstractMediaDecoder* aDecoder)
|
||||
: mDecoder(aDecoder)
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
// Encapsulates the decoding and reading of media data. Reading can either
|
||||
// synchronous and done on the calling "decode" thread, or asynchronous and
|
||||
// performed on a background thread, with the result being returned by
|
||||
@ -56,7 +42,7 @@ public:
|
||||
|
||||
// The caller must ensure that Shutdown() is called before aDecoder is
|
||||
// destroyed.
|
||||
explicit MediaDecoderReader(MediaDecoderReaderInit& aInit);
|
||||
MediaDecoderReader();
|
||||
|
||||
protected:
|
||||
virtual ~MediaDecoderReader();
|
||||
|
@ -1093,10 +1093,9 @@ MediaFormatReader::DemuxerProxy::NotifyDataArrived()
|
||||
});
|
||||
}
|
||||
|
||||
MediaFormatReader::MediaFormatReader(MediaDecoderReaderInit& aInit,
|
||||
MediaFormatReader::MediaFormatReader(MediaFormatReaderInit& aInit,
|
||||
MediaDataDemuxer* aDemuxer)
|
||||
: MediaDecoderReader(aInit)
|
||||
, mTaskQueue(new TaskQueue(GetMediaThreadPool(MediaThreadType::PLAYBACK),
|
||||
: mTaskQueue(new TaskQueue(GetMediaThreadPool(MediaThreadType::PLAYBACK),
|
||||
"MediaFormatReader::mTaskQueue",
|
||||
/* aSupportsTailDispatch = */ true))
|
||||
, mAudio(this, MediaData::AUDIO_DATA, MediaPrefs::MaxAudioDecodeError())
|
||||
|
@ -14,7 +14,6 @@
|
||||
|
||||
#include "MediaEventSource.h"
|
||||
#include "MediaDataDemuxer.h"
|
||||
#include "MediaDecoderReader.h"
|
||||
#include "MediaPrefs.h"
|
||||
#include "nsAutoPtr.h"
|
||||
#include "PDMFactory.h"
|
||||
@ -22,6 +21,8 @@
|
||||
namespace mozilla {
|
||||
|
||||
class CDMProxy;
|
||||
class GMPCrashHelper;
|
||||
class VideoFrameContainer;
|
||||
|
||||
struct WaitForDataRejectValue
|
||||
{
|
||||
@ -67,12 +68,28 @@ struct MetadataHolder
|
||||
UniquePtr<MetadataTags> mTags;
|
||||
};
|
||||
|
||||
class MediaFormatReader final : public MediaDecoderReader
|
||||
struct MOZ_STACK_CLASS MediaFormatReaderInit
|
||||
{
|
||||
AbstractMediaDecoder* const mDecoder;
|
||||
MediaResource* mResource = nullptr;
|
||||
VideoFrameContainer* mVideoFrameContainer = nullptr;
|
||||
already_AddRefed<layers::KnowsCompositor> mKnowsCompositor;
|
||||
already_AddRefed<GMPCrashHelper> mCrashHelper;
|
||||
|
||||
explicit MediaFormatReaderInit(AbstractMediaDecoder* aDecoder)
|
||||
: mDecoder(aDecoder)
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
class MediaFormatReader final
|
||||
{
|
||||
static const bool IsExclusive = true;
|
||||
typedef TrackInfo::TrackType TrackType;
|
||||
typedef MozPromise<bool, MediaResult, IsExclusive> NotifyDataArrivedPromise;
|
||||
|
||||
NS_INLINE_DECL_THREADSAFE_REFCOUNTING(MediaFormatReader)
|
||||
|
||||
public:
|
||||
using TrackSet = EnumSet<TrackInfo::TrackType>;
|
||||
using MetadataPromise = MozPromise<MetadataHolder, MediaResult, IsExclusive>;
|
||||
@ -91,9 +108,7 @@ public:
|
||||
using WaitForDataPromise =
|
||||
MozPromise<MediaData::Type, WaitForDataRejectValue, IsExclusive>;
|
||||
|
||||
MediaFormatReader(MediaDecoderReaderInit& aInit, MediaDataDemuxer* aDemuxer);
|
||||
|
||||
virtual ~MediaFormatReader();
|
||||
MediaFormatReader(MediaFormatReaderInit& aInit, MediaDataDemuxer* aDemuxer);
|
||||
|
||||
// Initializes the reader, returns NS_OK on success, or NS_ERROR_FAILURE
|
||||
// on failure.
|
||||
@ -238,6 +253,8 @@ public:
|
||||
MediaEventSource<MediaResult>& OnDecodeWarning() { return mOnDecodeWarning; }
|
||||
|
||||
private:
|
||||
~MediaFormatReader();
|
||||
|
||||
bool HasVideo() const { return mVideo.mTrackDemuxer; }
|
||||
bool HasAudio() const { return mAudio.mTrackDemuxer; }
|
||||
|
||||
|
@ -26,7 +26,7 @@ FlacDecoder::Clone(MediaDecoderInit& aInit)
|
||||
MediaDecoderStateMachine*
|
||||
FlacDecoder::CreateStateMachine()
|
||||
{
|
||||
MediaDecoderReaderInit init(this);
|
||||
MediaFormatReaderInit init(this);
|
||||
init.mCrashHelper = GetOwner()->CreateGMPCrashHelper();
|
||||
mReader = new MediaFormatReader(init, new FlacDemuxer(mResource));
|
||||
return new MediaDecoderStateMachine(this, mReader);
|
||||
|
@ -32,7 +32,7 @@ MP4Decoder::MP4Decoder(MediaDecoderInit& aInit)
|
||||
|
||||
MediaDecoderStateMachine* MP4Decoder::CreateStateMachine()
|
||||
{
|
||||
MediaDecoderReaderInit init(this);
|
||||
MediaFormatReaderInit init(this);
|
||||
init.mVideoFrameContainer = GetVideoFrameContainer();
|
||||
init.mKnowsCompositor = GetCompositor();
|
||||
init.mCrashHelper = GetOwner()->CreateGMPCrashHelper();
|
||||
|
@ -28,7 +28,7 @@ HLSDecoder::CreateStateMachine()
|
||||
MOZ_ASSERT(resource);
|
||||
auto resourceWrapper = static_cast<HLSResource*>(resource)->GetResourceWrapper();
|
||||
MOZ_ASSERT(resourceWrapper);
|
||||
MediaDecoderReaderInit init(this);
|
||||
MediaFormatReaderInit init(this);
|
||||
init.mVideoFrameContainer = GetVideoFrameContainer();
|
||||
init.mKnowsCompositor = GetCompositor();
|
||||
init.mCrashHelper = GetOwner()->CreateGMPCrashHelper();
|
||||
|
@ -39,7 +39,7 @@ MediaSourceDecoder::CreateStateMachine()
|
||||
{
|
||||
MOZ_ASSERT(NS_IsMainThread());
|
||||
mDemuxer = new MediaSourceDemuxer(AbstractMainThread());
|
||||
MediaDecoderReaderInit init(this);
|
||||
MediaFormatReaderInit init(this);
|
||||
init.mVideoFrameContainer = GetVideoFrameContainer();
|
||||
init.mKnowsCompositor = GetCompositor();
|
||||
init.mCrashHelper = GetOwner()->CreateGMPCrashHelper();
|
||||
|
@ -26,7 +26,7 @@ MP3Decoder::Clone(MediaDecoderInit& aInit)
|
||||
|
||||
MediaDecoderStateMachine*
|
||||
MP3Decoder::CreateStateMachine() {
|
||||
MediaDecoderReaderInit init(this);
|
||||
MediaFormatReaderInit init(this);
|
||||
init.mCrashHelper = GetOwner()->CreateGMPCrashHelper();
|
||||
mReader = new MediaFormatReader(init, new MP3Demuxer(mResource));
|
||||
return new MediaDecoderStateMachine(this, mReader);
|
||||
|
@ -16,7 +16,7 @@ namespace mozilla {
|
||||
MediaDecoderStateMachine* OggDecoder::CreateStateMachine()
|
||||
{
|
||||
RefPtr<OggDemuxer> demuxer = new OggDemuxer(mResource);
|
||||
MediaDecoderReaderInit init(this);
|
||||
MediaFormatReaderInit init(this);
|
||||
init.mVideoFrameContainer = GetVideoFrameContainer();
|
||||
init.mKnowsCompositor = GetCompositor();
|
||||
init.mCrashHelper = GetOwner()->CreateGMPCrashHelper();
|
||||
|
@ -22,7 +22,7 @@ WaveDecoder::Clone(MediaDecoderInit& aInit)
|
||||
MediaDecoderStateMachine*
|
||||
WaveDecoder::CreateStateMachine()
|
||||
{
|
||||
MediaDecoderReaderInit init(this);
|
||||
MediaFormatReaderInit init(this);
|
||||
init.mCrashHelper = GetOwner()->CreateGMPCrashHelper();
|
||||
mReader = new MediaFormatReader(init, new WAVDemuxer(mResource));
|
||||
return new MediaDecoderStateMachine(this, mReader);
|
||||
|
@ -197,7 +197,7 @@ MediaDecodeTask::CreateReader()
|
||||
// If you change this list to add support for new decoders, please consider
|
||||
// updating HTMLMediaElement::CreateDecoder as well.
|
||||
|
||||
MediaDecoderReaderInit init(mBufferDecoder);
|
||||
MediaFormatReaderInit init(mBufferDecoder);
|
||||
init.mResource = resource;
|
||||
mDecoderReader = DecoderTraits::CreateReader(mContainerType, init);
|
||||
|
||||
|
@ -18,7 +18,7 @@ namespace mozilla {
|
||||
|
||||
MediaDecoderStateMachine* WebMDecoder::CreateStateMachine()
|
||||
{
|
||||
MediaDecoderReaderInit init(this);
|
||||
MediaFormatReaderInit init(this);
|
||||
init.mVideoFrameContainer = GetVideoFrameContainer();
|
||||
init.mKnowsCompositor = GetCompositor();
|
||||
init.mCrashHelper = GetOwner()->CreateGMPCrashHelper();
|
||||
|
Loading…
x
Reference in New Issue
Block a user