зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1184002: Add about:media plugin support with new MSE. r=cpearce
This commit is contained in:
Родитель
15fbc88e95
Коммит
5c4906180c
|
@ -293,6 +293,7 @@ void
|
|||
MediaSourceDecoder::GetMozDebugReaderData(nsAString& aString)
|
||||
{
|
||||
if (mIsUsingFormatReader) {
|
||||
mDemuxer->GetMozDebugReaderData(aString);
|
||||
return;
|
||||
}
|
||||
GetReader()->GetMozDebugReaderData(aString);
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
|
||||
#include "MediaSourceDemuxer.h"
|
||||
#include "SourceBufferList.h"
|
||||
#include "nsPrintfCString.h"
|
||||
|
||||
namespace mozilla {
|
||||
|
||||
|
@ -224,6 +225,41 @@ MediaSourceDemuxer::~MediaSourceDemuxer()
|
|||
mTaskQueue = nullptr;
|
||||
}
|
||||
|
||||
void
|
||||
MediaSourceDemuxer::GetMozDebugReaderData(nsAString& aString)
|
||||
{
|
||||
MonitorAutoLock mon(mMonitor);
|
||||
nsAutoCString result;
|
||||
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",
|
||||
mAudioTrack->mAudioTracks.mInfo->mMimeType.get(),
|
||||
mAudioTrack->mAudioTracks.mNextSampleTime.ToSeconds(),
|
||||
mAudioTrack->mAudioTracks.mBuffers[0].Length(),
|
||||
mAudioTrack->mAudioTracks.mSizeBuffer,
|
||||
mAudioTrack->mAudioTracks.mNextGetSampleIndex.valueOr(-1),
|
||||
mAudioTrack->mAudioTracks.mNextInsertionIndex.valueOr(-1));
|
||||
|
||||
result += nsPrintfCString("\t\tBuffered: ranges=%s\n",
|
||||
DumpTimeRanges(mAudioTrack->SafeBuffered(TrackInfo::kAudioTrack)).get());
|
||||
}
|
||||
if (mVideoTrack) {
|
||||
result += nsPrintfCString("\tDumping Video Track Buffer(%s) - mLastVideoTime: %f\n"
|
||||
"\t\tNumSamples:%u Size:%u NextGetSampleIndex:%u NextInsertionIndex:%d\n",
|
||||
mVideoTrack->mVideoTracks.mInfo->mMimeType.get(),
|
||||
mVideoTrack->mVideoTracks.mNextSampleTime.ToSeconds(),
|
||||
mVideoTrack->mVideoTracks.mBuffers[0].Length(),
|
||||
mVideoTrack->mVideoTracks.mSizeBuffer,
|
||||
mVideoTrack->mVideoTracks.mNextGetSampleIndex.valueOr(-1),
|
||||
mVideoTrack->mVideoTracks.mNextInsertionIndex.valueOr(-1));
|
||||
|
||||
result += nsPrintfCString("\t\tBuffered: ranges=%s\n",
|
||||
DumpTimeRanges(mVideoTrack->SafeBuffered(TrackInfo::kVideoTrack)).get());
|
||||
}
|
||||
aString += NS_ConvertUTF8toUTF16(result);
|
||||
}
|
||||
|
||||
MediaSourceTrackDemuxer::MediaSourceTrackDemuxer(MediaSourceDemuxer* aParent,
|
||||
TrackInfo::TrackType aType,
|
||||
TrackBuffersManager* aManager)
|
||||
|
|
|
@ -55,6 +55,10 @@ public:
|
|||
MediaTaskQueue* GetTaskQueue() { return mTaskQueue; }
|
||||
void NotifyTimeRangesChanged();
|
||||
|
||||
// Returns a string describing the state of the MediaSource internal
|
||||
// buffered data. Used for debugging purposes.
|
||||
void GetMozDebugReaderData(nsAString& aString);
|
||||
|
||||
private:
|
||||
~MediaSourceDemuxer();
|
||||
friend class MediaSourceTrackDemuxer;
|
||||
|
|
|
@ -1713,6 +1713,15 @@ TrackBuffersManager::Buffered(TrackInfo::TrackType aTrack)
|
|||
return GetTracksData(aTrack).mBufferedRanges;
|
||||
}
|
||||
|
||||
TimeIntervals
|
||||
TrackBuffersManager::SafeBuffered(TrackInfo::TrackType aTrack) const
|
||||
{
|
||||
MonitorAutoLock mon(mMonitor);
|
||||
return aTrack == TrackInfo::kVideoTrack
|
||||
? mVideoBufferedRanges
|
||||
: mAudioBufferedRanges;
|
||||
}
|
||||
|
||||
const TrackBuffersManager::TrackBuffer&
|
||||
TrackBuffersManager::GetTrackBuffer(TrackInfo::TrackType aTrack)
|
||||
{
|
||||
|
|
|
@ -77,6 +77,7 @@ public:
|
|||
MediaInfo GetMetadata();
|
||||
const TrackBuffer& GetTrackBuffer(TrackInfo::TrackType aTrack);
|
||||
const TimeIntervals& Buffered(TrackInfo::TrackType);
|
||||
TimeIntervals SafeBuffered(TrackInfo::TrackType) const;
|
||||
bool IsEnded() const
|
||||
{
|
||||
return mEnded;
|
||||
|
@ -95,6 +96,8 @@ public:
|
|||
#endif
|
||||
|
||||
private:
|
||||
// for MediaSourceDemuxer::GetMozDebugReaderData
|
||||
friend class MediaSourceDemuxer;
|
||||
virtual ~TrackBuffersManager();
|
||||
// All following functions run on the taskqueue.
|
||||
nsRefPtr<AppendPromise> InitSegmentParserLoop();
|
||||
|
|
Загрузка…
Ссылка в новой задаче