Convert MPEG2 extractor to V3 format
and move it to the media APEX.
Bug: 111407253
Test: manual, CTS
Change-Id: Ibcbdd0e901e9d79b5a857b5d0a65bd6b1ec675a6
diff --git a/media/libmediaextractor/Android.bp b/media/libmediaextractor/Android.bp
index 6f2b35f..1aa1e13 100644
--- a/media/libmediaextractor/Android.bp
+++ b/media/libmediaextractor/Android.bp
@@ -14,6 +14,15 @@
"-Wall",
],
+ static: {
+ cflags: [
+ "-Wno-multichar",
+ "-Werror",
+ "-Wall",
+ "-DNO_IMEMORY",
+ ],
+ },
+
shared_libs: [
"libbinder",
"libstagefright_foundation",
diff --git a/media/libmediaextractor/MediaBuffer.cpp b/media/libmediaextractor/MediaBuffer.cpp
index 26d0bd4..bab3a03 100644
--- a/media/libmediaextractor/MediaBuffer.cpp
+++ b/media/libmediaextractor/MediaBuffer.cpp
@@ -51,9 +51,12 @@
mRangeLength(size),
mOwnsData(true),
mMetaData(new MetaDataBase) {
+#ifndef NO_IMEMORY
if (size < kSharedMemThreshold
|| std::atomic_load_explicit(&mUseSharedMemory, std::memory_order_seq_cst) == 0) {
+#endif
mData = malloc(size);
+#ifndef NO_IMEMORY
} else {
ALOGV("creating memoryDealer");
sp<MemoryDealer> memoryDealer =
@@ -71,6 +74,7 @@
ALOGV("Allocated shared mem buffer of size %zu @ %p", size, mData);
}
}
+#endif
}
MediaBuffer::MediaBuffer(const sp<ABuffer> &buffer)
diff --git a/media/libmediaextractor/MediaBufferGroup.cpp b/media/libmediaextractor/MediaBufferGroup.cpp
index 4e6beca..e88ed5a 100644
--- a/media/libmediaextractor/MediaBufferGroup.cpp
+++ b/media/libmediaextractor/MediaBufferGroup.cpp
@@ -62,6 +62,7 @@
mInternal->mGrowthLimit = buffers;
}
+#ifndef NO_IMEMORY
if (buffer_size >= kSharedMemoryThreshold) {
ALOGD("creating MemoryDealer");
// Using a single MemoryDealer is efficient for a group of shared memory objects.
@@ -84,6 +85,9 @@
}
return;
}
+#else
+ (void)kSharedMemoryThreshold;
+#endif
// Non-shared memory allocation.
for (size_t i = 0; i < buffers; ++i) {
diff --git a/media/libmediaextractor/include/media/stagefright/MediaBuffer.h b/media/libmediaextractor/include/media/stagefright/MediaBuffer.h
index 5b362a4..ace63ae 100644
--- a/media/libmediaextractor/include/media/stagefright/MediaBuffer.h
+++ b/media/libmediaextractor/include/media/stagefright/MediaBuffer.h
@@ -46,12 +46,13 @@
explicit MediaBuffer(size_t size);
explicit MediaBuffer(const sp<ABuffer> &buffer);
-
+#ifndef NO_IMEMORY
MediaBuffer(const sp<IMemory> &mem) :
MediaBuffer((uint8_t *)mem->pointer() + sizeof(SharedControl), mem->size()) {
// delegate and override mMemory
mMemory = mem;
}
+#endif
// If MediaBufferGroup is set, decrement the local reference count;
// if the local reference count drops to 0, return the buffer to the
@@ -92,17 +93,26 @@
}
virtual int remoteRefcount() const {
+#ifndef NO_IMEMORY
if (mMemory.get() == nullptr || mMemory->pointer() == nullptr) return 0;
int32_t remoteRefcount =
reinterpret_cast<SharedControl *>(mMemory->pointer())->getRemoteRefcount();
// Sanity check so that remoteRefCount() is non-negative.
return remoteRefcount >= 0 ? remoteRefcount : 0; // do not allow corrupted data.
+#else
+ return 0;
+#endif
}
// returns old value
int addRemoteRefcount(int32_t value) {
+#ifndef NO_IMEMORY
if (mMemory.get() == nullptr || mMemory->pointer() == nullptr) return 0;
return reinterpret_cast<SharedControl *>(mMemory->pointer())->addRemoteRefcount(value);
+#else
+ (void) value;
+ return 0;
+#endif
}
bool isDeadObject() const {
@@ -110,8 +120,13 @@
}
static bool isDeadObject(const sp<IMemory> &memory) {
+#ifndef NO_IMEMORY
if (memory.get() == nullptr || memory->pointer() == nullptr) return false;
return reinterpret_cast<SharedControl *>(memory->pointer())->isDeadObject();
+#else
+ (void) memory;
+ return false;
+#endif
}
// Sticky on enabling of shared memory MediaBuffers. By default we don't use
@@ -204,7 +219,11 @@
};
inline SharedControl *getSharedControl() const {
+#ifndef NO_IMEMORY
return reinterpret_cast<SharedControl *>(mMemory->pointer());
+#else
+ return nullptr;
+#endif
}
};