summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/media/IOMX.h13
-rw-r--r--include/media/stagefright/SoftwareRenderer.h10
-rw-r--r--include/ui/Surface.h3
3 files changed, 22 insertions, 4 deletions
diff --git a/include/media/IOMX.h b/include/media/IOMX.h
index 0014d5c..10e0197 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/include/media/stagefright/SoftwareRenderer.h b/include/media/stagefright/SoftwareRenderer.h
index 705b914..b61858c 100644
--- a/include/media/stagefright/SoftwareRenderer.h
+++ b/include/media/stagefright/SoftwareRenderer.h
@@ -18,6 +18,7 @@
#define SOFTWARE_RENDERER_H_
+#include <OMX_Video.h>
#include <media/stagefright/VideoRenderer.h>
#include <utils/RefBase.h>
@@ -29,6 +30,7 @@ class MemoryHeapBase;
class SoftwareRenderer : public VideoRenderer {
public:
SoftwareRenderer(
+ OMX_COLOR_FORMATTYPE colorFormat,
const sp<ISurface> &surface,
size_t displayWidth, size_t displayHeight,
size_t decodedWidth, size_t decodedHeight);
@@ -39,6 +41,12 @@ public:
const void *data, size_t size, void *platformPrivate);
private:
+ uint8_t *initClip();
+
+ void renderCbYCrY(const void *data, size_t size);
+ void renderYUV420Planar(const void *data, size_t size);
+
+ OMX_COLOR_FORMATTYPE mColorFormat;
sp<ISurface> mISurface;
size_t mDisplayWidth, mDisplayHeight;
size_t mDecodedWidth, mDecodedHeight;
@@ -46,6 +54,8 @@ private:
sp<MemoryHeapBase> mMemoryHeap;
int mIndex;
+ uint8_t *mClip;
+
SoftwareRenderer(const SoftwareRenderer &);
SoftwareRenderer &operator=(const SoftwareRenderer &);
};
diff --git a/include/ui/Surface.h b/include/ui/Surface.h
index 118fb83..2cedeb6 100644
--- a/include/ui/Surface.h
+++ b/include/ui/Surface.h
@@ -212,7 +212,7 @@ private:
void setUsage(uint32_t reqUsage);
- bool getUsage(uint32_t* usage);
+ uint32_t getUsage() const;
// constants
sp<SurfaceComposerClient> mClient;
@@ -227,7 +227,6 @@ private:
// protected by mSurfaceLock
Rect mSwapRectangle;
uint32_t mUsage;
- int32_t mUsageChanged;
// protected by mSurfaceLock. These are also used from lock/unlock
// but in that case, they must be called form the same thread.