diff options
author | Sauhard Pande <sauhardp@codeaurora.org> | 2017-05-11 19:51:00 +0530 |
---|---|---|
committer | Abhinav Sohane <asohan@codeaurora.org> | 2018-04-12 16:56:16 +0530 |
commit | 0a955124350cda278d1db13e057b193b647d75af (patch) | |
tree | 87428303e17d536e496a93b1aa7efcda9a02b0c2 /camera/device/1.0/default/CameraDevice.cpp | |
parent | 2ca28625680bb595b2bcf254360e4893a2a62060 (diff) |
Camed HAL extension: Added support in HIDL for Extended FD.
Made changes in camera.device@1.0-impl
1) Included extended HIDL extension files types.hal and
IQCameraDeviceCallback.hal.
2) Added mQDeviceCallback to get the interface extended callbacks
defined in CameraHardwareInterface.
3) Changes in sDataCb for coppying extra fields of QCameraFrameMetadata,
if extended callback is present else do normal callback to support
default implementation.
CRs-Fixed:2053749
Change-Id: I4f691342d4a0e53a4949c141ed1f7865f5450c8c
Diffstat (limited to 'camera/device/1.0/default/CameraDevice.cpp')
-rw-r--r-- | camera/device/1.0/default/CameraDevice.cpp | 91 |
1 files changed, 67 insertions, 24 deletions
diff --git a/camera/device/1.0/default/CameraDevice.cpp b/camera/device/1.0/default/CameraDevice.cpp index a03bbc8670..938697be87 100644 --- a/camera/device/1.0/default/CameraDevice.cpp +++ b/camera/device/1.0/default/CameraDevice.cpp @@ -428,30 +428,68 @@ void CameraDevice::sDataCb(int32_t msg_type, const camera_memory_t *data, unsign index, mem->mNumBufs); return; } - if (object->mDeviceCallback != nullptr) { - CameraFrameMetadata hidlMetadata; - if (metadata) { - hidlMetadata.faces.resize(metadata->number_of_faces); - for (size_t i = 0; i < hidlMetadata.faces.size(); i++) { - hidlMetadata.faces[i].score = metadata->faces[i].score; - hidlMetadata.faces[i].id = metadata->faces[i].id; - for (int k = 0; k < 4; k++) { - hidlMetadata.faces[i].rect[k] = metadata->faces[i].rect[k]; - } - for (int k = 0; k < 2; k++) { - hidlMetadata.faces[i].leftEye[k] = metadata->faces[i].left_eye[k]; - } - for (int k = 0; k < 2; k++) { - hidlMetadata.faces[i].rightEye[k] = metadata->faces[i].right_eye[k]; - } - for (int k = 0; k < 2; k++) { - hidlMetadata.faces[i].mouth[k] = metadata->faces[i].mouth[k]; - } - } - } - CameraHeapMemory* mem = static_cast<CameraHeapMemory *>(data->handle); - object->mDeviceCallback->dataCallback( - (DataCallbackMsg) msg_type, mem->handle.mId, index, hidlMetadata); + if(object->mQDeviceCallback != nullptr) { + vendor::qti::hardware::camera::device::V1_0::QCameraFrameMetadata hidlMetadata; + if (metadata) { + hidlMetadata.faces.resize(metadata->number_of_faces); + for (size_t i = 0; i < hidlMetadata.faces.size(); i++) { + hidlMetadata.faces[i].score = metadata->faces[i].score; + hidlMetadata.faces[i].id = metadata->faces[i].id; + for (int k = 0; k < 4; k++) { + hidlMetadata.faces[i].rect[k] = metadata->faces[i].rect[k]; + } + for (int k = 0; k < 2; k++) { + hidlMetadata.faces[i].leftEye[k] = metadata->faces[i].left_eye[k]; + } + for (int k = 0; k < 2; k++) { + hidlMetadata.faces[i].rightEye[k] = metadata->faces[i].right_eye[k]; + } + for (int k = 0; k < 2; k++) { + hidlMetadata.faces[i].mouth[k] = metadata->faces[i].mouth[k]; + } + hidlMetadata.faces[i].smile_degree = metadata->faces[i].smile_degree; + hidlMetadata.faces[i].smile_score = metadata->faces[i].smile_score; + hidlMetadata.faces[i].blink_detected = metadata->faces[i].blink_detected; + hidlMetadata.faces[i].face_recognised = metadata->faces[i].face_recognised; + hidlMetadata.faces[i].gaze_angle = metadata->faces[i].gaze_angle; + hidlMetadata.faces[i].updown_dir = metadata->faces[i].updown_dir; + hidlMetadata.faces[i].leftright_dir = metadata->faces[i].leftright_dir; + hidlMetadata.faces[i].roll_dir = metadata->faces[i].roll_dir; + hidlMetadata.faces[i].left_right_gaze = metadata->faces[i].left_right_gaze; + hidlMetadata.faces[i].top_bottom_gaze = metadata->faces[i].top_bottom_gaze; + hidlMetadata.faces[i].leye_blink = metadata->faces[i].leye_blink; + hidlMetadata.faces[i].reye_blink = metadata->faces[i].reye_blink; + } + } + CameraHeapMemory* mem = static_cast<CameraHeapMemory *>(data->handle); + object->mQDeviceCallback->QDataCallback( + (DataCallbackMsg) msg_type, mem->handle.mId, index, hidlMetadata); + } else { + if (object->mDeviceCallback != nullptr) { + CameraFrameMetadata hidlMetadata; + if (metadata) { + hidlMetadata.faces.resize(metadata->number_of_faces); + for (size_t i = 0; i < hidlMetadata.faces.size(); i++) { + hidlMetadata.faces[i].score = metadata->faces[i].score; + hidlMetadata.faces[i].id = metadata->faces[i].id; + for (int k = 0; k < 4; k++) { + hidlMetadata.faces[i].rect[k] = metadata->faces[i].rect[k]; + } + for (int k = 0; k < 2; k++) { + hidlMetadata.faces[i].leftEye[k] = metadata->faces[i].left_eye[k]; + } + for (int k = 0; k < 2; k++) { + hidlMetadata.faces[i].rightEye[k] = metadata->faces[i].right_eye[k]; + } + for (int k = 0; k < 2; k++) { + hidlMetadata.faces[i].mouth[k] = metadata->faces[i].mouth[k]; + } + } + } + CameraHeapMemory* mem = static_cast<CameraHeapMemory *>(data->handle); + object->mDeviceCallback->dataCallback( + (DataCallbackMsg) msg_type, mem->handle.mId, index, hidlMetadata); + } } } @@ -667,6 +705,11 @@ Return<Status> CameraDevice::open(const sp<ICameraDeviceCallback>& callback) { initHalPreviewWindow(); mDeviceCallback = callback; + mQDeviceCallback = + vendor::qti::hardware::camera::device::V1_0::IQCameraDeviceCallback::castFrom(callback); + if(mQDeviceCallback == nullptr) { + ALOGI("could not cast ICameraDeviceCallback to IQCameraDeviceCallback"); + } if (mDevice->ops->set_callbacks) { mDevice->ops->set_callbacks(mDevice, |