summaryrefslogtreecommitdiffstats
path: root/camera/ICamera.cpp
diff options
context:
space:
mode:
authorEino-Ville Talvala <etalvala@google.com>2013-04-02 15:45:11 -0700
committerEino-Ville Talvala <etalvala@google.com>2013-04-17 15:01:08 -0700
commit3ee3550a2f529cbf56d87d8503f59a8f45dccf32 (patch)
tree99bf718ddc0429a1319523abaae975d3305face3 /camera/ICamera.cpp
parentd72ec85d1d0b92ed82927e3925f21912a659b799 (diff)
downloadframeworks_av-3ee3550a2f529cbf56d87d8503f59a8f45dccf32.zip
frameworks_av-3ee3550a2f529cbf56d87d8503f59a8f45dccf32.tar.gz
frameworks_av-3ee3550a2f529cbf56d87d8503f59a8f45dccf32.tar.bz2
Camera: Add preview callback surface support
- Add call to set a preview callback surface - Implement support for HAL2/3 devices - Still need HAL1 implementation Change-Id: I0dc0bd72e43d871aa487858d1665c1efca633ffe
Diffstat (limited to 'camera/ICamera.cpp')
-rw-r--r--camera/ICamera.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/camera/ICamera.cpp b/camera/ICamera.cpp
index 8900867..732c204 100644
--- a/camera/ICamera.cpp
+++ b/camera/ICamera.cpp
@@ -31,6 +31,7 @@ enum {
DISCONNECT = IBinder::FIRST_CALL_TRANSACTION,
SET_PREVIEW_TEXTURE,
SET_PREVIEW_CALLBACK_FLAG,
+ SET_PREVIEW_CALLBACK_TARGET,
START_PREVIEW,
STOP_PREVIEW,
AUTO_FOCUS,
@@ -90,6 +91,18 @@ public:
remote()->transact(SET_PREVIEW_CALLBACK_FLAG, data, &reply);
}
+ status_t setPreviewCallbackTarget(
+ const sp<IGraphicBufferProducer>& callbackProducer)
+ {
+ ALOGV("setPreviewCallbackTarget");
+ Parcel data, reply;
+ data.writeInterfaceToken(ICamera::getInterfaceDescriptor());
+ sp<IBinder> b(callbackProducer->asBinder());
+ data.writeStrongBinder(b);
+ remote()->transact(SET_PREVIEW_CALLBACK_TARGET, data, &reply);
+ return reply.readInt32();
+ }
+
// start preview mode, must call setPreviewDisplay first
status_t startPreview()
{
@@ -285,6 +298,14 @@ status_t BnCamera::onTransact(
setPreviewCallbackFlag(callback_flag);
return NO_ERROR;
} break;
+ case SET_PREVIEW_CALLBACK_TARGET: {
+ ALOGV("SET_PREVIEW_CALLBACK_TARGET");
+ CHECK_INTERFACE(ICamera, data, reply);
+ sp<IGraphicBufferProducer> cp =
+ interface_cast<IGraphicBufferProducer>(data.readStrongBinder());
+ reply->writeInt32(setPreviewCallbackTarget(cp));
+ return NO_ERROR;
+ }
case START_PREVIEW: {
ALOGV("START_PREVIEW");
CHECK_INTERFACE(ICamera, data, reply);