зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1068996 - Make WMFMediaDataDecoder::Shutdown() actually shutdown. r=kentuckyfriedtakahe
This commit is contained in:
Родитель
71030c9d35
Коммит
0b0b954051
|
@ -308,4 +308,10 @@ WMFAudioMFTManager::Output(int64_t aStreamOffset,
|
|||
return S_OK;
|
||||
}
|
||||
|
||||
void
|
||||
WMFAudioMFTManager::Shutdown()
|
||||
{
|
||||
mDecoder = nullptr;
|
||||
}
|
||||
|
||||
} // namespace mozilla
|
||||
|
|
|
@ -29,6 +29,9 @@ public:
|
|||
// a null aOutput in this case.
|
||||
virtual HRESULT Output(int64_t aStreamOffset,
|
||||
nsAutoPtr<MediaData>& aOutput) MOZ_OVERRIDE;
|
||||
|
||||
virtual void Shutdown() MOZ_OVERRIDE;
|
||||
|
||||
private:
|
||||
|
||||
HRESULT UpdateOutputType();
|
||||
|
|
|
@ -48,10 +48,18 @@ WMFMediaDataDecoder::Init()
|
|||
nsresult
|
||||
WMFMediaDataDecoder::Shutdown()
|
||||
{
|
||||
mDecoder = nullptr;
|
||||
mTaskQueue->FlushAndDispatch(NS_NewRunnableMethod(this, &WMFMediaDataDecoder::ProcessShutdown));
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
void
|
||||
WMFMediaDataDecoder::ProcessShutdown()
|
||||
{
|
||||
mMFTManager->Shutdown();
|
||||
mMFTManager = nullptr;
|
||||
mDecoder = nullptr;
|
||||
}
|
||||
|
||||
// Inserts data into the decoder's pipeline.
|
||||
nsresult
|
||||
WMFMediaDataDecoder::Input(mp4_demuxer::MP4Sample* aSample)
|
||||
|
|
|
@ -43,6 +43,9 @@ public:
|
|||
// MP4Reader.
|
||||
virtual HRESULT Output(int64_t aStreamOffset,
|
||||
nsAutoPtr<MediaData>& aOutput) = 0;
|
||||
|
||||
// Destroys all resources.
|
||||
virtual void Shutdown() = 0;
|
||||
};
|
||||
|
||||
// Decodes audio and video using Windows Media Foundation. Samples are decoded
|
||||
|
@ -81,6 +84,8 @@ private:
|
|||
// all available output.
|
||||
void ProcessDrain();
|
||||
|
||||
void ProcessShutdown();
|
||||
|
||||
RefPtr<MediaTaskQueue> mTaskQueue;
|
||||
MediaDataDecoderCallback* mCallback;
|
||||
|
||||
|
|
|
@ -399,4 +399,10 @@ WMFVideoMFTManager::Output(int64_t aStreamOffset,
|
|||
return S_OK;
|
||||
}
|
||||
|
||||
void
|
||||
WMFVideoMFTManager::Shutdown()
|
||||
{
|
||||
mDecoder = nullptr;
|
||||
}
|
||||
|
||||
} // namespace mozilla
|
||||
|
|
|
@ -33,6 +33,8 @@ public:
|
|||
virtual HRESULT Output(int64_t aStreamOffset,
|
||||
nsAutoPtr<MediaData>& aOutput) MOZ_OVERRIDE;
|
||||
|
||||
virtual void Shutdown() MOZ_OVERRIDE;
|
||||
|
||||
private:
|
||||
|
||||
bool InitializeDXVA();
|
||||
|
|
Загрузка…
Ссылка в новой задаче