Bug 1302573: [MSE] P3. Display evictable amount in about:media output. r=gerald

MozReview-Commit-ID: 1cs2aAxSH4A

--HG--
extra : rebase_source : cad708cb139aff03d91f338827f579c18551c99a
This commit is contained in:
Jean-Yves Avenard 2016-09-24 16:38:14 +10:00
parent 93fe7f08f6
commit 35a0f6dbcf
3 changed files with 24 additions and 11 deletions

View File

@ -258,11 +258,12 @@ MediaSourceDemuxer::GetMozDebugReaderData(nsAString& aString)
result += nsPrintfCString("Dumping data for demuxer %p:\n", this);
if (mAudioTrack) {
result += nsPrintfCString("\tDumping Audio Track Buffer(%s): - mLastAudioTime: %f\n"
"\t\tNumSamples:%u Size:%u NextGetSampleIndex:%u NextInsertionIndex:%d\n",
"\t\tNumSamples:%u Size:%u Evictable:%u NextGetSampleIndex:%u NextInsertionIndex:%d\n",
mAudioTrack->mAudioTracks.mInfo->mMimeType.get(),
mAudioTrack->mAudioTracks.mNextSampleTime.ToSeconds(),
mAudioTrack->mAudioTracks.mBuffers[0].Length(),
mAudioTrack->mAudioTracks.mSizeBuffer,
mAudioTrack->Evictable(TrackInfo::kAudioTrack),
mAudioTrack->mAudioTracks.mNextGetSampleIndex.valueOr(-1),
mAudioTrack->mAudioTracks.mNextInsertionIndex.valueOr(-1));
@ -271,11 +272,12 @@ MediaSourceDemuxer::GetMozDebugReaderData(nsAString& aString)
}
if (mVideoTrack) {
result += nsPrintfCString("\tDumping Video Track Buffer(%s) - mLastVideoTime: %f\n"
"\t\tNumSamples:%u Size:%u NextGetSampleIndex:%u NextInsertionIndex:%d\n",
"\t\tNumSamples:%u Size:%u Evictable:%u NextGetSampleIndex:%u NextInsertionIndex:%d\n",
mVideoTrack->mVideoTracks.mInfo->mMimeType.get(),
mVideoTrack->mVideoTracks.mNextSampleTime.ToSeconds(),
mVideoTrack->mVideoTracks.mBuffers[0].Length(),
mVideoTrack->mVideoTracks.mSizeBuffer,
mVideoTrack->Evictable(TrackInfo::kVideoTrack),
mVideoTrack->mVideoTracks.mNextGetSampleIndex.valueOr(-1),
mVideoTrack->mVideoTracks.mNextInsertionIndex.valueOr(-1));

View File

@ -274,15 +274,8 @@ TrackBuffersManager::EvictData(const TimeUnit& aPlaybackTime, int64_t aSize)
}
const int64_t toEvict = GetSize() + aSize - EvictionThreshold();
uint32_t canEvict;
{
MonitorAutoLock mon(mMonitor);
if (HasVideo()) {
canEvict = mVideoTracks.mEvictionIndex.mEvictable;
} else {
canEvict = mAudioTracks.mEvictionIndex.mEvictable;
}
}
const uint32_t canEvict =
Evictable(HasVideo() ? TrackInfo::kVideoTrack : TrackInfo::kAudioTrack);
MSE_DEBUG(
"buffered=%lldkB, eviction threshold=%ukB, evict=%lldkB canevict=%ukB",
@ -2393,6 +2386,13 @@ TrackBuffersManager::FindCurrentPosition(TrackInfo::TrackType aTrack,
return -1;
}
uint32_t
TrackBuffersManager::Evictable(TrackInfo::TrackType aTrack) const
{
MonitorAutoLock mon(mMonitor);
return GetTracksData(aTrack).mEvictionIndex.mEvictable;
}
TimeUnit
TrackBuffersManager::GetNextRandomAccessPoint(TrackInfo::TrackType aTrack,
const TimeUnit& aFuzz)

View File

@ -147,6 +147,7 @@ public:
{
return mEnded;
}
uint32_t Evictable(TrackInfo::TrackType aTrack) const;
media::TimeUnit Seek(TrackInfo::TrackType aTrack,
const media::TimeUnit& aTime,
const media::TimeUnit& aFuzz);
@ -412,6 +413,16 @@ private:
return mAudioTracks;
}
}
const TrackData& GetTracksData(TrackType aTrack) const
{
switch(aTrack) {
case TrackType::kVideoTrack:
return mVideoTracks;
case TrackType::kAudioTrack:
default:
return mAudioTracks;
}
}
TrackData mVideoTracks;
TrackData mAudioTracks;