Merge "Remove MediaPlayer2"
diff --git a/apex/ld.config.txt b/apex/ld.config.txt
index af8ec06..2b5cf85 100644
--- a/apex/ld.config.txt
+++ b/apex/ld.config.txt
@@ -129,5 +129,6 @@
# namespace.sphal.link.platform.shared_libs += %SANITIZER_RUNTIME_LIBRARIES%
namespace.sphal.link.platform.shared_libs = libEGL.so:libGLESv1_CM.so:libGLESv2.so:libGLESv3.so:libRS.so:libandroid_net.so:libc.so:libcgrouprc.so:libclang_rt.asan-aarch64-android.so:libclang_rt.asan-arm-android.so:libclang_rt.hwasan-aarch64-android.so:libclang_rt.asan-i686-android.so:libclang_rt.asan-x86_64-android.so:libdl.so:libft2.so:liblog.so:libm.so:libmediandk.so:libnativewindow.so:libneuralnetworks.so:libsync.so:libvndksupport.so:libvulkan.so
-# Add a link for libz.so which is llndk on devices where VNDK is not enforced.
-namespace.sphal.link.platform.shared_libs += libz.so
+# Allow to load VNDK-SP from /system/lib. Devices where VNDK is not enforced, do
+# not have vndk-sp directories.
+namespace.sphal.link.platform.shared_libs += libz.so:android.hardware.graphics.mapper@2.0.so:libbase.so:libcutils.so:libhardware.so:libhidlbase.so:libutils.so:libc++.so
\ No newline at end of file
diff --git a/media/codec2/hidl/1.0/utils/Android.bp b/media/codec2/hidl/1.0/utils/Android.bp
index bdff29a..a2930a6 100644
--- a/media/codec2/hidl/1.0/utils/Android.bp
+++ b/media/codec2/hidl/1.0/utils/Android.bp
@@ -63,6 +63,7 @@
],
header_libs: [
+ "libbinder_headers",
"libsystem_headers",
"libcodec2_internal", // private
],
diff --git a/media/codec2/sfplugin/Android.bp b/media/codec2/sfplugin/Android.bp
index 0358d25..591088e 100644
--- a/media/codec2/sfplugin/Android.bp
+++ b/media/codec2/sfplugin/Android.bp
@@ -38,6 +38,7 @@
"libhidlallocatorutils",
"libhidlbase",
"liblog",
+ "libmedia",
"libmedia_omx",
"libsfplugin_ccodec_utils",
"libstagefright_bufferqueue_helper",
diff --git a/media/codec2/vndk/Android.bp b/media/codec2/vndk/Android.bp
index 52cc7ad..4c529a6 100644
--- a/media/codec2/vndk/Android.bp
+++ b/media/codec2/vndk/Android.bp
@@ -51,12 +51,13 @@
shared_libs: [
"android.hardware.graphics.allocator@2.0",
"android.hardware.graphics.allocator@3.0",
+ "android.hardware.graphics.allocator@4.0",
"android.hardware.graphics.bufferqueue@2.0",
"android.hardware.graphics.mapper@2.0",
"android.hardware.graphics.mapper@3.0",
+ "android.hardware.graphics.mapper@4.0",
"android.hardware.media.bufferpool@2.0",
"libbase",
- "libbinder",
"libcutils",
"libdl",
"libhardware",
diff --git a/media/codec2/vndk/C2AllocatorGralloc.cpp b/media/codec2/vndk/C2AllocatorGralloc.cpp
index af97e61..3a715b1 100644
--- a/media/codec2/vndk/C2AllocatorGralloc.cpp
+++ b/media/codec2/vndk/C2AllocatorGralloc.cpp
@@ -22,6 +22,8 @@
#include <android/hardware/graphics/mapper/2.0/IMapper.h>
#include <android/hardware/graphics/allocator/3.0/IAllocator.h>
#include <android/hardware/graphics/mapper/3.0/IMapper.h>
+#include <android/hardware/graphics/allocator/4.0/IAllocator.h>
+#include <android/hardware/graphics/mapper/4.0/IMapper.h>
#include <cutils/native_handle.h>
#include <hardware/gralloc.h>
@@ -66,6 +68,7 @@
using ::android::hardware::graphics::common::V1_0::BufferUsage;
using PixelFormat2 = ::android::hardware::graphics::common::V1_0::PixelFormat;
using PixelFormat3 = ::android::hardware::graphics::common::V1_2::PixelFormat;
+using PixelFormat4 = ::android::hardware::graphics::common::V1_2::PixelFormat;
using IAllocator2 = ::android::hardware::graphics::allocator::V2_0::IAllocator;
using BufferDescriptor2 = ::android::hardware::graphics::mapper::V2_0::BufferDescriptor;
@@ -77,6 +80,11 @@
using Error3 = ::android::hardware::graphics::mapper::V3_0::Error;
using IMapper3 = ::android::hardware::graphics::mapper::V3_0::IMapper;
+using IAllocator4 = ::android::hardware::graphics::allocator::V4_0::IAllocator;
+using BufferDescriptor4 = ::android::hardware::graphics::mapper::V4_0::BufferDescriptor;
+using Error4 = ::android::hardware::graphics::mapper::V4_0::Error;
+using IMapper4 = ::android::hardware::graphics::mapper::V4_0::IMapper;
+
namespace /* unnamed */ {
struct BufferDescriptorInfo2 {
@@ -89,6 +97,11 @@
uint32_t stride;
};
+struct BufferDescriptorInfo4 {
+ IMapper4::BufferDescriptorInfo mapperInfo;
+ uint32_t stride;
+};
+
/* ===================================== GRALLOC ALLOCATION ==================================== */
c2_status_t maperr2error(Error2 maperr) {
switch (maperr) {
@@ -114,6 +127,18 @@
return C2_CORRUPTED;
}
+c2_status_t maperr2error(Error4 maperr) {
+ switch (maperr) {
+ case Error4::NONE: return C2_OK;
+ case Error4::BAD_DESCRIPTOR: return C2_BAD_VALUE;
+ case Error4::BAD_BUFFER: return C2_BAD_VALUE;
+ case Error4::BAD_VALUE: return C2_BAD_VALUE;
+ case Error4::NO_RESOURCES: return C2_NO_MEMORY;
+ case Error4::UNSUPPORTED: return C2_CANNOT_DO;
+ }
+ return C2_CORRUPTED;
+}
+
bool native_handle_is_invalid(const native_handle_t *const handle) {
// perform basic validation of a native handle
if (handle == nullptr) {
@@ -321,6 +346,12 @@
hidl_handle &hidlHandle,
const C2HandleGralloc *const handle,
C2Allocator::id_t allocatorId);
+ C2AllocationGralloc(
+ const BufferDescriptorInfo4 &info,
+ const sp<IMapper4> &mapper,
+ hidl_handle &hidlHandle,
+ const C2HandleGralloc *const handle,
+ C2Allocator::id_t allocatorId);
int dup() const;
c2_status_t status() const;
@@ -329,6 +360,8 @@
const sp<IMapper2> mMapper2{nullptr};
const BufferDescriptorInfo3 mInfo3{};
const sp<IMapper3> mMapper3{nullptr};
+ const BufferDescriptorInfo4 mInfo4{};
+ const sp<IMapper4> mMapper4{nullptr};
const hidl_handle mHidlHandle;
const C2HandleGralloc *mHandle;
buffer_handle_t mBuffer;
@@ -372,6 +405,23 @@
mAllocatorId(allocatorId) {
}
+C2AllocationGralloc::C2AllocationGralloc(
+ const BufferDescriptorInfo4 &info,
+ const sp<IMapper4> &mapper,
+ hidl_handle &hidlHandle,
+ const C2HandleGralloc *const handle,
+ C2Allocator::id_t allocatorId)
+ : C2GraphicAllocation(info.mapperInfo.width, info.mapperInfo.height),
+ mInfo4(info),
+ mMapper4(mapper),
+ mHidlHandle(std::move(hidlHandle)),
+ mHandle(handle),
+ mBuffer(nullptr),
+ mLockedHandle(nullptr),
+ mLocked(false),
+ mAllocatorId(allocatorId) {
+}
+
C2AllocationGralloc::~C2AllocationGralloc() {
if (mBuffer && mLocked) {
// implementation ignores addresss and rect
@@ -384,12 +434,18 @@
mBuffer)).isOk()) {
ALOGE("failed transaction: freeBuffer");
}
- } else {
+ } else if (mMapper3) {
if (!mMapper3->freeBuffer(const_cast<native_handle_t *>(
mBuffer)).isOk()) {
ALOGE("failed transaction: freeBuffer");
}
+ } else {
+ if (!mMapper4->freeBuffer(const_cast<native_handle_t *>(
+ mBuffer)).isOk()) {
+ ALOGE("failed transaction: freeBuffer");
+ }
}
+
}
if (mHandle) {
native_handle_delete(
@@ -435,7 +491,7 @@
ALOGE("failed transaction: importBuffer");
return C2_CORRUPTED;
}
- } else {
+ } else if (mMapper3) {
if (!mMapper3->importBuffer(
mHidlHandle, [&err, this](const auto &maperr, const auto &buffer) {
err = maperr2error(maperr);
@@ -446,6 +502,17 @@
ALOGE("failed transaction: importBuffer (@3.0)");
return C2_CORRUPTED;
}
+ } else {
+ if (!mMapper4->importBuffer(
+ mHidlHandle, [&err, this](const auto &maperr, const auto &buffer) {
+ err = maperr2error(maperr);
+ if (err == C2_OK) {
+ mBuffer = static_cast<buffer_handle_t>(buffer);
+ }
+ }).isOk()) {
+ ALOGE("failed transaction: importBuffer (@4.0)");
+ return C2_CORRUPTED;
+ }
}
if (err != C2_OK) {
ALOGD("importBuffer failed: %d", err);
@@ -466,19 +533,29 @@
mBuffer, mInfo2.mapperInfo.width, mInfo2.mapperInfo.height,
(uint32_t)mInfo2.mapperInfo.format, mInfo2.mapperInfo.usage,
mInfo2.stride, generation, igbp_id, igbp_slot);
- } else {
+ } else if (mMapper3) {
mLockedHandle = C2HandleGralloc::WrapAndMoveNativeHandle(
mBuffer, mInfo3.mapperInfo.width, mInfo3.mapperInfo.height,
(uint32_t)mInfo3.mapperInfo.format, mInfo3.mapperInfo.usage,
mInfo3.stride, generation, igbp_id, igbp_slot);
+ } else {
+ mLockedHandle = C2HandleGralloc::WrapAndMoveNativeHandle(
+ mBuffer, mInfo4.mapperInfo.width, mInfo4.mapperInfo.height,
+ (uint32_t)mInfo4.mapperInfo.format, mInfo4.mapperInfo.usage,
+ mInfo4.stride, generation, igbp_id, igbp_slot);
}
}
- PixelFormat3 format = mMapper2 ?
- PixelFormat3(mInfo2.mapperInfo.format) :
- PixelFormat3(mInfo3.mapperInfo.format);
+ PixelFormat4 format;
+ if (mMapper2) {
+ format = PixelFormat4(mInfo2.mapperInfo.format);
+ } else if (mMapper3) {
+ format = PixelFormat4(mInfo3.mapperInfo.format);
+ } else {
+ format = PixelFormat4(mInfo4.mapperInfo.format);
+ }
switch (format) {
- case PixelFormat3::RGBA_1010102: {
+ case PixelFormat4::RGBA_1010102: {
// TRICKY: this is used for media as YUV444 in the case when it is queued directly to a
// Surface. In all other cases it is RGBA. We don't know which case it is here, so
// default to YUV for now.
@@ -500,7 +577,7 @@
ALOGE("failed transaction: lock(RGBA_1010102)");
return C2_CORRUPTED;
}
- } else {
+ } else if (mMapper3) {
if (!mMapper3->lock(
const_cast<native_handle_t *>(mBuffer),
grallocUsage,
@@ -520,6 +597,26 @@
ALOGE("failed transaction: lock(RGBA_1010102) (@3.0)");
return C2_CORRUPTED;
}
+ } else {
+ if (!mMapper4->lock(
+ const_cast<native_handle_t *>(mBuffer),
+ grallocUsage,
+ { (int32_t)rect.left, (int32_t)rect.top,
+ (int32_t)rect.width, (int32_t)rect.height },
+ // TODO: fence
+ hidl_handle(),
+ [&err, &pointer](const auto &maperr, const auto &mapPointer,
+ int32_t bytesPerPixel, int32_t bytesPerStride) {
+ err = maperr2error(maperr);
+ if (err == C2_OK) {
+ pointer = mapPointer;
+ }
+ (void)bytesPerPixel;
+ (void)bytesPerStride;
+ }).isOk()) {
+ ALOGE("failed transaction: lock(RGBA_1010102) (@4.0)");
+ return C2_CORRUPTED;
+ }
}
if (err != C2_OK) {
ALOGD("lock failed: %d", err);
@@ -533,9 +630,14 @@
layout->type = C2PlanarLayout::TYPE_YUVA;
layout->numPlanes = 4;
layout->rootPlanes = 1;
- int32_t stride = mMapper2 ?
- int32_t(mInfo2.stride) :
- int32_t(mInfo3.stride);
+ int32_t stride;
+ if (mMapper2) {
+ stride = int32_t(mInfo2.stride);
+ } if (mMapper3) {
+ stride = int32_t(mInfo3.stride);
+ } else {
+ stride = int32_t(mInfo4.stride);
+ }
layout->planes[C2PlanarLayout::PLANE_Y] = {
C2PlaneInfo::CHANNEL_Y, // channel
4, // colInc
@@ -591,10 +693,10 @@
break;
}
- case PixelFormat3::RGBA_8888:
+ case PixelFormat4::RGBA_8888:
// TODO: alpha channel
// fall-through
- case PixelFormat3::RGBX_8888: {
+ case PixelFormat4::RGBX_8888: {
void *pointer = nullptr;
if (mMapper2) {
if (!mMapper2->lock(
@@ -613,7 +715,7 @@
ALOGE("failed transaction: lock(RGBA_8888)");
return C2_CORRUPTED;
}
- } else {
+ } else if (mMapper3) {
if (!mMapper3->lock(
const_cast<native_handle_t *>(mBuffer),
grallocUsage,
@@ -633,6 +735,26 @@
ALOGE("failed transaction: lock(RGBA_8888) (@3.0)");
return C2_CORRUPTED;
}
+ } else {
+ if (!mMapper4->lock(
+ const_cast<native_handle_t *>(mBuffer),
+ grallocUsage,
+ { (int32_t)rect.left, (int32_t)rect.top,
+ (int32_t)rect.width, (int32_t)rect.height },
+ // TODO: fence
+ hidl_handle(),
+ [&err, &pointer](const auto &maperr, const auto &mapPointer,
+ int32_t bytesPerPixel, int32_t bytesPerStride) {
+ err = maperr2error(maperr);
+ if (err == C2_OK) {
+ pointer = mapPointer;
+ }
+ (void)bytesPerPixel;
+ (void)bytesPerStride;
+ }).isOk()) {
+ ALOGE("failed transaction: lock(RGBA_8888) (@4.0)");
+ return C2_CORRUPTED;
+ }
}
if (err != C2_OK) {
ALOGD("lock failed: %d", err);
@@ -644,9 +766,14 @@
layout->type = C2PlanarLayout::TYPE_RGB;
layout->numPlanes = 3;
layout->rootPlanes = 1;
- int32_t stride = mMapper2 ?
- int32_t(mInfo2.stride) :
- int32_t(mInfo3.stride);
+ int32_t stride;
+ if (mMapper2) {
+ stride = int32_t(mInfo2.stride);
+ } if (mMapper3) {
+ stride = int32_t(mInfo3.stride);
+ } else {
+ stride = int32_t(mInfo4.stride);
+ }
layout->planes[C2PlanarLayout::PLANE_R] = {
C2PlaneInfo::CHANNEL_R, // channel
4, // colInc
@@ -689,9 +816,9 @@
break;
}
- case PixelFormat3::YCBCR_420_888:
+ case PixelFormat4::YCBCR_420_888:
// fall-through
- case PixelFormat3::YV12:
+ case PixelFormat4::YV12:
// fall-through
default: {
struct YCbCrLayout {
@@ -725,7 +852,7 @@
ALOGE("failed transaction: lockYCbCr");
return C2_CORRUPTED;
}
- } else {
+ } else if (mMapper3) {
if (!mMapper3->lockYCbCr(
const_cast<native_handle_t *>(mBuffer), grallocUsage,
{ (int32_t)rect.left, (int32_t)rect.top,
@@ -747,6 +874,28 @@
ALOGE("failed transaction: lockYCbCr (@3.0)");
return C2_CORRUPTED;
}
+ } else {
+ if (!mMapper4->lockYCbCr(
+ const_cast<native_handle_t *>(mBuffer), grallocUsage,
+ { (int32_t)rect.left, (int32_t)rect.top,
+ (int32_t)rect.width, (int32_t)rect.height },
+ // TODO: fence
+ hidl_handle(),
+ [&err, &ycbcrLayout](const auto &maperr, const auto &mapLayout) {
+ err = maperr2error(maperr);
+ if (err == C2_OK) {
+ ycbcrLayout = YCbCrLayout{
+ mapLayout.y,
+ mapLayout.cb,
+ mapLayout.cr,
+ mapLayout.yStride,
+ mapLayout.cStride,
+ mapLayout.chromaStep};
+ }
+ }).isOk()) {
+ ALOGE("failed transaction: lockYCbCr (@4.0)");
+ return C2_CORRUPTED;
+ }
}
if (err != C2_OK) {
ALOGD("lockYCbCr failed: %d", err);
@@ -839,7 +988,7 @@
ALOGE("failed transaction: unlock");
return C2_CORRUPTED;
}
- } else {
+ } else if (mMapper3) {
if (!mMapper3->unlock(
const_cast<native_handle_t *>(mBuffer),
[&err, &fence](const auto &maperr, const auto &releaseFence) {
@@ -854,6 +1003,21 @@
ALOGE("failed transaction: unlock (@3.0)");
return C2_CORRUPTED;
}
+ } else {
+ if (!mMapper4->unlock(
+ const_cast<native_handle_t *>(mBuffer),
+ [&err, &fence](const auto &maperr, const auto &releaseFence) {
+ // TODO
+ (void) fence;
+ (void) releaseFence;
+ err = maperr2error(maperr);
+ if (err == C2_OK) {
+ // TODO: fence
+ }
+ }).isOk()) {
+ ALOGE("failed transaction: unlock (@4.0)");
+ return C2_CORRUPTED;
+ }
}
if (err == C2_OK) {
mLocked = false;
@@ -899,6 +1063,8 @@
sp<IMapper2> mMapper2;
sp<IAllocator3> mAllocator3;
sp<IMapper3> mMapper3;
+ sp<IAllocator4> mAllocator4;
+ sp<IMapper4> mMapper4;
const bool mBufferQueue;
};
@@ -918,17 +1084,23 @@
mTraits = std::make_shared<C2Allocator::Traits>(traits);
// gralloc allocator is a singleton, so all objects share a global service
- mAllocator3 = IAllocator3::getService();
- mMapper3 = IMapper3::getService();
- if (!mAllocator3 || !mMapper3) {
- mAllocator3 = nullptr;
- mMapper3 = nullptr;
- mAllocator2 = IAllocator2::getService();
- mMapper2 = IMapper2::getService();
- if (!mAllocator2 || !mMapper2) {
- mAllocator2 = nullptr;
- mMapper2 = nullptr;
- mInit = C2_CORRUPTED;
+ mAllocator4 = IAllocator4::getService();
+ mMapper4 = IMapper4::getService();
+ if (!mAllocator4 || !mMapper4) {
+ mAllocator4 = nullptr;
+ mMapper4 = nullptr;
+ mAllocator3 = IAllocator3::getService();
+ mMapper3 = IMapper3::getService();
+ if (!mAllocator3 || !mMapper3) {
+ mAllocator3 = nullptr;
+ mMapper3 = nullptr;
+ mAllocator2 = IAllocator2::getService();
+ mMapper2 = IMapper2::getService();
+ if (!mAllocator2 || !mMapper2) {
+ mAllocator2 = nullptr;
+ mMapper2 = nullptr;
+ mInit = C2_CORRUPTED;
+ }
}
}
}
@@ -1000,13 +1172,13 @@
0, 0, mBufferQueue ? ~0 : 0),
mTraits->id));
return C2_OK;
- } else {
+ } else if (mMapper3) {
BufferDescriptorInfo3 info = {
{
width,
height,
1u, // layerCount
- PixelFormat3(format),
+ PixelFormat4(format),
grallocUsage,
},
0u, // stride placeholder
@@ -1057,6 +1229,63 @@
0, 0, mBufferQueue ? ~0 : 0),
mTraits->id));
return C2_OK;
+ } else {
+ BufferDescriptorInfo4 info = {
+ {
+ width,
+ height,
+ 1u, // layerCount
+ PixelFormat4(format),
+ grallocUsage,
+ },
+ 0u, // stride placeholder
+ };
+ BufferDescriptor4 desc;
+ if (!mMapper4->createDescriptor(
+ info.mapperInfo, [&err, &desc](const auto &maperr, const auto &descriptor) {
+ err = maperr2error(maperr);
+ if (err == C2_OK) {
+ desc = descriptor;
+ }
+ }).isOk()) {
+ ALOGE("failed transaction: createDescriptor");
+ return C2_CORRUPTED;
+ }
+ if (err != C2_OK) {
+ return err;
+ }
+
+ // IAllocator shares IMapper error codes.
+ if (!mAllocator4->allocate(
+ desc,
+ 1u,
+ [&err, &buffer, &info](const auto &maperr, const auto &stride, auto &buffers) {
+ err = maperr2error(maperr);
+ if (err != C2_OK) {
+ return;
+ }
+ if (buffers.size() != 1u) {
+ err = C2_CORRUPTED;
+ return;
+ }
+ info.stride = stride;
+ buffer = buffers[0];
+ }).isOk()) {
+ ALOGE("failed transaction: allocate");
+ return C2_CORRUPTED;
+ }
+ if (err != C2_OK) {
+ return err;
+ }
+ allocation->reset(new C2AllocationGralloc(
+ info, mMapper4, buffer,
+ C2HandleGralloc::WrapAndMoveNativeHandle(
+ buffer.getNativeHandle(),
+ width, height,
+ format, grallocUsage, info.stride,
+ 0, 0, mBufferQueue ? ~0 : 0),
+ mTraits->id));
+ return C2_OK;
}
}
@@ -1086,7 +1315,7 @@
allocation->reset(new C2AllocationGralloc(
info, mMapper2, hidlHandle, grallocHandle, mTraits->id));
return C2_OK;
- } else {
+ } else if (mMapper3) {
BufferDescriptorInfo3 info;
info.mapperInfo.layerCount = 1u;
uint32_t generation;
@@ -1109,6 +1338,29 @@
allocation->reset(new C2AllocationGralloc(
info, mMapper3, hidlHandle, grallocHandle, mTraits->id));
return C2_OK;
+ } else {
+ BufferDescriptorInfo4 info;
+ info.mapperInfo.layerCount = 1u;
+ uint32_t generation;
+ uint64_t igbp_id;
+ uint32_t igbp_slot;
+ const C2HandleGralloc *grallocHandle = C2HandleGralloc::Import(
+ handle,
+ &info.mapperInfo.width, &info.mapperInfo.height,
+ (uint32_t *)&info.mapperInfo.format,
+ (uint64_t *)&info.mapperInfo.usage,
+ &info.stride,
+ &generation, &igbp_id, &igbp_slot);
+ if (grallocHandle == nullptr) {
+ return C2_BAD_VALUE;
+ }
+
+ hidl_handle hidlHandle;
+ hidlHandle.setTo(C2HandleGralloc::UnwrapNativeHandle(grallocHandle), true);
+
+ allocation->reset(new C2AllocationGralloc(
+ info, mMapper4, hidlHandle, grallocHandle, mTraits->id));
+ return C2_OK;
}
}
diff --git a/media/libmedia/Android.bp b/media/libmedia/Android.bp
index 8de6381..81291a1 100644
--- a/media/libmedia/Android.bp
+++ b/media/libmedia/Android.bp
@@ -60,10 +60,8 @@
srcs: [
":libmedia_omx_aidl",
- "IMediaCodecList.cpp",
"IOMX.cpp",
"MediaCodecBuffer.cpp",
- "MediaCodecInfo.cpp",
"OMXBuffer.cpp",
"omx/1.0/WGraphicBufferSource.cpp",
"omx/1.0/WOmxBufferSource.cpp",
@@ -224,6 +222,7 @@
"IDataSource.cpp",
"BufferingSettings.cpp",
"mediaplayer.cpp",
+ "IMediaCodecList.cpp",
"IMediaHTTPConnection.cpp",
"IMediaHTTPService.cpp",
"IMediaExtractor.cpp",
@@ -239,6 +238,7 @@
"IResourceManagerClient.cpp",
"IResourceManagerService.cpp",
"IStreamSource.cpp",
+ "MediaCodecInfo.cpp",
"MediaUtils.cpp",
"Metadata.cpp",
"mediarecorder.cpp",
diff --git a/media/libstagefright/Android.bp b/media/libstagefright/Android.bp
index 400b113..bfe2259 100644
--- a/media/libstagefright/Android.bp
+++ b/media/libstagefright/Android.bp
@@ -61,7 +61,7 @@
shared_libs: [
"libgui",
"liblog",
- "libmedia_omx",
+ "libmedia",
"libstagefright_foundation",
"libui",
"libutils",
diff --git a/media/libstagefright/codecs/on2/enc/Android.bp b/media/libstagefright/codecs/on2/enc/Android.bp
index cd69e0d..705e554 100644
--- a/media/libstagefright/codecs/on2/enc/Android.bp
+++ b/media/libstagefright/codecs/on2/enc/Android.bp
@@ -21,4 +21,5 @@
},
shared_libs: ["libvpx"],
+ header_libs: ["libbase_headers"],
}
diff --git a/media/libstagefright/foundation/AMessage.cpp b/media/libstagefright/foundation/AMessage.cpp
index df66ac6..7752bda 100644
--- a/media/libstagefright/foundation/AMessage.cpp
+++ b/media/libstagefright/foundation/AMessage.cpp
@@ -22,7 +22,6 @@
#include "AMessage.h"
-#include <binder/Parcel.h>
#include <log/log.h>
#include "AAtomizer.h"
@@ -34,6 +33,10 @@
#include <media/stagefright/foundation/hexdump.h>
+#ifndef __ANDROID_VNDK__
+#include <binder/Parcel.h>
+#endif
+
namespace android {
extern ALooperRoster gLooperRoster;
@@ -643,6 +646,7 @@
return s;
}
+#ifndef __ANDROID_VNDK__
// static
sp<AMessage> AMessage::FromParcel(const Parcel &parcel, size_t maxNestingLevel) {
int32_t what = parcel.readInt32();
@@ -809,6 +813,7 @@
}
}
}
+#endif // __ANDROID_VNDK__
sp<AMessage> AMessage::changesFrom(const sp<const AMessage> &other, bool deep) const {
if (other == NULL) {
diff --git a/media/libstagefright/foundation/AString.cpp b/media/libstagefright/foundation/AString.cpp
index a8adff5..4bd186c 100644
--- a/media/libstagefright/foundation/AString.cpp
+++ b/media/libstagefright/foundation/AString.cpp
@@ -23,11 +23,14 @@
#include <stdlib.h>
#include <string.h>
-#include <binder/Parcel.h>
#include <utils/String8.h>
#include "ADebug.h"
#include "AString.h"
+#ifndef __ANDROID_VNDK__
+#include <binder/Parcel.h>
+#endif
+
namespace android {
// static
@@ -362,6 +365,7 @@
return !strcasecmp(mData + mSize - suffixLen, suffix);
}
+#ifndef __ANDROID_VNDK__
// static
AString AString::FromParcel(const Parcel &parcel) {
size_t size = static_cast<size_t>(parcel.readInt32());
@@ -376,6 +380,7 @@
}
return err;
}
+#endif
AString AStringPrintf(const char *format, ...) {
va_list ap;
diff --git a/media/libstagefright/foundation/Android.bp b/media/libstagefright/foundation/Android.bp
index 533cd72..4b88ae4 100644
--- a/media/libstagefright/foundation/Android.bp
+++ b/media/libstagefright/foundation/Android.bp
@@ -78,6 +78,17 @@
"hexdump.cpp",
],
+ target: {
+ vendor: {
+ exclude_shared_libs: [
+ "libbinder",
+ ],
+ cflags: [
+ "-DNO_IMEMORY",
+ ],
+ },
+ },
+
clang: true,
sanitize: {
diff --git a/media/libstagefright/foundation/MetaData.cpp b/media/libstagefright/foundation/MetaData.cpp
index 1d0a607..8174597 100644
--- a/media/libstagefright/foundation/MetaData.cpp
+++ b/media/libstagefright/foundation/MetaData.cpp
@@ -17,7 +17,6 @@
//#define LOG_NDEBUG 0
#define LOG_TAG "MetaData"
#include <inttypes.h>
-#include <binder/Parcel.h>
#include <utils/KeyedVector.h>
#include <utils/Log.h>
@@ -29,6 +28,10 @@
#include <media/stagefright/foundation/hexdump.h>
#include <media/stagefright/MetaData.h>
+#ifndef __ANDROID_VNDK__
+#include <binder/Parcel.h>
+#endif
+
namespace android {
@@ -45,6 +48,7 @@
MetaData::~MetaData() {
}
+#ifndef __ANDROID_VNDK__
/* static */
sp<MetaData> MetaData::createFromParcel(const Parcel &parcel) {
@@ -52,6 +56,7 @@
meta->updateFromParcel(parcel);
return meta;
}
+#endif
} // namespace android
diff --git a/media/libstagefright/foundation/MetaDataBase.cpp b/media/libstagefright/foundation/MetaDataBase.cpp
index bfea6f1..4b439c6 100644
--- a/media/libstagefright/foundation/MetaDataBase.cpp
+++ b/media/libstagefright/foundation/MetaDataBase.cpp
@@ -17,7 +17,6 @@
//#define LOG_NDEBUG 0
#define LOG_TAG "MetaDataBase"
#include <inttypes.h>
-#include <binder/Parcel.h>
#include <utils/KeyedVector.h>
#include <utils/Log.h>
@@ -29,6 +28,10 @@
#include <media/stagefright/foundation/hexdump.h>
#include <media/stagefright/MetaDataBase.h>
+#ifndef __ANDROID_VNDK__
+#include <binder/Parcel.h>
+#endif
+
namespace android {
struct MetaDataBase::typed_data {
@@ -449,6 +452,7 @@
}
}
+#ifndef __ANDROID_VNDK__
status_t MetaDataBase::writeToParcel(Parcel &parcel) {
status_t ret;
size_t numItems = mInternalData->mItems.size();
@@ -528,6 +532,7 @@
ALOGW("no metadata in parcel");
return UNKNOWN_ERROR;
}
+#endif
} // namespace android
diff --git a/media/libstagefright/foundation/include/media/stagefright/foundation/AMessage.h b/media/libstagefright/foundation/include/media/stagefright/foundation/AMessage.h
index 742651e..b5d6666 100644
--- a/media/libstagefright/foundation/include/media/stagefright/foundation/AMessage.h
+++ b/media/libstagefright/foundation/include/media/stagefright/foundation/AMessage.h
@@ -63,6 +63,7 @@
AMessage();
AMessage(uint32_t what, const sp<const AHandler> &handler);
+#ifndef __ANDROID_VNDK__
// Construct an AMessage from a parcel.
// nestingAllowed determines how many levels AMessage can be nested inside
// AMessage. The default value here is arbitrarily set to 255.
@@ -87,6 +88,7 @@
// All items in the AMessage must have types that are recognized by
// FromParcel(); otherwise, TRESPASS error will occur.
void writeToParcel(Parcel *parcel) const;
+#endif
void setWhat(uint32_t what);
uint32_t what() const;
diff --git a/media/libstagefright/foundation/include/media/stagefright/foundation/AString.h b/media/libstagefright/foundation/include/media/stagefright/foundation/AString.h
index 0f6299c..deef0d4 100644
--- a/media/libstagefright/foundation/include/media/stagefright/foundation/AString.h
+++ b/media/libstagefright/foundation/include/media/stagefright/foundation/AString.h
@@ -89,8 +89,10 @@
void tolower();
+#ifndef __ANDROID_VNDK__
static AString FromParcel(const Parcel &parcel);
status_t writeToParcel(Parcel *parcel) const;
+#endif
private:
constexpr static const char *kEmptyString = "";
diff --git a/media/libstagefright/include/media/stagefright/MetaData.h b/media/libstagefright/include/media/stagefright/MetaData.h
index f625358..68adf346 100644
--- a/media/libstagefright/include/media/stagefright/MetaData.h
+++ b/media/libstagefright/include/media/stagefright/MetaData.h
@@ -41,7 +41,9 @@
friend class BnMediaSource;
friend class BpMediaSource;
friend class BpMediaExtractor;
+#ifndef __ANDROID_VNDK__
static sp<MetaData> createFromParcel(const Parcel &parcel);
+#endif
};
} // namespace android
diff --git a/media/libstagefright/include/media/stagefright/MetaDataBase.h b/media/libstagefright/include/media/stagefright/MetaDataBase.h
index 8dc2dd5..659bd5b 100644
--- a/media/libstagefright/include/media/stagefright/MetaDataBase.h
+++ b/media/libstagefright/include/media/stagefright/MetaDataBase.h
@@ -319,8 +319,10 @@
struct Rect;
struct MetaDataInternal;
MetaDataInternal *mInternalData;
+#ifndef __ANDROID_VNDK__
status_t writeToParcel(Parcel &parcel);
status_t updateFromParcel(const Parcel &parcel);
+#endif
};
} // namespace android