diff options
author | Emilian Peev <epeev@mm-sol.com> | 2012-07-03 15:05:13 +0300 |
---|---|---|
committer | Daniel Levin <dendy@ti.com> | 2012-10-10 18:55:46 +0300 |
commit | f7460dde1a455f34c6d6f7b8cde9984f4f1591de (patch) | |
tree | f269571a0e4966b11cb78eccc08f69a904e80a4e /camera/BufferSourceAdapter.cpp | |
parent | c50511700cb0afceb049f81c24b1a42e12fd4787 (diff) | |
download | hardware_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.cpp | 12 |
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 |