summaryrefslogtreecommitdiffstats
path: root/camera/IProCameraCallbacks.cpp
diff options
context:
space:
mode:
authorIgor Murashkin <iam@google.com>2013-02-21 12:02:29 -0800
committerIgor Murashkin <iam@google.com>2013-02-22 10:50:15 -0800
commita91537e268f2b35f9f0dfdc0c4f84655c93285ae (patch)
tree114691436e16b7c8dfc5929d922712edd2c41aff /camera/IProCameraCallbacks.cpp
parenteb72e1796b3af548e87891a6d2b73b0567807f25 (diff)
downloadframeworks_av-a91537e268f2b35f9f0dfdc0c4f84655c93285ae.zip
frameworks_av-a91537e268f2b35f9f0dfdc0c4f84655c93285ae.tar.gz
frameworks_av-a91537e268f2b35f9f0dfdc0c4f84655c93285ae.tar.bz2
Camera: ProCamera - implement onResultReceived callback for metadata callbacks
Change-Id: I46775402b007244bc383d6343a620eebbd492aad
Diffstat (limited to 'camera/IProCameraCallbacks.cpp')
-rw-r--r--camera/IProCameraCallbacks.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/camera/IProCameraCallbacks.cpp b/camera/IProCameraCallbacks.cpp
index 756fba2..6cd36bf 100644
--- a/camera/IProCameraCallbacks.cpp
+++ b/camera/IProCameraCallbacks.cpp
@@ -28,6 +28,8 @@
#include <camera/IProCameraCallbacks.h>
+#include <system/camera_metadata.h>
+
namespace android {
enum {
@@ -35,8 +37,12 @@ enum {
DATA_CALLBACK,
DATA_CALLBACK_TIMESTAMP,
LOCK_STATUS_CHANGED,
+ RESULT_RECEIVED,
};
+void readMetadata(const Parcel& data, camera_metadata_t** out);
+void writeMetadata(Parcel& data, camera_metadata_t* metadata);
+
class BpProCameraCallbacks: public BpInterface<IProCameraCallbacks>
{
public:
@@ -96,6 +102,15 @@ public:
remote()->transact(LOCK_STATUS_CHANGED, data, &reply,
IBinder::FLAG_ONEWAY);
}
+
+ void onResultReceived(int32_t frameId, camera_metadata* result) {
+ ALOGV("onResultReceived");
+ Parcel data, reply;
+ data.writeInterfaceToken(IProCameraCallbacks::getInterfaceDescriptor());
+ data.writeInt32(frameId);
+ writeMetadata(data, result);
+ remote()->transact(RESULT_RECEIVED, data, &reply, IBinder::FLAG_ONEWAY);
+ }
};
IMPLEMENT_META_INTERFACE(ProCameraCallbacks,
@@ -152,6 +167,16 @@ status_t BnProCameraCallbacks::onTransact(
onLockStatusChanged(newLockStatus);
return NO_ERROR;
} break;
+ case RESULT_RECEIVED: {
+ ALOGV("RESULT_RECEIVED");
+ CHECK_INTERFACE(IProCameraCallbacks, data, reply);
+ int32_t frameId = data.readInt32();
+ camera_metadata_t *result = NULL;
+ readMetadata(data, &result);
+ onResultReceived(frameId, result);
+ return NO_ERROR;
+ break;
+ }
default:
return BBinder::onTransact(code, data, reply, flags);
}