Loading media/libstagefright/OggExtractor.cpp +12 −1 Original line number Diff line number Diff line Loading @@ -94,6 +94,8 @@ private: size_t mCurrentPageSize; size_t mNextLaceIndex; off_t mFirstDataOffset; vorbis_info mVi; vorbis_comment mVc; Loading Loading @@ -183,7 +185,8 @@ MyVorbisExtractor::MyVorbisExtractor(const sp<DataSource> &source) : mSource(source), mOffset(0), mCurrentPageSize(0), mNextLaceIndex(0) { mNextLaceIndex(0), mFirstDataOffset(-1) { mCurrentPage.mNumSegments = 0; } Loading Loading @@ -222,6 +225,12 @@ status_t MyVorbisExtractor::findNextPage( } status_t MyVorbisExtractor::seekToOffset(off_t offset) { if (mFirstDataOffset >= 0 && offset < mFirstDataOffset) { // Once we know where the actual audio data starts (past the headers) // don't ever seek to anywhere before that. offset = mFirstDataOffset; } off_t pageOffset; status_t err = findNextPage(offset, &pageOffset); Loading Loading @@ -438,6 +447,8 @@ void MyVorbisExtractor::init() { verifyHeader(packet, 5); packet->release(); packet = NULL; mFirstDataOffset = mOffset + mCurrentPageSize; } void MyVorbisExtractor::verifyHeader( Loading media/libstagefright/codecs/vorbis/dec/VorbisDecoder.cpp +10 −8 Original line number Diff line number Diff line Loading @@ -173,18 +173,19 @@ int VorbisDecoder::decodePacket(MediaBuffer *packet, MediaBuffer *out) { pack.granulepos = 0; pack.packetno = 0; int numFrames = 0; int err = vorbis_dsp_synthesis(mState, &pack, 1); if (err != 0) { LOGW("vorbis_dsp_synthesis returned %d", err); return 0; } int numFrames = vorbis_dsp_pcmout( } else { numFrames = vorbis_dsp_pcmout( mState, (int16_t *)out->data(), kMaxNumSamplesPerBuffer); if (numFrames < 0) { LOGE("vorbis_dsp_pcmout returned %d", numFrames); return 0; numFrames = 0; } } out->set_range(0, numFrames * sizeof(int16_t) * mNumChannels); Loading @@ -203,6 +204,7 @@ status_t VorbisDecoder::read( CHECK(seekTimeUs >= 0); mNumFramesOutput = 0; vorbis_dsp_restart(mState); } else { seekTimeUs = -1; } Loading Loading
media/libstagefright/OggExtractor.cpp +12 −1 Original line number Diff line number Diff line Loading @@ -94,6 +94,8 @@ private: size_t mCurrentPageSize; size_t mNextLaceIndex; off_t mFirstDataOffset; vorbis_info mVi; vorbis_comment mVc; Loading Loading @@ -183,7 +185,8 @@ MyVorbisExtractor::MyVorbisExtractor(const sp<DataSource> &source) : mSource(source), mOffset(0), mCurrentPageSize(0), mNextLaceIndex(0) { mNextLaceIndex(0), mFirstDataOffset(-1) { mCurrentPage.mNumSegments = 0; } Loading Loading @@ -222,6 +225,12 @@ status_t MyVorbisExtractor::findNextPage( } status_t MyVorbisExtractor::seekToOffset(off_t offset) { if (mFirstDataOffset >= 0 && offset < mFirstDataOffset) { // Once we know where the actual audio data starts (past the headers) // don't ever seek to anywhere before that. offset = mFirstDataOffset; } off_t pageOffset; status_t err = findNextPage(offset, &pageOffset); Loading Loading @@ -438,6 +447,8 @@ void MyVorbisExtractor::init() { verifyHeader(packet, 5); packet->release(); packet = NULL; mFirstDataOffset = mOffset + mCurrentPageSize; } void MyVorbisExtractor::verifyHeader( Loading
media/libstagefright/codecs/vorbis/dec/VorbisDecoder.cpp +10 −8 Original line number Diff line number Diff line Loading @@ -173,18 +173,19 @@ int VorbisDecoder::decodePacket(MediaBuffer *packet, MediaBuffer *out) { pack.granulepos = 0; pack.packetno = 0; int numFrames = 0; int err = vorbis_dsp_synthesis(mState, &pack, 1); if (err != 0) { LOGW("vorbis_dsp_synthesis returned %d", err); return 0; } int numFrames = vorbis_dsp_pcmout( } else { numFrames = vorbis_dsp_pcmout( mState, (int16_t *)out->data(), kMaxNumSamplesPerBuffer); if (numFrames < 0) { LOGE("vorbis_dsp_pcmout returned %d", numFrames); return 0; numFrames = 0; } } out->set_range(0, numFrames * sizeof(int16_t) * mNumChannels); Loading @@ -203,6 +204,7 @@ status_t VorbisDecoder::read( CHECK(seekTimeUs >= 0); mNumFramesOutput = 0; vorbis_dsp_restart(mState); } else { seekTimeUs = -1; } Loading