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;
|
||||
}
|
||||
|
||||
void MediaFormatReader::DecoderData::RequestDrain() {
|
||||
LOG("");
|
||||
MOZ_RELEASE_ASSERT(mDrainState == DrainState::None);
|
||||
mDrainState = DrainState::DrainRequested;
|
||||
}
|
||||
|
||||
class MediaFormatReader::DecoderFactory {
|
||||
using InitPromise = MediaDataDecoder::InitPromise;
|
||||
using TokenPromise = AllocPolicy::Promise;
|
||||
@@ -2330,17 +2336,19 @@ void MediaFormatReader::DrainDecoder(TrackType aTrack) {
|
||||
decoder.mDecoder->Drain()
|
||||
->Then(
|
||||
mTaskQueue, __func__,
|
||||
[self, aTrack, &decoder](MediaDataDecoder::DecodedData&& aResults) {
|
||||
[this, self, aTrack,
|
||||
&decoder](MediaDataDecoder::DecodedData&& aResults) {
|
||||
decoder.mDrainRequest.Complete();
|
||||
DDLOGEX(self.get(), DDLogCategory::Log, "drained", DDNoValue{});
|
||||
if (aResults.IsEmpty()) {
|
||||
LOG("DrainDecoder drained");
|
||||
decoder.mDrainState = DrainState::DrainCompleted;
|
||||
} else {
|
||||
self->NotifyNewOutput(aTrack, std::move(aResults));
|
||||
NotifyNewOutput(aTrack, std::move(aResults));
|
||||
// Let's see if we have any more data available to drain.
|
||||
decoder.mDrainState = DrainState::PartialDrainPending;
|
||||
}
|
||||
self->ScheduleUpdate(aTrack);
|
||||
ScheduleUpdate(aTrack);
|
||||
},
|
||||
[self, aTrack, &decoder](const MediaResult& aError) {
|
||||
decoder.mDrainRequest.Complete();
|
||||
|
||||
@@ -254,6 +254,9 @@ class MediaFormatReader final
|
||||
return mTrackInfoUpdatedEvent;
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
friend struct DDLoggedTypeTraits; // For DecoderData
|
||||
|
||||
private:
|
||||
bool HasVideo() const { return mVideo.mTrackDemuxer; }
|
||||
bool HasAudio() const { return mAudio.mTrackDemuxer; }
|
||||
@@ -469,10 +472,7 @@ class MediaFormatReader final
|
||||
return mDrainState == DrainState::DrainCompleted ||
|
||||
mDrainState == DrainState::DrainAborted;
|
||||
}
|
||||
void RequestDrain() {
|
||||
MOZ_RELEASE_ASSERT(mDrainState == DrainState::None);
|
||||
mDrainState = DrainState::DrainRequested;
|
||||
}
|
||||
void RequestDrain();
|
||||
|
||||
void StartRecordDecodingPerf(const TrackType aTrack,
|
||||
const MediaRawData* aSample);
|
||||
@@ -907,6 +907,8 @@ class MediaFormatReader final
|
||||
Atomic<bool> mEncryptedCustomIdent;
|
||||
};
|
||||
|
||||
DDLoggedTypeCustomName(MediaFormatReader::DecoderData, DecoderData);
|
||||
|
||||
} // namespace mozilla
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user