/* Copyright (c) 2014, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and * only version 2 as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ #ifndef __UAPI_MSM_FD__ #define __UAPI_MSM_FD__ #include /* * struct msm_fd_event - Structure contain event info. * @buf_index: Buffer index. * @frame_id: Frame id. * @face_cnt: Detected faces. */ struct msm_fd_event { __u32 buf_index; __u32 frame_id; __u32 face_cnt; }; /* * enum msm_fd_pose - Face pose. */ enum msm_fd_pose { MSM_FD_POSE_FRONT, MSM_FD_POSE_RIGHT_DIAGONAL, MSM_FD_POSE_RIGHT, MSM_FD_POSE_LEFT_DIAGONAL, MSM_FD_POSE_LEFT, }; /* * struct msm_fd_face_data - Structure contain detected face data. * @pose: refer to enum msm_fd_pose. * @angle: Face angle * @confidence: Face confidence level. * @reserved: Reserved data for future use. * @face: Face rectangle. */ struct msm_fd_face_data { __u32 pose; __u32 angle; __u32 confidence; __u32 reserved; struct v4l2_rect face; }; /* * struct msm_fd_result - Structure contain detected faces result. * @frame_id: Frame id of requested result. * @face_cnt: Number of result faces, driver can modify this value (to smaller) * @face_data: Pointer to array of face data structures. * Array size should not be smaller then face_cnt. */ struct msm_fd_result { __u32 frame_id; __u32 face_cnt; struct msm_fd_face_data __user *face_data; }; #ifdef CONFIG_COMPAT /* * struct msm_fd_result32 - Compat structure contain detected faces result. * @frame_id: Frame id of requested result. * @face_cnt: Number of result faces, driver can modify this value (to smaller) * @face_data: Pointer to array of face data structures. * Array size should not be smaller then face_cnt. */ struct msm_fd_result32 { __u32 frame_id; __u32 face_cnt; compat_uptr_t face_data; }; /* MSM FD compat private ioctl ID */ #define VIDIOC_MSM_FD_GET_RESULT32 \ _IOWR('V', BASE_VIDIOC_PRIVATE, struct msm_fd_result32) #endif /* MSM FD private ioctl ID */ #define VIDIOC_MSM_FD_GET_RESULT \ _IOWR('V', BASE_VIDIOC_PRIVATE, struct msm_fd_result) /* MSM FD event ID */ #define MSM_EVENT_FD (V4L2_EVENT_PRIVATE_START) /* MSM FD control ID's */ #define V4L2_CID_FD_SPEED (V4L2_CID_PRIVATE_BASE) #define V4L2_CID_FD_FACE_ANGLE (V4L2_CID_PRIVATE_BASE + 1) #define V4L2_CID_FD_MIN_FACE_SIZE (V4L2_CID_PRIVATE_BASE + 2) #define V4L2_CID_FD_FACE_DIRECTION (V4L2_CID_PRIVATE_BASE + 3) #define V4L2_CID_FD_DETECTION_THRESHOLD (V4L2_CID_PRIVATE_BASE + 4) #define V4L2_CID_FD_WORK_MEMORY_SIZE (V4L2_CID_PRIVATE_BASE + 5) #define V4L2_CID_FD_WORK_MEMORY_FD (V4L2_CID_PRIVATE_BASE + 6) #endif /* __UAPI_MSM_FD__ */