summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Android (Google) Code Review <android-gerrit@google.com> 2009-09-15 17:48:22 -0400
committer Android (Google) Code Review <android-gerrit@google.com> 2009-09-15 17:48:22 -0400
commit0edada085e175e81b6d38a48b5b022917b410a98 (patch)
tree26b6e85cf2a29fd65bf71960f27ee17d252d4188
parent4b687f2eb5461da1d86189d19bfaaf669e24cd90 (diff)
parent9f9afef3d5da3be6812192e60797b1c035445c3c (diff)
Merge change 25101 into eclair
* changes: Added an API IOMX::createRendererFromJavaSurface.
-rw-r--r--cmds/stagefright/Android.mk2
-rw-r--r--include/media/IOMX.h13
-rw-r--r--media/libmedia/Android.mk1
-rw-r--r--media/libmedia/IOMX.cpp25
-rw-r--r--media/libmediaplayerservice/Android.mk1
-rw-r--r--media/libstagefright/Android.mk1
-rw-r--r--media/libstagefright/omx/Android.mk1
7 files changed, 42 insertions, 2 deletions
diff --git a/cmds/stagefright/Android.mk b/cmds/stagefright/Android.mk
index 39ed769a040f..5b5525240f02 100644
--- a/cmds/stagefright/Android.mk
+++ b/cmds/stagefright/Android.mk
@@ -11,6 +11,7 @@ LOCAL_SHARED_LIBRARIES := \
libstagefright
LOCAL_C_INCLUDES:= \
+ $(JNI_H_INCLUDE) \
frameworks/base/media/libstagefright \
$(TOP)/external/opencore/extern_libs_v2/khronos/openmax/include
@@ -32,6 +33,7 @@ LOCAL_SHARED_LIBRARIES := \
libstagefright
LOCAL_C_INCLUDES:= \
+ $(JNI_H_INCLUDE) \
frameworks/base/media/libstagefright \
$(TOP)/external/opencore/extern_libs_v2/khronos/openmax/include
diff --git a/include/media/IOMX.h b/include/media/IOMX.h
index 0014d5c5e3b0..10e0197b6b94 100644
--- a/include/media/IOMX.h
+++ b/include/media/IOMX.h
@@ -25,6 +25,8 @@
#include <OMX_Core.h>
#include <OMX_Video.h>
+#include "jni.h"
+
namespace android {
class IMemory;
@@ -102,15 +104,22 @@ public:
size_t encodedWidth, size_t encodedHeight,
size_t displayWidth, size_t displayHeight) = 0;
- // Note: This method is _not_ virtual, it exists as a wrapper around
+ // Note: These methods are _not_ virtual, it exists as a wrapper around
// the virtual "createRenderer" method above facilitating extraction
- // of the ISurface from a regular Surface.
+ // of the ISurface from a regular Surface or a java Surface object.
sp<IOMXRenderer> createRenderer(
const sp<Surface> &surface,
const char *componentName,
OMX_COLOR_FORMATTYPE colorFormat,
size_t encodedWidth, size_t encodedHeight,
size_t displayWidth, size_t displayHeight);
+
+ sp<IOMXRenderer> createRendererFromJavaSurface(
+ JNIEnv *env, jobject javaSurface,
+ const char *componentName,
+ OMX_COLOR_FORMATTYPE colorFormat,
+ size_t encodedWidth, size_t encodedHeight,
+ size_t displayWidth, size_t displayHeight);
};
struct omx_message {
diff --git a/media/libmedia/Android.mk b/media/libmedia/Android.mk
index 9d442c3c5850..7c01687c9ddb 100644
--- a/media/libmedia/Android.mk
+++ b/media/libmedia/Android.mk
@@ -37,6 +37,7 @@ LOCAL_SHARED_LIBRARIES += libdl
endif
LOCAL_C_INCLUDES := \
+ $(JNI_H_INCLUDE) \
$(call include-path-for, graphics corecg) \
$(TOP)/external/opencore/extern_libs_v2/khronos/openmax/include
diff --git a/media/libmedia/IOMX.cpp b/media/libmedia/IOMX.cpp
index 10bebd00cfcc..0cec7bbe8c10 100644
--- a/media/libmedia/IOMX.cpp
+++ b/media/libmedia/IOMX.cpp
@@ -45,6 +45,31 @@ sp<IOMXRenderer> IOMX::createRenderer(
displayWidth, displayHeight);
}
+sp<IOMXRenderer> IOMX::createRendererFromJavaSurface(
+ JNIEnv *env, jobject javaSurface,
+ const char *componentName,
+ OMX_COLOR_FORMATTYPE colorFormat,
+ size_t encodedWidth, size_t encodedHeight,
+ size_t displayWidth, size_t displayHeight) {
+ jclass surfaceClass = env->FindClass("android/view/Surface");
+ if (surfaceClass == NULL) {
+ LOGE("Can't find android/view/Surface");
+ return NULL;
+ }
+
+ jfieldID surfaceID = env->GetFieldID(surfaceClass, "mSurface", "I");
+ if (surfaceID == NULL) {
+ LOGE("Can't find Surface.mSurface");
+ return NULL;
+ }
+
+ sp<Surface> surface = (Surface *)env->GetIntField(javaSurface, surfaceID);
+
+ return createRenderer(
+ surface, componentName, colorFormat, encodedWidth,
+ encodedHeight, displayWidth, displayHeight);
+}
+
class BpOMX : public BpInterface<IOMX> {
public:
BpOMX(const sp<IBinder> &impl)
diff --git a/media/libmediaplayerservice/Android.mk b/media/libmediaplayerservice/Android.mk
index 93b7a3aed896..f21eb737bea6 100644
--- a/media/libmediaplayerservice/Android.mk
+++ b/media/libmediaplayerservice/Android.mk
@@ -47,6 +47,7 @@ LOCAL_SHARED_LIBRARIES += libdl
endif
LOCAL_C_INCLUDES := external/tremor/Tremor \
+ $(JNI_H_INCLUDE) \
$(call include-path-for, graphics corecg) \
$(TOP)/external/opencore/extern_libs_v2/khronos/openmax/include \
$(TOP)/frameworks/base/media/libstagefright/omx
diff --git a/media/libstagefright/Android.mk b/media/libstagefright/Android.mk
index 79a32b5de595..3c343a3103a2 100644
--- a/media/libstagefright/Android.mk
+++ b/media/libstagefright/Android.mk
@@ -38,6 +38,7 @@ LOCAL_SRC_FILES += \
endif
LOCAL_C_INCLUDES:= \
+ $(JNI_H_INCLUDE) \
$(TOP)/external/opencore/extern_libs_v2/khronos/openmax/include \
$(TOP)/external/opencore/android
diff --git a/media/libstagefright/omx/Android.mk b/media/libstagefright/omx/Android.mk
index 77e42bebedb8..4cadccd82e87 100644
--- a/media/libstagefright/omx/Android.mk
+++ b/media/libstagefright/omx/Android.mk
@@ -7,6 +7,7 @@ LOCAL_C_INCLUDES := $(PV_INCLUDES)
LOCAL_CFLAGS := $(PV_CFLAGS_MINUS_VISIBILITY)
LOCAL_C_INCLUDES += $(TOP)/hardware/ti/omap3/liboverlay
+LOCAL_C_INCLUDES += $(JNI_H_INCLUDE)
LOCAL_SRC_FILES:= \
OMX.cpp \