summaryrefslogtreecommitdiffstats
path: root/camera/IProCameraUser.cpp
diff options
context:
space:
mode:
authorIgor Murashkin <iam@google.com>2013-02-21 13:49:26 -0800
committerIgor Murashkin <iam@google.com>2013-02-22 10:50:15 -0800
commit7b33a74bbc514b99c16be7fff9a34e892bc19264 (patch)
treea3c2e719aebc4dc486312970b57c588cba8f5ce9 /camera/IProCameraUser.cpp
parenta91537e268f2b35f9f0dfdc0c4f84655c93285ae (diff)
downloadframeworks_av-7b33a74bbc514b99c16be7fff9a34e892bc19264.zip
frameworks_av-7b33a74bbc514b99c16be7fff9a34e892bc19264.tar.gz
frameworks_av-7b33a74bbc514b99c16be7fff9a34e892bc19264.tar.bz2
ProCamera: Add getInfo for getting static metadata (and a test)
Change-Id: I3b87dfbc621d98bf41f37a892a1012baf85b5166
Diffstat (limited to 'camera/IProCameraUser.cpp')
-rw-r--r--camera/IProCameraUser.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/camera/IProCameraUser.cpp b/camera/IProCameraUser.cpp
index e60cfe5..c9d98aa 100644
--- a/camera/IProCameraUser.cpp
+++ b/camera/IProCameraUser.cpp
@@ -44,6 +44,7 @@ enum {
CANCEL_STREAM,
CREATE_STREAM,
CREATE_DEFAULT_REQUEST,
+ GET_CAMERA_INFO,
};
/**
@@ -255,6 +256,17 @@ public:
}
+ virtual status_t getCameraInfo(int cameraId, camera_metadata** info)
+ {
+ Parcel data, reply;
+ data.writeInterfaceToken(IProCameraUser::getInterfaceDescriptor());
+ data.writeInt32(cameraId);
+ remote()->transact(GET_CAMERA_INFO, data, &reply);
+ readMetadata(reply, /*out*/info);
+ return reply.readInt32();
+ }
+
+
private:
@@ -367,6 +379,24 @@ status_t BnProCameraUser::onTransact(
writeMetadata(*reply, request);
reply->writeInt32(ret);
+ free_camera_metadata(request);
+
+ return NO_ERROR;
+ } break;
+ case GET_CAMERA_INFO: {
+ CHECK_INTERFACE(IProCameraUser, data, reply);
+
+ int cameraId = data.readInt32();
+
+ camera_metadata_t* info = NULL;
+ status_t ret;
+ ret = getCameraInfo(cameraId, &info);
+
+ writeMetadata(*reply, info);
+ reply->writeInt32(ret);
+
+ free_camera_metadata(info);
+
return NO_ERROR;
} break;
default: