summaryrefslogtreecommitdiffstats
path: root/camera/ICamera.cpp
diff options
context:
space:
mode:
authorJamie Gennis <jgennis@google.com>2010-12-20 11:51:31 -0800
committerJamie Gennis <jgennis@google.com>2011-01-06 13:31:53 -0800
commitbfa33aae4f54c0020a0568b16a3acb7b30b6ca3d (patch)
tree3dae4190516dcddec996a2b7c51b5f192c3ed4ca /camera/ICamera.cpp
parent5de2001a5c3f854b63dbcea284e02f930881ca75 (diff)
downloadframeworks_av-bfa33aae4f54c0020a0568b16a3acb7b30b6ca3d.zip
frameworks_av-bfa33aae4f54c0020a0568b16a3acb7b30b6ca3d.tar.gz
frameworks_av-bfa33aae4f54c0020a0568b16a3acb7b30b6ca3d.tar.bz2
Add camera service support for SurfaceTexture.
This change enables the use of a SurfaceTexture in place of a Surface as the destination of camera preview frames. Change-Id: Ic70d404c8fe261e9d5da6f1de93d6babb5b191cb
Diffstat (limited to 'camera/ICamera.cpp')
-rw-r--r--camera/ICamera.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/camera/ICamera.cpp b/camera/ICamera.cpp
index 7ba8d12..0881d65 100644
--- a/camera/ICamera.cpp
+++ b/camera/ICamera.cpp
@@ -28,6 +28,7 @@ namespace android {
enum {
DISCONNECT = IBinder::FIRST_CALL_TRANSACTION,
SET_PREVIEW_DISPLAY,
+ SET_PREVIEW_TEXTURE,
SET_PREVIEW_CALLBACK_FLAG,
START_PREVIEW,
STOP_PREVIEW,
@@ -78,6 +79,18 @@ public:
return reply.readInt32();
}
+ // pass the buffered SurfaceTexture to the camera service
+ status_t setPreviewTexture(const sp<ISurfaceTexture>& surfaceTexture)
+ {
+ LOGV("setPreviewTexture");
+ Parcel data, reply;
+ data.writeInterfaceToken(ICamera::getInterfaceDescriptor());
+ sp<IBinder> b(surfaceTexture->asBinder());
+ data.writeStrongBinder(b);
+ remote()->transact(SET_PREVIEW_TEXTURE, data, &reply);
+ return reply.readInt32();
+ }
+
// set the preview callback flag to affect how the received frames from
// preview are handled. See Camera.h for details.
void setPreviewCallbackFlag(int flag)
@@ -296,6 +309,13 @@ status_t BnCamera::onTransact(
reply->writeInt32(setPreviewDisplay(surface));
return NO_ERROR;
} break;
+ case SET_PREVIEW_TEXTURE: {
+ LOGV("SET_PREVIEW_TEXTURE");
+ CHECK_INTERFACE(ICamera, data, reply);
+ sp<ISurfaceTexture> st = interface_cast<ISurfaceTexture>(data.readStrongBinder());
+ reply->writeInt32(setPreviewTexture(st));
+ return NO_ERROR;
+ } break;
case SET_PREVIEW_CALLBACK_FLAG: {
LOGV("SET_PREVIEW_CALLBACK_TYPE");
CHECK_INTERFACE(ICamera, data, reply);