From 1fc0488427b788141ce17931bbd458d521f3327f Mon Sep 17 00:00:00 2001 From: Matthew Gregan Date: Wed, 6 Jun 2012 17:58:07 +1200 Subject: [PATCH] Bug 723860 - Early bail from reader's GetBuffered() if not yet initialized. r=doublec --- content/media/gstreamer/nsGStreamerReader.cpp | 4 ++++ content/media/ogg/nsOggReader.cpp | 3 +-- content/media/wave/nsWaveReader.cpp | 3 +++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/content/media/gstreamer/nsGStreamerReader.cpp b/content/media/gstreamer/nsGStreamerReader.cpp index 164fb2ec9dbd..06a09b5dd23f 100644 --- a/content/media/gstreamer/nsGStreamerReader.cpp +++ b/content/media/gstreamer/nsGStreamerReader.cpp @@ -505,6 +505,10 @@ nsresult nsGStreamerReader::Seek(PRInt64 aTarget, nsresult nsGStreamerReader::GetBuffered(nsTimeRanges* aBuffered, PRInt64 aStartTime) { + if (!mInfo.mHasVideo && !mInfo.mHasAudio) { + return NS_OK; + } + GstFormat format = GST_FORMAT_TIME; MediaResource* resource = mDecoder->GetResource(); gint64 resourceLength = resource->GetLength(); diff --git a/content/media/ogg/nsOggReader.cpp b/content/media/ogg/nsOggReader.cpp index c6ff0085d1e4..8d40e2cfe10e 100644 --- a/content/media/ogg/nsOggReader.cpp +++ b/content/media/ogg/nsOggReader.cpp @@ -1532,8 +1532,7 @@ nsresult nsOggReader::GetBuffered(nsTimeRanges* aBuffered, PRInt64 aStartTime) { // HasAudio and HasVideo are not used here as they take a lock and cause // a deadlock. Accessing mInfo doesn't require a lock - it doesn't change - // after metadata is read and GetBuffered isn't called before metadata is - // read. + // after metadata is read. if (!mInfo.mHasVideo && !mInfo.mHasAudio) { // No need to search through the file if there are no audio or video tracks return NS_OK; diff --git a/content/media/wave/nsWaveReader.cpp b/content/media/wave/nsWaveReader.cpp index 7242eb5b8902..60fc1e17a001 100644 --- a/content/media/wave/nsWaveReader.cpp +++ b/content/media/wave/nsWaveReader.cpp @@ -239,6 +239,9 @@ static double RoundToUsecs(double aSeconds) { nsresult nsWaveReader::GetBuffered(nsTimeRanges* aBuffered, PRInt64 aStartTime) { + if (!mInfo.mHasAudio) { + return NS_OK; + } PRInt64 startOffset = mDecoder->GetResource()->GetNextCachedData(mWavePCMOffset); while (startOffset >= 0) { PRInt64 endOffset = mDecoder->GetResource()->GetCachedDataEnd(startOffset);