Bug 1184002: Add about:media plugin support with new MSE. r=cpearce

This commit is contained in:
Jean-Yves Avenard 2015-07-15 19:02:12 +10:00
Родитель 15fbc88e95
Коммит 5c4906180c
5 изменённых файлов: 53 добавлений и 0 удалений

Просмотреть файл

@ -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();