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;