Remove some ABuffer uses from libmp4extractor
Bug: 67908544
Test: CTS MediaPlayerTest
Change-Id: Ia32002afb48445ea55be9eb33ebc09bccb5acb5d
diff --git a/media/extractors/mp4/MPEG4Extractor.cpp b/media/extractors/mp4/MPEG4Extractor.cpp
index 78d2ac6..a9f66fa 100644
--- a/media/extractors/mp4/MPEG4Extractor.cpp
+++ b/media/extractors/mp4/MPEG4Extractor.cpp
@@ -31,6 +31,7 @@
#include "ItemTable.h"
#include "include/ESDS.h"
+#include <media/ExtractorUtils.h>
#include <media/MediaTrack.h>
#include <media/stagefright/foundation/ABitReader.h>
#include <media/stagefright/foundation/ABuffer.h>
@@ -1324,17 +1325,17 @@
if (mLastTrack == NULL)
return ERROR_MALFORMED;
- sp<ABuffer> buffer = new ABuffer(chunk_data_size);
- if (buffer->data() == NULL) {
+ auto buffer = heapbuffer<uint8_t>(chunk_data_size);
+ if (buffer.get() == NULL) {
return NO_MEMORY;
}
if (mDataSource->readAt(
- data_offset, buffer->data(), chunk_data_size) < chunk_data_size) {
+ data_offset, buffer.get(), chunk_data_size) < chunk_data_size) {
return ERROR_IO;
}
- String8 mimeFormat((const char *)(buffer->data()), chunk_data_size);
+ String8 mimeFormat((const char *)(buffer.get()), chunk_data_size);
mLastTrack->meta.setCString(kKeyMIMEType, mimeFormat.string());
break;
@@ -1833,15 +1834,15 @@
{
*offset += chunk_size;
- sp<ABuffer> buffer = new ABuffer(chunk_data_size);
+ auto buffer = heapbuffer<uint8_t>(chunk_data_size);
- if (buffer->data() == NULL) {
+ if (buffer.get() == NULL) {
ALOGE("b/28471206");
return NO_MEMORY;
}
if (mDataSource->readAt(
- data_offset, buffer->data(), chunk_data_size) < chunk_data_size) {
+ data_offset, buffer.get(), chunk_data_size) < chunk_data_size) {
return ERROR_IO;
}
@@ -1849,21 +1850,21 @@
return ERROR_MALFORMED;
mLastTrack->meta.setData(
- kKeyAVCC, kTypeAVCC, buffer->data(), chunk_data_size);
+ kKeyAVCC, kTypeAVCC, buffer.get(), chunk_data_size);
break;
}
case FOURCC('h', 'v', 'c', 'C'):
{
- sp<ABuffer> buffer = new ABuffer(chunk_data_size);
+ auto buffer = heapbuffer<uint8_t>(chunk_data_size);
- if (buffer->data() == NULL) {
+ if (buffer.get() == NULL) {
ALOGE("b/28471206");
return NO_MEMORY;
}
if (mDataSource->readAt(
- data_offset, buffer->data(), chunk_data_size) < chunk_data_size) {
+ data_offset, buffer.get(), chunk_data_size) < chunk_data_size) {
return ERROR_IO;
}
@@ -1871,7 +1872,7 @@
return ERROR_MALFORMED;
mLastTrack->meta.setData(
- kKeyHVCC, kTypeHVCC, buffer->data(), chunk_data_size);
+ kKeyHVCC, kTypeHVCC, buffer.get(), chunk_data_size);
*offset += chunk_size;
break;
@@ -2212,13 +2213,13 @@
if (chunk_data_size < 0 || static_cast<uint64_t>(chunk_data_size) >= SIZE_MAX - 1) {
return ERROR_MALFORMED;
}
- sp<ABuffer> buffer = new ABuffer(chunk_data_size + 1);
- if (buffer->data() == NULL) {
+ auto buffer = heapbuffer<uint8_t>(chunk_data_size);
+ if (buffer.get() == NULL) {
ALOGE("b/28471206");
return NO_MEMORY;
}
if (mDataSource->readAt(
- data_offset, buffer->data(), chunk_data_size) != (ssize_t)chunk_data_size) {
+ data_offset, buffer.get(), chunk_data_size) != (ssize_t)chunk_data_size) {
return ERROR_IO;
}
const int kSkipBytesOfDataBox = 16;
@@ -2228,7 +2229,7 @@
mFileMetaData.setData(
kKeyAlbumArt, MetaData::TYPE_NONE,
- buffer->data() + kSkipBytesOfDataBox, chunk_data_size - kSkipBytesOfDataBox);
+ buffer.get() + kSkipBytesOfDataBox, chunk_data_size - kSkipBytesOfDataBox);
break;
}
@@ -2626,16 +2627,16 @@
keySize -= 8;
keyOffset += 8;
- sp<ABuffer> keyData = new ABuffer(keySize);
- if (keyData->data() == NULL) {
+ auto keyData = heapbuffer<uint8_t>(keySize);
+ if (keyData.get() == NULL) {
return ERROR_MALFORMED;
}
if (mDataSource->readAt(
- keyOffset, keyData->data(), keySize) < (ssize_t) keySize) {
+ keyOffset, keyData.get(), keySize) < (ssize_t) keySize) {
return ERROR_MALFORMED;
}
- AString key((const char *)keyData->data(), keySize);
+ AString key((const char *)keyData.get(), keySize);
mMetaKeyMap.add(i, key);
keyOffset += keySize;