am 2088e371: Merge "Assume that all of the decoded vorbis audio data is valid unless the source indicates otherwise." into gingerbread

This commit is contained in:
Andreas Huber
2010-10-26 16:23:54 -07:00
committed by Android Git Automerger

View File

@@ -112,7 +112,12 @@ status_t VorbisDecoder::start(MetaData *params) {
mAnchorTimeUs = 0; mAnchorTimeUs = 0;
mNumFramesOutput = 0; mNumFramesOutput = 0;
mNumFramesLeftOnPage = 0;
// If the source never limits the number of valid frames contained
// in the input data, we'll assume that all of the decoded frames are
// valid.
mNumFramesLeftOnPage = -1;
mStarted = true; mStarted = true;
return OK; return OK;
@@ -193,12 +198,14 @@ int VorbisDecoder::decodePacket(MediaBuffer *packet, MediaBuffer *out) {
} }
} }
if (numFrames > mNumFramesLeftOnPage) { if (mNumFramesLeftOnPage >= 0) {
LOGV("discarding %d frames at end of page", if (numFrames > mNumFramesLeftOnPage) {
numFrames - mNumFramesLeftOnPage); LOGV("discarding %d frames at end of page",
numFrames = mNumFramesLeftOnPage; numFrames - mNumFramesLeftOnPage);
numFrames = mNumFramesLeftOnPage;
}
mNumFramesLeftOnPage -= numFrames;
} }
mNumFramesLeftOnPage -= numFrames;
out->set_range(0, numFrames * sizeof(int16_t) * mNumChannels); out->set_range(0, numFrames * sizeof(int16_t) * mNumChannels);
@@ -241,6 +248,7 @@ status_t VorbisDecoder::read(
int32_t numPageSamples; int32_t numPageSamples;
if (inputBuffer->meta_data()->findInt32( if (inputBuffer->meta_data()->findInt32(
kKeyValidSamples, &numPageSamples)) { kKeyValidSamples, &numPageSamples)) {
CHECK(numPageSamples >= 0);
mNumFramesLeftOnPage = numPageSamples; mNumFramesLeftOnPage = numPageSamples;
} }