diff options
author | Mathias Agopian <mathias@google.com> | 2013-08-02 01:38:38 -0700 |
---|---|---|
committer | Mathias Agopian <mathias@google.com> | 2013-08-06 13:07:42 -0700 |
commit | 52a9a10b6b8c7b7a9f97777541841b94d4fd9754 (patch) | |
tree | aaf72e50f157c69abc8be70991c16e93bef47fc4 /media | |
parent | 0dff7064897afd4e07993bac28ae877aaeb1b5e3 (diff) | |
download | frameworks_base-52a9a10b6b8c7b7a9f97777541841b94d4fd9754.zip frameworks_base-52a9a10b6b8c7b7a9f97777541841b94d4fd9754.tar.gz frameworks_base-52a9a10b6b8c7b7a9f97777541841b94d4fd9754.tar.bz2 |
Clearly separate consumer and producer interfaces
Bug: 9265647
Change-Id: Ic68e91788d0a05251e1d2fb9f9d4de403c7099bf
Diffstat (limited to 'media')
-rw-r--r-- | media/jni/android_media_ImageReader.cpp | 24 | ||||
-rw-r--r-- | media/mca/filterfw/native/core/gl_env.cpp | 3 |
2 files changed, 20 insertions, 7 deletions
diff --git a/media/jni/android_media_ImageReader.cpp b/media/jni/android_media_ImageReader.cpp index ecc180c..0b429f6 100644 --- a/media/jni/android_media_ImageReader.cpp +++ b/media/jni/android_media_ImageReader.cpp @@ -78,9 +78,11 @@ public: void returnLockedBuffer(CpuConsumer::LockedBuffer* buffer); + void setCpuConsumer(const sp<CpuConsumer>& consumer) { mConsumer = consumer; } CpuConsumer* getCpuConsumer() { return mConsumer.get(); } - void setCpuConsumer(sp<CpuConsumer> consumer) { mConsumer = consumer; } + void setBufferQueue(const sp<BufferQueue>& bq) { mBufferQueue = bq; } + BufferQueue* getBufferQueue() { return mBufferQueue.get(); } void setBufferFormat(int format) { mFormat = format; } int getBufferFormat() { return mFormat; } @@ -97,6 +99,7 @@ private: List<CpuConsumer::LockedBuffer*> mBuffers; sp<CpuConsumer> mConsumer; + sp<BufferQueue> mBufferQueue; jobject mWeakThiz; jclass mClazz; int mFormat; @@ -214,6 +217,17 @@ static CpuConsumer* ImageReader_getCpuConsumer(JNIEnv* env, jobject thiz) return ctx->getCpuConsumer(); } +static BufferQueue* ImageReader_getBufferQueue(JNIEnv* env, jobject thiz) +{ + ALOGV("%s:", __FUNCTION__); + JNIImageReaderContext* const ctx = ImageReader_getContext(env, thiz); + if (ctx == NULL) { + jniThrowRuntimeException(env, "ImageReaderContext is not initialized"); + return NULL; + } + return ctx->getBufferQueue(); +} + static void ImageReader_setNativeContext(JNIEnv* env, jobject thiz, sp<JNIImageReaderContext> ctx) { @@ -609,6 +623,7 @@ static void ImageReader_init(JNIEnv* env, jobject thiz, jobject weakThiz, } sp<JNIImageReaderContext> ctx(new JNIImageReaderContext(env, weakThiz, clazz, maxImages)); ctx->setCpuConsumer(consumer); + ctx->setBufferQueue(bq); consumer->setFrameAvailableListener(ctx); ImageReader_setNativeContext(env, thiz, ctx); ctx->setBufferFormat(nativeFormat); @@ -751,15 +766,14 @@ static jobject ImageReader_getSurface(JNIEnv* env, jobject thiz) { ALOGV("%s: ", __FUNCTION__); - CpuConsumer* consumer = ImageReader_getCpuConsumer(env, thiz); - if (consumer == NULL) { + BufferQueue* bq = ImageReader_getBufferQueue(env, thiz); + if (bq == NULL) { jniThrowRuntimeException(env, "CpuConsumer is uninitialized"); return NULL; } // Wrap the IGBP in a Java-language Surface. - return android_view_Surface_createFromIGraphicBufferProducer( - env, consumer->getProducerInterface()); + return android_view_Surface_createFromIGraphicBufferProducer(env, bq); } static jobject Image_createSurfacePlane(JNIEnv* env, jobject thiz, int idx) diff --git a/media/mca/filterfw/native/core/gl_env.cpp b/media/mca/filterfw/native/core/gl_env.cpp index 63fd16e..fdecda3 100644 --- a/media/mca/filterfw/native/core/gl_env.cpp +++ b/media/mca/filterfw/native/core/gl_env.cpp @@ -162,8 +162,7 @@ bool GLEnv::InitWithNewContext() { // Create dummy surface using a GLConsumer sp<BufferQueue> bq = new BufferQueue(); surfaceTexture_ = new GLConsumer(bq, 0); - window_ = new Surface(static_cast<sp<IGraphicBufferProducer> >( - surfaceTexture_->getBufferQueue())); + window_ = new Surface(static_cast<sp<IGraphicBufferProducer> >(bq)); surfaces_[0] = SurfaceWindowPair(eglCreateWindowSurface(display(), config, window_.get(), NULL), NULL); if (CheckEGLError("eglCreateWindowSurface")) return false; |