Merge "The AMRSource failed to properly release a media buffer in case of error."
This commit is contained in:
committed by
Android (Google) Code Review
commit
cf06dd0a8a
@@ -225,27 +225,32 @@ status_t AMRSource::read(
|
||||
return ERROR_IO;
|
||||
}
|
||||
|
||||
MediaBuffer *buffer;
|
||||
status_t err = mGroup->acquire_buffer(&buffer);
|
||||
if (err != OK) {
|
||||
return err;
|
||||
}
|
||||
|
||||
if (header & 0x83) {
|
||||
// Padding bits must be 0.
|
||||
|
||||
LOGE("padding bits must be 0, header is 0x%02x", header);
|
||||
|
||||
return ERROR_MALFORMED;
|
||||
}
|
||||
|
||||
unsigned FT = (header >> 3) & 0x0f;
|
||||
|
||||
if (FT > 8 || (!mIsWide && FT > 7)) {
|
||||
|
||||
LOGE("illegal AMR frame type %d", FT);
|
||||
|
||||
return ERROR_MALFORMED;
|
||||
}
|
||||
|
||||
size_t frameSize = getFrameSize(mIsWide, FT);
|
||||
CHECK_EQ(frameSize, mFrameSize);
|
||||
|
||||
MediaBuffer *buffer;
|
||||
status_t err = mGroup->acquire_buffer(&buffer);
|
||||
if (err != OK) {
|
||||
return err;
|
||||
}
|
||||
|
||||
n = mDataSource->readAt(mOffset, buffer->data(), frameSize);
|
||||
|
||||
if (n != (ssize_t)frameSize) {
|
||||
|
||||
Reference in New Issue
Block a user