Bug 1412212. P3 - also dump debug info of AudioSink.
MozReview-Commit-ID: AnvlXrhdoI5
--- a/dom/media/mediasink/AudioSink.cpp
+++ b/dom/media/mediasink/AudioSink.cpp
@@ -530,10 +530,27 @@ AudioSink::DrainConverter(uint32_t aMaxF
CreateAudioFromBuffer(Move(convertedData), lastPacket);
if (!data) {
return 0;
}
mProcessedQueue.Push(data);
return data->mFrames;
}
+nsCString
+AudioSink::GetDebugInfo()
+{
+ MOZ_ASSERT(mOwnerThread->IsCurrentThreadIn());
+ return nsPrintfCString("AudioSink: StartTime=%" PRId64
+ " LastGoodPosition=%" PRId64
+ " Playing=%d OutputRate=%u Written=%" PRId64
+ " Errored=%d PlaybackComplete=%d",
+ mStartTime.ToMicroseconds(),
+ mLastGoodPosition.ToMicroseconds(),
+ mPlaying,
+ mOutputRate,
+ mWritten,
+ bool(mErrored),
+ bool(mPlaybackComplete));
+}
+
} // namespace media
} // namespace mozilla
--- a/dom/media/mediasink/AudioSink.h
+++ b/dom/media/mediasink/AudioSink.h
@@ -58,16 +58,18 @@ public:
void SetPlaybackRate(double aPlaybackRate);
void SetPreservesPitch(bool aPreservesPitch);
void SetPlaying(bool aPlaying);
MediaEventSource<bool>& AudibleEvent() {
return mAudibleEvent;
}
+ nsCString GetDebugInfo();
+
private:
// Allocate and initialize mAudioStream. Returns NS_OK on success.
nsresult InitializeAudioStream(const PlaybackParams& aParams);
// Interface of AudioStream::DataSource.
// Called on the callback thread of cubeb.
UniquePtr<AudioStream::Chunk> PopFrames(uint32_t aFrames) override;
bool Ended() const override;
--- a/dom/media/mediasink/AudioSinkWrapper.cpp
+++ b/dom/media/mediasink/AudioSinkWrapper.cpp
@@ -239,11 +239,26 @@ AudioSinkWrapper::OnAudioEnded()
mAudioSinkPromise.Complete();
mPlayDuration = GetPosition();
if (!mPlayStartTime.IsNull()) {
mPlayStartTime = TimeStamp::Now();
}
mAudioEnded = true;
}
+nsCString
+AudioSinkWrapper::GetDebugInfo()
+{
+ AssertOwnerThread();
+ auto str =
+ nsPrintfCString("AudioSinkWrapper: IsStarted=%d IsPlaying=%d AudioEnded=%d",
+ IsStarted(),
+ IsPlaying(),
+ mAudioEnded);
+ if (mAudioSink) {
+ AppendStringIfNotEmpty(str, mAudioSink->GetDebugInfo());
+ }
+ return str;
+}
+
} // namespace media
} // namespace mozilla
--- a/dom/media/mediasink/AudioSinkWrapper.h
+++ b/dom/media/mediasink/AudioSinkWrapper.h
@@ -69,16 +69,18 @@ public:
void Start(const TimeUnit& aStartTime, const MediaInfo& aInfo) override;
void Stop() override;
bool IsStarted() const override;
bool IsPlaying() const override;
void Shutdown() override;
+ nsCString GetDebugInfo() override;
+
private:
virtual ~AudioSinkWrapper();
void AssertOwnerThread() const {
MOZ_ASSERT(mOwnerThread->IsCurrentThreadIn());
}
TimeUnit GetVideoPosition(TimeStamp aNow) const;