Merge "Ignore corrupt aac audio frames and substitute silence." into froyo
This commit is contained in:
committed by
Android (Google) Code Review
commit
cdded187d2
@@ -203,25 +203,32 @@ status_t AACDecoder::read(
|
|||||||
|
|
||||||
Int decoderErr = PVMP4AudioDecodeFrame(mConfig, mDecoderBuf);
|
Int decoderErr = PVMP4AudioDecodeFrame(mConfig, mDecoderBuf);
|
||||||
|
|
||||||
|
size_t numOutBytes =
|
||||||
|
mConfig->frameLength * sizeof(int16_t) * mConfig->desiredChannels;
|
||||||
|
|
||||||
if (decoderErr != MP4AUDEC_SUCCESS) {
|
if (decoderErr != MP4AUDEC_SUCCESS) {
|
||||||
LOGE("AAC decoder returned error %d", decoderErr);
|
LOGW("AAC decoder returned error %d, substituting silence", decoderErr);
|
||||||
|
|
||||||
buffer->release();
|
memset(buffer->data(), 0, numOutBytes);
|
||||||
buffer = NULL;
|
|
||||||
|
|
||||||
return ERROR_MALFORMED;
|
// Discard input buffer.
|
||||||
}
|
|
||||||
|
|
||||||
buffer->set_range(
|
|
||||||
0, mConfig->frameLength * sizeof(int16_t) * mConfig->desiredChannels);
|
|
||||||
|
|
||||||
mInputBuffer->set_range(
|
|
||||||
mInputBuffer->range_offset() + mConfig->inputBufferUsedLength,
|
|
||||||
mInputBuffer->range_length() - mConfig->inputBufferUsedLength);
|
|
||||||
|
|
||||||
if (mInputBuffer->range_length() == 0) {
|
|
||||||
mInputBuffer->release();
|
mInputBuffer->release();
|
||||||
mInputBuffer = NULL;
|
mInputBuffer = NULL;
|
||||||
|
|
||||||
|
// fall through
|
||||||
|
}
|
||||||
|
|
||||||
|
buffer->set_range(0, numOutBytes);
|
||||||
|
|
||||||
|
if (mInputBuffer != NULL) {
|
||||||
|
mInputBuffer->set_range(
|
||||||
|
mInputBuffer->range_offset() + mConfig->inputBufferUsedLength,
|
||||||
|
mInputBuffer->range_length() - mConfig->inputBufferUsedLength);
|
||||||
|
|
||||||
|
if (mInputBuffer->range_length() == 0) {
|
||||||
|
mInputBuffer->release();
|
||||||
|
mInputBuffer = NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
buffer->meta_data()->setInt64(
|
buffer->meta_data()->setInt64(
|
||||||
|
|||||||
Reference in New Issue
Block a user