summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndy Hung <hunga@google.com>2014-05-13 18:37:59 -0700
committerAndy Hung <hunga@google.com>2014-05-14 20:28:49 -0700
commitf87e30fe71752dc431d8e8d5682c38271c03265a (patch)
tree1b326dde24b25962ee7a337fe723bef42ff76525
parent609b815a3131d22da38b2f452faa9f89daad4039 (diff)
downloadframeworks_av-f87e30fe71752dc431d8e8d5682c38271c03265a.zip
frameworks_av-f87e30fe71752dc431d8e8d5682c38271c03265a.tar.gz
frameworks_av-f87e30fe71752dc431d8e8d5682c38271c03265a.tar.bz2
Send 64 bit OMX codec handling to 32 bit MediaServer
This is a temporary fix for 64 bit OMX handling until 64 bit codecs are more robust. Bug: 13938273 Change-Id: Ifc79e360f9606f6c909b859d322b7dd5d416b26b Signed-off-by: Andy Hung <hunga@google.com>
-rw-r--r--media/libstagefright/ACodec.cpp4
-rw-r--r--media/libstagefright/OMXClient.cpp12
-rw-r--r--media/libstagefright/OMXCodec.cpp6
3 files changed, 22 insertions, 0 deletions
diff --git a/media/libstagefright/ACodec.cpp b/media/libstagefright/ACodec.cpp
index 0fe7ff2..4f66402 100644
--- a/media/libstagefright/ACodec.cpp
+++ b/media/libstagefright/ACodec.cpp
@@ -17,6 +17,10 @@
//#define LOG_NDEBUG 0
#define LOG_TAG "ACodec"
+#ifdef __LP64__
+#define OMX_ANDROID_COMPILE_AS_32BIT_ON_64BIT_PLATFORMS
+#endif
+
#include <inttypes.h>
#include <utils/Trace.h>
diff --git a/media/libstagefright/OMXClient.cpp b/media/libstagefright/OMXClient.cpp
index 72f2306..aca21cf 100644
--- a/media/libstagefright/OMXClient.cpp
+++ b/media/libstagefright/OMXClient.cpp
@@ -16,6 +16,11 @@
//#define LOG_NDEBUG 0
#define LOG_TAG "OMXClient"
+
+#ifdef __LP64__
+#define OMX_ANDROID_COMPILE_AS_32BIT_ON_64BIT_PLATFORMS
+#endif
+
#include <utils/Log.h>
#include <binder/IServiceManager.h>
@@ -165,7 +170,14 @@ bool MuxOMX::isLocalNode_l(node_id node) const {
// static
bool MuxOMX::CanLiveLocally(const char *name) {
+#ifdef __LP64__
+ (void)name; // disable unused parameter warning
+ // 64 bit processes always run OMX remote on MediaServer
+ return false;
+#else
+ // 32 bit processes run only OMX.google.* components locally
return !strncasecmp(name, "OMX.google.", 11);
+#endif
}
const sp<IOMX> &MuxOMX::getOMX(node_id node) const {
diff --git a/media/libstagefright/OMXCodec.cpp b/media/libstagefright/OMXCodec.cpp
index f248861..c028dbf 100644
--- a/media/libstagefright/OMXCodec.cpp
+++ b/media/libstagefright/OMXCodec.cpp
@@ -18,6 +18,11 @@
//#define LOG_NDEBUG 0
#define LOG_TAG "OMXCodec"
+
+#ifdef __LP64__
+#define OMX_ANDROID_COMPILE_AS_32BIT_ON_64BIT_PLATFORMS
+#endif
+
#include <utils/Log.h>
#include "include/AACEncoder.h"
@@ -130,6 +135,7 @@ private:
template<class T>
static void InitOMXParams(T *params) {
+ COMPILE_TIME_ASSERT_FUNCTION_SCOPE(sizeof(OMX_PTR) == 4); // check OMX_PTR is 4 bytes.
params->nSize = sizeof(T);
params->nVersion.s.nVersionMajor = 1;
params->nVersion.s.nVersionMinor = 0;