diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/media/IOMX.h | 13 | ||||
| -rw-r--r-- | include/media/stagefright/SoftwareRenderer.h | 10 | ||||
| -rw-r--r-- | include/ui/Surface.h | 3 |
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. |
