diff options
author | Igor Murashkin <iam@google.com> | 2013-02-21 12:02:29 -0800 |
---|---|---|
committer | Igor Murashkin <iam@google.com> | 2013-02-22 10:50:15 -0800 |
commit | a91537e268f2b35f9f0dfdc0c4f84655c93285ae (patch) | |
tree | 114691436e16b7c8dfc5929d922712edd2c41aff /camera/IProCameraCallbacks.cpp | |
parent | eb72e1796b3af548e87891a6d2b73b0567807f25 (diff) | |
download | frameworks_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.cpp | 25 |
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); } |