105 lines
3.0 KiB
C
105 lines
3.0 KiB
C
|
/* 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 <linux/videodev2.h>
|
||
|
|
||
|
/*
|
||
|
* 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__ */
|