From 1f7fba1ffbf5922d999ab52130efb73a35e72077 Mon Sep 17 00:00:00 2001 From: Andreas Huber Date: Thu, 5 Aug 2010 10:00:10 -0700 Subject: [PATCH] A better fix for the OggExtractor referring to the sample rate while it hasn't been initialized yet. Change-Id: I001fa36d3f5bf385b9f9d086c802673071c65db9 related-to-bug: 2896814 --- media/libstagefright/OggExtractor.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/media/libstagefright/OggExtractor.cpp b/media/libstagefright/OggExtractor.cpp index 16f094b2abd12..641a876288eab 100644 --- a/media/libstagefright/OggExtractor.cpp +++ b/media/libstagefright/OggExtractor.cpp @@ -361,11 +361,17 @@ status_t MyVorbisExtractor::readNextPacket(MediaBuffer **out) { memcpy(tmp->data(), buffer->data(), buffer->range_length()); tmp->set_range(0, buffer->range_length()); buffer->release(); - } else if (mVi.rate) { + } else { // XXX Not only is this not technically the correct time for // this packet, we also stamp every packet in this page // with the same time. This needs fixing later. - timeUs = mCurrentPage.mGranulePosition * 1000000ll / mVi.rate; + + if (mVi.rate) { + // Rate may not have been initialized yet if we're currently + // reading the configuration packets... + // Fortunately, the timestamp doesn't matter for those. + timeUs = mCurrentPage.mGranulePosition * 1000000ll / mVi.rate; + } tmp->set_range(0, 0); } buffer = tmp;