Home | History | Annotate | Download | only in media
      1 /* Copyright (c) 2014, The Linux Foundation. All rights reserved.
      2  *
      3  * This program is free software; you can redistribute it and/or modify
      4  * it under the terms of the GNU General Public License version 2 and
      5  * only version 2 as published by the Free Software Foundation.
      6  *
      7  * This program is distributed in the hope that it will be useful,
      8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
      9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     10  * GNU General Public License for more details.
     11  */
     12 #ifndef __UAPI_MSM_FD__
     13 #define __UAPI_MSM_FD__
     14 
     15 #include <linux/videodev2.h>
     16 
     17 /*
     18  * struct msm_fd_event - Structure contain event info.
     19  * @buf_index: Buffer index.
     20  * @frame_id: Frame id.
     21  * @face_cnt: Detected faces.
     22  */
     23 struct msm_fd_event {
     24 	__u32 buf_index;
     25 	__u32 frame_id;
     26 	__u32 face_cnt;
     27 };
     28 
     29 /*
     30  * enum msm_fd_pose - Face pose.
     31  */
     32 enum msm_fd_pose {
     33 	MSM_FD_POSE_FRONT,
     34 	MSM_FD_POSE_RIGHT_DIAGONAL,
     35 	MSM_FD_POSE_RIGHT,
     36 	MSM_FD_POSE_LEFT_DIAGONAL,
     37 	MSM_FD_POSE_LEFT,
     38 };
     39 
     40 /*
     41  * struct msm_fd_face_data - Structure contain detected face data.
     42  * @pose: refer to enum msm_fd_pose.
     43  * @angle: Face angle
     44  * @confidence: Face confidence level.
     45  * @reserved: Reserved data for future use.
     46  * @face: Face rectangle.
     47  */
     48 struct msm_fd_face_data {
     49 	__u32 pose;
     50 	__u32 angle;
     51 	__u32 confidence;
     52 	__u32 reserved;
     53 	struct v4l2_rect face;
     54 };
     55 
     56 /*
     57  * struct msm_fd_result - Structure contain detected faces result.
     58  * @frame_id: Frame id of requested result.
     59  * @face_cnt: Number of result faces, driver can modify this value (to smaller)
     60  * @face_data: Pointer to array of face data structures.
     61  *  Array size should not be smaller then face_cnt.
     62  */
     63 struct msm_fd_result {
     64 	__u32 frame_id;
     65 	__u32 face_cnt;
     66 	struct msm_fd_face_data __user *face_data;
     67 };
     68 
     69 #ifdef CONFIG_COMPAT
     70 /*
     71  * struct msm_fd_result32 - Compat structure contain detected faces result.
     72  * @frame_id: Frame id of requested result.
     73  * @face_cnt: Number of result faces, driver can modify this value (to smaller)
     74  * @face_data: Pointer to array of face data structures.
     75  *  Array size should not be smaller then face_cnt.
     76  */
     77 struct msm_fd_result32 {
     78 	__u32 frame_id;
     79 	__u32 face_cnt;
     80 	compat_uptr_t face_data;
     81 };
     82 
     83 /* MSM FD compat private ioctl ID */
     84 #define VIDIOC_MSM_FD_GET_RESULT32 \
     85 	_IOWR('V', BASE_VIDIOC_PRIVATE, struct msm_fd_result32)
     86 #endif
     87 
     88 /* MSM FD private ioctl ID */
     89 #define VIDIOC_MSM_FD_GET_RESULT \
     90 	_IOWR('V', BASE_VIDIOC_PRIVATE, struct msm_fd_result)
     91 
     92 /* MSM FD event ID */
     93 #define MSM_EVENT_FD (V4L2_EVENT_PRIVATE_START)
     94 
     95 /* MSM FD control ID's */
     96 #define V4L2_CID_FD_SPEED                (V4L2_CID_PRIVATE_BASE)
     97 #define V4L2_CID_FD_FACE_ANGLE           (V4L2_CID_PRIVATE_BASE + 1)
     98 #define V4L2_CID_FD_MIN_FACE_SIZE        (V4L2_CID_PRIVATE_BASE + 2)
     99 #define V4L2_CID_FD_FACE_DIRECTION       (V4L2_CID_PRIVATE_BASE + 3)
    100 #define V4L2_CID_FD_DETECTION_THRESHOLD  (V4L2_CID_PRIVATE_BASE + 4)
    101 #define V4L2_CID_FD_WORK_MEMORY_SIZE     (V4L2_CID_PRIVATE_BASE + 5)
    102 #define V4L2_CID_FD_WORK_MEMORY_FD       (V4L2_CID_PRIVATE_BASE + 6)
    103 
    104 #endif /* __UAPI_MSM_FD__ */
    105