Bug 1965992 Add some logging of MediaFormatReader drain progress r=media-playback-reviewers,padenot
Differential Revision: https://phabricator.services.mozilla.com/D249203
This commit is contained in:
committed by
ktomlinson@mozilla.com
parent
684f118472
commit
377b91d30b
@@ -207,6 +207,12 @@ void MediaFormatReader::DecoderData::Flush() {
|
|||||||
mFlushed = true;
|
mFlushed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MediaFormatReader::DecoderData::RequestDrain() {
|
||||||
|
LOG("");
|
||||||
|
MOZ_RELEASE_ASSERT(mDrainState == DrainState::None);
|
||||||
|
mDrainState = DrainState::DrainRequested;
|
||||||
|
}
|
||||||
|
|
||||||
class MediaFormatReader::DecoderFactory {
|
class MediaFormatReader::DecoderFactory {
|
||||||
using InitPromise = MediaDataDecoder::InitPromise;
|
using InitPromise = MediaDataDecoder::InitPromise;
|
||||||
using TokenPromise = AllocPolicy::Promise;
|
using TokenPromise = AllocPolicy::Promise;
|
||||||
@@ -2330,17 +2336,19 @@ void MediaFormatReader::DrainDecoder(TrackType aTrack) {
|
|||||||
decoder.mDecoder->Drain()
|
decoder.mDecoder->Drain()
|
||||||
->Then(
|
->Then(
|
||||||
mTaskQueue, __func__,
|
mTaskQueue, __func__,
|
||||||
[self, aTrack, &decoder](MediaDataDecoder::DecodedData&& aResults) {
|
[this, self, aTrack,
|
||||||
|
&decoder](MediaDataDecoder::DecodedData&& aResults) {
|
||||||
decoder.mDrainRequest.Complete();
|
decoder.mDrainRequest.Complete();
|
||||||
DDLOGEX(self.get(), DDLogCategory::Log, "drained", DDNoValue{});
|
DDLOGEX(self.get(), DDLogCategory::Log, "drained", DDNoValue{});
|
||||||
if (aResults.IsEmpty()) {
|
if (aResults.IsEmpty()) {
|
||||||
|
LOG("DrainDecoder drained");
|
||||||
decoder.mDrainState = DrainState::DrainCompleted;
|
decoder.mDrainState = DrainState::DrainCompleted;
|
||||||
} else {
|
} else {
|
||||||
self->NotifyNewOutput(aTrack, std::move(aResults));
|
NotifyNewOutput(aTrack, std::move(aResults));
|
||||||
// Let's see if we have any more data available to drain.
|
// Let's see if we have any more data available to drain.
|
||||||
decoder.mDrainState = DrainState::PartialDrainPending;
|
decoder.mDrainState = DrainState::PartialDrainPending;
|
||||||
}
|
}
|
||||||
self->ScheduleUpdate(aTrack);
|
ScheduleUpdate(aTrack);
|
||||||
},
|
},
|
||||||
[self, aTrack, &decoder](const MediaResult& aError) {
|
[self, aTrack, &decoder](const MediaResult& aError) {
|
||||||
decoder.mDrainRequest.Complete();
|
decoder.mDrainRequest.Complete();
|
||||||
|
|||||||
@@ -254,6 +254,9 @@ class MediaFormatReader final
|
|||||||
return mTrackInfoUpdatedEvent;
|
return mTrackInfoUpdatedEvent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
friend struct DDLoggedTypeTraits; // For DecoderData
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool HasVideo() const { return mVideo.mTrackDemuxer; }
|
bool HasVideo() const { return mVideo.mTrackDemuxer; }
|
||||||
bool HasAudio() const { return mAudio.mTrackDemuxer; }
|
bool HasAudio() const { return mAudio.mTrackDemuxer; }
|
||||||
@@ -469,10 +472,7 @@ class MediaFormatReader final
|
|||||||
return mDrainState == DrainState::DrainCompleted ||
|
return mDrainState == DrainState::DrainCompleted ||
|
||||||
mDrainState == DrainState::DrainAborted;
|
mDrainState == DrainState::DrainAborted;
|
||||||
}
|
}
|
||||||
void RequestDrain() {
|
void RequestDrain();
|
||||||
MOZ_RELEASE_ASSERT(mDrainState == DrainState::None);
|
|
||||||
mDrainState = DrainState::DrainRequested;
|
|
||||||
}
|
|
||||||
|
|
||||||
void StartRecordDecodingPerf(const TrackType aTrack,
|
void StartRecordDecodingPerf(const TrackType aTrack,
|
||||||
const MediaRawData* aSample);
|
const MediaRawData* aSample);
|
||||||
@@ -907,6 +907,8 @@ class MediaFormatReader final
|
|||||||
Atomic<bool> mEncryptedCustomIdent;
|
Atomic<bool> mEncryptedCustomIdent;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
DDLoggedTypeCustomName(MediaFormatReader::DecoderData, DecoderData);
|
||||||
|
|
||||||
} // namespace mozilla
|
} // namespace mozilla
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user