summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorMathias Agopian <mathias@google.com>2013-08-02 01:38:38 -0700
committerMathias Agopian <mathias@google.com>2013-08-06 13:07:42 -0700
commit52a9a10b6b8c7b7a9f97777541841b94d4fd9754 (patch)
treeaaf72e50f157c69abc8be70991c16e93bef47fc4 /media
parent0dff7064897afd4e07993bac28ae877aaeb1b5e3 (diff)
downloadframeworks_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.cpp24
-rw-r--r--media/mca/filterfw/native/core/gl_env.cpp3
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;