summaryrefslogtreecommitdiffstats
path: root/camera/BufferSourceAdapter.cpp
diff options
context:
space:
mode:
authorEmilian Peev <epeev@mm-sol.com>2012-07-03 15:05:13 +0300
committerDaniel Levin <dendy@ti.com>2012-10-10 18:55:46 +0300
commitf7460dde1a455f34c6d6f7b8cde9984f4f1591de (patch)
treef269571a0e4966b11cb78eccc08f69a904e80a4e /camera/BufferSourceAdapter.cpp
parentc50511700cb0afceb049f81c24b1a42e12fd4787 (diff)
downloadhardware_ti_omap4-f7460dde1a455f34c6d6f7b8cde9984f4f1591de.tar.gz
hardware_ti_omap4-f7460dde1a455f34c6d6f7b8cde9984f4f1591de.tar.bz2
hardware_ti_omap4-f7460dde1a455f34c6d6f7b8cde9984f4f1591de.zip
Camera: Use share buffer allocator for metadata
For perfomance reasons stop parsing metadata as strings and use a common 'camera_metadata_t' structure instead. The storage behind it is backed by a shared allocator in order to propagate the data between different process address spaces efficiently. Change-Id: I960057d56440f07ffafe42d70d221c4a2b564f97 Signed-off-by: Emilian Peev <epeev@mm-sol.com> Signed-off-by: Vladimir Petrov <vppetrov@mm-sol.com>
Diffstat (limited to 'camera/BufferSourceAdapter.cpp')
-rw-r--r--camera/BufferSourceAdapter.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/camera/BufferSourceAdapter.cpp b/camera/BufferSourceAdapter.cpp
index 2f5bf4c..2874244 100644
--- a/camera/BufferSourceAdapter.cpp
+++ b/camera/BufferSourceAdapter.cpp
@@ -696,10 +696,14 @@ void BufferSourceAdapter::handleFrameCallback(CameraFrame* frame)
return;
}
- frame->mMetaData.setTime(android::CameraMetadata::KEY_TIMESTAMP, frame->mTimestamp);
- ret = mBufferSource->set_metadata(mBufferSource, frame->mMetaData.flatten().string());
- if (ret != 0) {
- CAMHAL_LOGE("Surface::set_metadata returned error %d", ret);
+ if ( NULL != frame->mMetaData ) {
+ camera_metadata_t *metaData = static_cast<camera_metadata_t *> (frame->mMetaData->data);
+ metaData->timestamp = frame->mTimestamp;
+ ret = mBufferSource->set_metadata(mBufferSource, frame->mMetaData);
+ if (ret != 0) {
+ CAMHAL_LOGE("Surface::set_metadata returned error %d", ret);
+ }
+ frame->mMetaData->release(frame->mMetaData);
}
// unlock buffer before enqueueing