mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-22 09:45:41 +00:00
Bug 1163467. Part 1 - refactor DecodedStream::RecreateData(). r=roc.
This commit is contained in:
parent
6ddb65f184
commit
22cc98ef7b
@ -221,13 +221,19 @@ DecodedStream::DestroyData()
|
||||
}
|
||||
|
||||
void
|
||||
DecodedStream::RecreateData(int64_t aInitialTime, SourceMediaStream* aStream)
|
||||
DecodedStream::RecreateData(int64_t aInitialTime, MediaStreamGraph* aGraph)
|
||||
{
|
||||
MOZ_ASSERT(NS_IsMainThread());
|
||||
GetReentrantMonitor().AssertCurrentThreadIn();
|
||||
MOZ_ASSERT(!mData);
|
||||
MOZ_ASSERT((aGraph && !mData && OutputStreams().IsEmpty()) || // first time
|
||||
(!aGraph && mData)); // 2nd time and later
|
||||
|
||||
mData.reset(new DecodedStreamData(aInitialTime, aStream));
|
||||
if (!aGraph) {
|
||||
aGraph = mData->mStream->Graph();
|
||||
}
|
||||
auto source = aGraph->CreateSourceStream(nullptr);
|
||||
DestroyData();
|
||||
mData.reset(new DecodedStreamData(aInitialTime, source));
|
||||
|
||||
// Note that the delay between removing ports in DestroyDecodedStream
|
||||
// and adding new ones won't cause a glitch since all graph operations
|
||||
|
@ -21,6 +21,7 @@ class DecodedStream;
|
||||
class DecodedStreamGraphListener;
|
||||
class OutputStreamListener;
|
||||
class ReentrantMonitor;
|
||||
class MediaStreamGraph;
|
||||
|
||||
namespace layers {
|
||||
class Image;
|
||||
@ -94,7 +95,7 @@ public:
|
||||
explicit DecodedStream(ReentrantMonitor& aMonitor);
|
||||
DecodedStreamData* GetData();
|
||||
void DestroyData();
|
||||
void RecreateData(int64_t aInitialTime, SourceMediaStream* aStream);
|
||||
void RecreateData(int64_t aInitialTime, MediaStreamGraph* aGraph);
|
||||
nsTArray<OutputStreamData>& OutputStreams();
|
||||
ReentrantMonitor& GetReentrantMonitor();
|
||||
void Connect(ProcessedMediaStream* aStream, bool aFinishWhenEnded);
|
||||
|
@ -332,13 +332,7 @@ void MediaDecoder::RecreateDecodedStream(int64_t aStartTimeUSecs,
|
||||
ReentrantMonitorAutoEnter mon(GetReentrantMonitor());
|
||||
DECODER_LOG("RecreateDecodedStream aStartTimeUSecs=%lld!", aStartTimeUSecs);
|
||||
|
||||
if (!aGraph) {
|
||||
aGraph = GetDecodedStream()->mStream->Graph();
|
||||
}
|
||||
|
||||
mDecodedStream.DestroyData();
|
||||
mDecodedStream.RecreateData(aStartTimeUSecs, aGraph->CreateSourceStream(nullptr));
|
||||
|
||||
mDecodedStream.RecreateData(aStartTimeUSecs, aGraph);
|
||||
UpdateStreamBlockingForStateMachinePlaying();
|
||||
|
||||
GetDecodedStream()->mHaveBlockedForPlayState = mPlayState != PLAY_STATE_PLAYING;
|
||||
|
Loading…
Reference in New Issue
Block a user