author | Kaku Kuo <kaku@mozilla.com> |
Thu, 09 Mar 2017 17:12:02 +0800 | |
changeset 347409 | 86e79ca1a6bbf45ca84bf5ed89045c7ca86e5e9a |
parent 347408 | 5e9e7264a2249e5876fab47b9e3b5b557af1d817 |
child 347410 | 1f5176831c3358f3d0ae1c7e0e1af69fc0e43b76 |
push id | 31496 |
push user | cbook@mozilla.com |
push date | Tue, 14 Mar 2017 13:21:57 +0000 |
treeherder | mozilla-central@9a26ed658fdc [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | jwwang |
bugs | 1346120 |
milestone | 55.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/dom/media/MediaDecoderReader.h +++ b/dom/media/MediaDecoderReader.h @@ -255,20 +255,20 @@ public: return mOnTrackWaitingForKey; } MediaEventProducer<TrackInfo::TrackType>& OnTrackWaitingForKeyProducer() { return mOnTrackWaitingForKey; } - // Switch the video decoder to BlankDecoderModule. It might takes effective + // Switch the video decoder to NullDecoderModule. It might takes effective // since a few samples later depends on how much demuxed samples are already // queued in the original video decoder. - virtual void SetVideoBlankDecode(bool aIsBlankDecode) { } + virtual void SetVideoNullDecode(bool aIsNullDecode) { } protected: virtual ~MediaDecoderReader(); // Recomputes mBuffered. virtual void UpdateBuffered(); RefPtr<MediaDataPromise> DecodeToFirstVideoData();
--- a/dom/media/MediaDecoderReaderWrapper.cpp +++ b/dom/media/MediaDecoderReaderWrapper.cpp @@ -143,14 +143,14 @@ MediaDecoderReaderWrapper::OnMetadataRea } } void MediaDecoderReaderWrapper::SetVideoBlankDecode(bool aIsBlankDecode) { MOZ_ASSERT(mOwnerThread->IsCurrentThreadIn()); nsCOMPtr<nsIRunnable> r = - NewRunnableMethod<bool>(mReader, &MediaDecoderReader::SetVideoBlankDecode, + NewRunnableMethod<bool>(mReader, &MediaDecoderReader::SetVideoNullDecode, aIsBlankDecode); mReader->OwnerThread()->Dispatch(r.forget()); } } // namespace mozilla
--- a/dom/media/MediaFormatReader.cpp +++ b/dom/media/MediaFormatReader.cpp @@ -660,17 +660,17 @@ MediaFormatReader::DecoderFactory::DoCre switch (aData.mTrack) { case TrackInfo::kAudioTrack: { aData.mDecoder = mOwner->mPlatform->CreateDecoder({ ownerData.mInfo ? *ownerData.mInfo->GetAsAudioInfo() : *ownerData.mOriginalInfo->GetAsAudioInfo(), ownerData.mTaskQueue, mOwner->mCrashHelper, - ownerData.mIsBlankDecode, + ownerData.mIsNullDecode, &result, TrackInfo::kAudioTrack, &mOwner->OnTrackWaitingForKeyProducer() }); break; } case TrackType::kVideoTrack: { @@ -679,17 +679,17 @@ MediaFormatReader::DecoderFactory::DoCre aData.mDecoder = mOwner->mPlatform->CreateDecoder({ ownerData.mInfo ? *ownerData.mInfo->GetAsVideoInfo() : *ownerData.mOriginalInfo->GetAsVideoInfo(), ownerData.mTaskQueue, mOwner->mKnowsCompositor, mOwner->GetImageContainer(), mOwner->mCrashHelper, - ownerData.mIsBlankDecode, + ownerData.mIsNullDecode, &result, TrackType::kVideoTrack, &mOwner->OnTrackWaitingForKeyProducer() }); break; } default: @@ -3042,36 +3042,36 @@ MediaFormatReader::GetMozDebugReaderData mVideo.mWaitingForData, mVideo.mWaitingForKey, mVideo.mLastStreamSourceID); } aString += result; } void -MediaFormatReader::SetVideoBlankDecode(bool aIsBlankDecode) +MediaFormatReader::SetVideoNullDecode(bool aIsNullDecode) { MOZ_ASSERT(OnTaskQueue()); - return SetBlankDecode(TrackType::kVideoTrack, aIsBlankDecode); + return SetNullDecode(TrackType::kVideoTrack, aIsNullDecode); } void -MediaFormatReader::SetBlankDecode(TrackType aTrack, bool aIsBlankDecode) +MediaFormatReader::SetNullDecode(TrackType aTrack, bool aIsNullDecode) { MOZ_ASSERT(OnTaskQueue()); auto& decoder = GetDecoderData(aTrack); - if (decoder.mIsBlankDecode == aIsBlankDecode) { + if (decoder.mIsNullDecode == aIsNullDecode) { return; } - LOG("%s, decoder.mIsBlankDecode = %d => aIsBlankDecode = %d", - TrackTypeToStr(aTrack), decoder.mIsBlankDecode, aIsBlankDecode); - - decoder.mIsBlankDecode = aIsBlankDecode; + LOG("%s, decoder.mIsNullDecode = %d => aIsNullDecode = %d", + TrackTypeToStr(aTrack), decoder.mIsNullDecode, aIsNullDecode); + + decoder.mIsNullDecode = aIsNullDecode; ShutdownDecoder(aTrack); } void MediaFormatReader::OnFirstDemuxCompleted( TrackInfo::TrackType aType, RefPtr<MediaTrackDemuxer::SamplesHolder> aSamples) { MOZ_ASSERT(OnTaskQueue());
--- a/dom/media/MediaFormatReader.h +++ b/dom/media/MediaFormatReader.h @@ -73,17 +73,17 @@ public: } void SetCDMProxy(CDMProxy* aProxy) override; // Returns a string describing the state of the decoder data. // Used for debugging purposes. void GetMozDebugReaderData(nsACString& aString); - void SetVideoBlankDecode(bool aIsBlankDecode) override; + void SetVideoNullDecode(bool aIsNullDecode) override; private: nsresult InitInternal() override; bool HasVideo() const { return mVideo.mTrackDemuxer; } bool HasAudio() const { return mAudio.mTrackDemuxer; } bool IsWaitingOnCDMResource(); @@ -199,17 +199,17 @@ private: , mMaxConsecutiveError(aNumOfMaxError) , mNumSamplesInput(0) , mNumSamplesOutput(0) , mNumSamplesOutputTotal(0) , mNumSamplesSkippedTotal(0) , mSizeOfQueue(0) , mIsHardwareAccelerated(false) , mLastStreamSourceID(UINT32_MAX) - , mIsBlankDecode(false) + , mIsNullDecode(false) { } MediaFormatReader* mOwner; // Disambiguate Audio vs Video. MediaData::Type mType; RefPtr<MediaTrackDemuxer> mTrackDemuxer; // TaskQueue on which decoder can choose to decode. @@ -381,18 +381,18 @@ private: uint32_t mLastStreamSourceID; Maybe<uint32_t> mNextStreamSourceID; media::TimeIntervals mTimeRanges; Maybe<media::TimeUnit> mLastTimeRangesEnd; // TrackInfo as first discovered during ReadMetadata. UniquePtr<TrackInfo> mOriginalInfo; RefPtr<TrackInfoSharedPtr> mInfo; Maybe<media::TimeUnit> mFirstDemuxedSampleTime; - // Use BlankDecoderModule or not. - bool mIsBlankDecode; + // Use NullDecoderModule or not. + bool mIsNullDecode; }; class DecoderDataWithPromise : public DecoderData { public: DecoderDataWithPromise(MediaFormatReader* aOwner, MediaData::Type aType, @@ -526,17 +526,17 @@ private: RefPtr<VideoFrameContainer> mVideoFrameContainer; layers::ImageContainer* GetImageContainer(); RefPtr<CDMProxy> mCDMProxy; RefPtr<GMPCrashHelper> mCrashHelper; - void SetBlankDecode(TrackType aTrack, bool aIsBlankDecode); + void SetNullDecode(TrackType aTrack, bool aIsNullDecode); class DecoderFactory; UniquePtr<DecoderFactory> mDecoderFactory; class ShutdownPromisePool; UniquePtr<ShutdownPromisePool> mShutdownPromisePool; MediaEventListener mCompositorUpdatedListener;
--- a/dom/media/platforms/PDMFactory.cpp +++ b/dom/media/platforms/PDMFactory.cpp @@ -48,16 +48,17 @@ #include "mp4_demuxer/H264.h" #include <functional> namespace mozilla { extern already_AddRefed<PlatformDecoderModule> CreateAgnosticDecoderModule(); extern already_AddRefed<PlatformDecoderModule> CreateBlankDecoderModule(); +extern already_AddRefed<PlatformDecoderModule> CreateNullDecoderModule(); class PDMFactoryImpl final { public: PDMFactoryImpl() { #ifdef XP_WIN WMFDecoderModule::Init(); @@ -158,17 +159,17 @@ public: private: nsTArray<std::function<CheckResult()>> mCheckerList; }; // SupportChecker PDMFactory::PDMFactory() { EnsureInit(); CreatePDMs(); - CreateBlankPDM(); + CreateNullPDM(); } PDMFactory::~PDMFactory() { } void PDMFactory::EnsureInit() const @@ -198,19 +199,19 @@ PDMFactory::EnsureInit() const } }); SyncRunnable::DispatchToThread(mainThread, runnable); } already_AddRefed<MediaDataDecoder> PDMFactory::CreateDecoder(const CreateDecoderParams& aParams) { - if (aParams.mUseBlankDecoder) { - MOZ_ASSERT(mBlankPDM); - return CreateDecoderWithPDM(mBlankPDM, aParams); + if (aParams.mUseNullDecoder) { + MOZ_ASSERT(mNullPDM); + return CreateDecoderWithPDM(mNullPDM, aParams); } const TrackInfo& config = aParams.mConfig; bool isEncrypted = mEMEPDM && config.mCrypto.mValid; if (isEncrypted) { return CreateDecoderWithPDM(mEMEPDM, aParams); } @@ -285,17 +286,17 @@ PDMFactory::CreateDecoderWithPDM(Platfor if (!config.IsVideo()) { *result = MediaResult( NS_ERROR_DOM_MEDIA_FATAL_ERR, RESULT_DETAIL("Decoder configuration error, expected audio or video.")); return nullptr; } - if (MP4Decoder::IsH264(config.mMimeType) && !aParams.mUseBlankDecoder) { + if (MP4Decoder::IsH264(config.mMimeType) && !aParams.mUseNullDecoder) { RefPtr<H264Converter> h = new H264Converter(aPDM, aParams); const nsresult rv = h->GetLastError(); if (NS_SUCCEEDED(rv) || rv == NS_ERROR_NOT_INITIALIZED) { // The H264Converter either successfully created the wrapped decoder, // or there wasn't enough AVCC data to do so. Otherwise, there was some // problem, for example WMF DLLs were missing. m = h.forget(); } @@ -397,20 +398,20 @@ PDMFactory::CreatePDMs() m = new GMPDecoderModule(); mGMPPDMFailedToStartup = !StartupPDM(m); } else { mGMPPDMFailedToStartup = false; } } void -PDMFactory::CreateBlankPDM() +PDMFactory::CreateNullPDM() { - mBlankPDM = CreateBlankDecoderModule(); - MOZ_ASSERT(mBlankPDM && NS_SUCCEEDED(mBlankPDM->Startup())); + mNullPDM = CreateNullDecoderModule(); + MOZ_ASSERT(mNullPDM && NS_SUCCEEDED(mNullPDM->Startup())); } bool PDMFactory::StartupPDM(PlatformDecoderModule* aPDM) { if (aPDM && NS_SUCCEEDED(aPDM->Startup())) { mCurrentPDMs.AppendElement(aPDM); return true;
--- a/dom/media/platforms/PDMFactory.h +++ b/dom/media/platforms/PDMFactory.h @@ -48,31 +48,31 @@ public: static constexpr int kYUV400 = 0; static constexpr int kYUV420 = 1; static constexpr int kYUV422 = 2; static constexpr int kYUV444 = 3; private: virtual ~PDMFactory(); void CreatePDMs(); - void CreateBlankPDM(); + void CreateNullPDM(); // Startup the provided PDM and add it to our list if successful. bool StartupPDM(PlatformDecoderModule* aPDM); // Returns the first PDM in our list supporting the mimetype. already_AddRefed<PlatformDecoderModule> GetDecoder(const TrackInfo& aTrackInfo, DecoderDoctorDiagnostics* aDiagnostics) const; already_AddRefed<MediaDataDecoder> CreateDecoderWithPDM(PlatformDecoderModule* aPDM, const CreateDecoderParams& aParams); nsTArray<RefPtr<PlatformDecoderModule>> mCurrentPDMs; RefPtr<PlatformDecoderModule> mEMEPDM; - RefPtr<PlatformDecoderModule> mBlankPDM; + RefPtr<PlatformDecoderModule> mNullPDM; bool mWMFFailedToLoad = false; bool mFFmpegFailedToLoad = false; bool mGMPPDMFailedToStartup = false; void EnsureInit() const; template<class T> friend class StaticAutoPtr; static StaticAutoPtr<PDMFactoryImpl> sInstance;
--- a/dom/media/platforms/PlatformDecoderModule.h +++ b/dom/media/platforms/PlatformDecoderModule.h @@ -80,34 +80,34 @@ struct MOZ_STACK_CLASS CreateDecoderPara const TrackInfo& mConfig; TaskQueue* mTaskQueue = nullptr; DecoderDoctorDiagnostics* mDiagnostics = nullptr; layers::ImageContainer* mImageContainer = nullptr; MediaResult* mError = nullptr; RefPtr<layers::KnowsCompositor> mKnowsCompositor; RefPtr<GMPCrashHelper> mCrashHelper; - bool mUseBlankDecoder = false; + bool mUseNullDecoder = false; TrackInfo::TrackType mType = TrackInfo::kUndefinedTrack; MediaEventProducer<TrackInfo::TrackType>* mOnWaitingForKeyEvent = nullptr; OptionSet mOptions = OptionSet(Option::Default); private: void Set(TaskQueue* aTaskQueue) { mTaskQueue = aTaskQueue; } void Set(DecoderDoctorDiagnostics* aDiagnostics) { mDiagnostics = aDiagnostics; } void Set(layers::ImageContainer* aImageContainer) { mImageContainer = aImageContainer; } void Set(MediaResult* aError) { mError = aError; } void Set(GMPCrashHelper* aCrashHelper) { mCrashHelper = aCrashHelper; } - void Set(bool aUseBlankDecoder) { mUseBlankDecoder = aUseBlankDecoder; } + void Set(bool aUseNullDecoder) { mUseNullDecoder = aUseNullDecoder; } void Set(OptionSet aOptions) { mOptions = aOptions; } void Set(layers::KnowsCompositor* aKnowsCompositor) { mKnowsCompositor = aKnowsCompositor; } void Set(TrackInfo::TrackType aType) { mType = aType;