2 * Copyright (C) 2011 The Android Open Source Project
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 * \brief header file for libv4l2
20 * \author Jinsung Yang (jsgood.yang@samsung.com)
23 * <b>Revision History: </b>
24 * - 2011/12/15 : Jinsung Yang (jsgood.yang@samsung.com) \n
30 * \defgroup exynos_v4l2
35 #ifndef __EXYNOS_LIB_V4L2_H__
36 #define __EXYNOS_LIB_V4L2_H__
44 #include "linux/videodev2.h" /* vendor specific videodev2.h */
46 /*! \ingroup exynos_v4l2 */
47 int exynos_v4l2_open(const char *filename
, int oflag
, ...);
48 /*! \ingroup exynos_v4l2 */
49 int exynos_v4l2_open_devname(const char *devname
, int oflag
, ...);
50 /*! \ingroup exynos_v4l2 */
51 int exynos_v4l2_close(int fd
);
52 /*! \ingroup exynos_v4l2 */
53 bool exynos_v4l2_enuminput(int fd
, int index
, char *input_name_buf
);
54 /*! \ingroup exynos_v4l2 */
55 int exynos_v4l2_s_input(int fd
, int index
);
56 /*! \ingroup exynos_v4l2 */
57 bool exynos_v4l2_querycap(int fd
, unsigned int need_caps
);
58 /*! \ingroup exynos_v4l2 */
59 bool exynos_v4l2_enum_fmt(int fd
, enum v4l2_buf_type type
, unsigned int fmt
);
60 /*! \ingroup exynos_v4l2 */
61 int exynos_v4l2_g_fmt(int fd
, struct v4l2_format
*fmt
);
62 /*! \ingroup exynos_v4l2 */
63 int exynos_v4l2_s_fmt(int fd
, struct v4l2_format
*fmt
);
64 /*! \ingroup exynos_v4l2 */
65 int exynos_v4l2_try_fmt(int fd
, struct v4l2_format
*fmt
);
66 /*! \ingroup exynos_v4l2 */
67 int exynos_v4l2_reqbufs(int fd
, struct v4l2_requestbuffers
*req
);
68 /*! \ingroup exynos_v4l2 */
69 int exynos_v4l2_querybuf(int fd
, struct v4l2_buffer
*buf
);
70 /*! \ingroup exynos_v4l2 */
71 int exynos_v4l2_qbuf(int fd
, struct v4l2_buffer
*buf
);
72 /*! \ingroup exynos_v4l2 */
73 int exynos_v4l2_dqbuf(int fd
, struct v4l2_buffer
*buf
);
74 /*! \ingroup exynos_v4l2 */
75 int exynos_v4l2_streamon(int fd
, enum v4l2_buf_type type
);
76 /*! \ingroup exynos_v4l2 */
77 int exynos_v4l2_streamoff(int fd
, enum v4l2_buf_type type
);
78 /*! \ingroup exynos_v4l2 */
79 int exynos_v4l2_cropcap(int fd
, struct v4l2_cropcap
*crop
);
80 /*! \ingroup exynos_v4l2 */
81 int exynos_v4l2_g_crop(int fd
, struct v4l2_crop
*crop
);
82 /*! \ingroup exynos_v4l2 */
83 int exynos_v4l2_s_crop(int fd
, struct v4l2_crop
*crop
);
84 /*! \ingroup exynos_v4l2 */
85 int exynos_v4l2_g_ctrl(int fd
, unsigned int id
, int *value
);
86 /*! \ingroup exynos_v4l2 */
87 int exynos_v4l2_s_ctrl(int fd
, unsigned int id
, int value
);
88 /*! \ingroup exynos_v4l2 */
89 int exynos_v4l2_prepare(int fd
, struct v4l2_buffer
*arg
);
90 /*! \ingroup exynos_v4l2 */
91 int exynos_v4l2_g_parm(int fd
, struct v4l2_streamparm
*streamparm
);
92 /*! \ingroup exynos_v4l2 */
93 int exynos_v4l2_s_parm(int fd
, struct v4l2_streamparm
*streamparm
);
94 /*! \ingroup exynos_v4l2 */
95 int exynos_v4l2_g_ext_ctrl(int fd
, struct v4l2_ext_controls
*ctrl
);
96 /*! \ingroup exynos_v4l2 */
97 int exynos_v4l2_s_ext_ctrl(int fd
, struct v4l2_ext_controls
*ctrl
);
100 #include <linux/v4l2-subdev.h>
102 /*! \ingroup exynos_v4l2 */
103 int exynos_subdev_open(const char *filename
, int oflag
, ...);
104 /*! \ingroup exynos_v4l2 */
105 int exynos_subdev_get_node_num(const char *devname
, int oflag
, ...);
106 /*! \ingroup exynos_v4l2 */
107 int exynos_subdev_open_devname(const char *devname
, int oflag
, ...);
108 /*! \ingroup exynos_v4l2 */
109 int exynos_subdev_close(int fd
);
110 /*! \ingroup exynos_v4l2 */
111 int exynos_subdev_enum_frame_size(int fd
, struct v4l2_subdev_frame_size_enum
*frame_size_enum
);
112 /*! \ingroup exynos_v4l2 */
113 int exynos_subdev_g_fmt(int fd
, struct v4l2_subdev_format
*fmt
);
114 /*! \ingroup exynos_v4l2 */
115 int exynos_subdev_s_fmt(int fd
, struct v4l2_subdev_format
*fmt
);
116 /*! \ingroup exynos_v4l2 */
117 int exynos_subdev_g_crop(int fd
, struct v4l2_subdev_crop
*crop
);
118 /*! \ingroup exynos_v4l2 */
119 int exynos_subdev_s_crop(int fd
, struct v4l2_subdev_crop
*crop
);
120 /*! \ingroup exynos_v4l2 */
121 int exynos_subdev_enum_frame_interval(int fd
, struct v4l2_subdev_frame_interval_enum
*frame_internval_enum
);
122 /*! \ingroup exynos_v4l2 */
123 int exynos_subdev_g_frame_interval(int fd
, struct v4l2_subdev_frame_interval
*frame_internval_enum
);
124 /*! \ingroup exynos_v4l2 */
125 int exynos_subdev_s_frame_interval(int fd
, struct v4l2_subdev_frame_interval
*frame_internval_enum
);
126 /*! \ingroup exynos_v4l2 */
127 int exynos_subdev_enum_mbus_code(int fd
, struct v4l2_subdev_mbus_code_enum
*mbus_code_enum
);
129 /* MEDIA CONTORLLER */
130 #include <linux/media.h>
133 * \ingroup exynos_v4l2
136 struct media_pad
*source
;
137 struct media_pad
*sink
;
138 struct media_link
*twin
;
144 * \ingroup exynos_v4l2
147 struct media_entity
*entity
;
154 * \ingroup exynos_v4l2
156 struct media_entity
{
157 struct media_device
*media
;
158 struct media_entity_desc info
;
159 struct media_pad
*pads
;
160 struct media_link
*links
;
161 unsigned int max_links
;
162 unsigned int num_links
;
170 * \ingroup exynos_v4l2
172 struct media_device
{
174 struct media_entity
*entities
;
175 unsigned int entities_count
;
176 void (*debug_handler
)(void *, ...);
181 /*! \ingroup exynos_v4l2 */
182 struct media_device
*exynos_media_open(const char *filename
);
183 /*! \ingroup exynos_v4l2 */
184 void exynos_media_close(struct media_device
*media
);
185 /*! \ingroup exynos_v4l2 */
186 struct media_pad
*exynos_media_entity_remote_source(struct media_pad
*pad
);
187 /*! \ingroup exynos_v4l2 */
188 struct media_entity
*exynos_media_get_entity_by_name(struct media_device
*media
, const char *name
, size_t length
);
189 /*! \ingroup exynos_v4l2 */
190 struct media_entity
*exynos_media_get_entity_by_id(struct media_device
*media
, __u32 id
);
191 /*! \ingroup exynos_v4l2 */
192 int exynos_media_setup_link(struct media_device
*media
, struct media_pad
*source
, struct media_pad
*sink
, __u32 flags
);
193 /*! \ingroup exynos_v4l2 */
194 int exynos_media_reset_links(struct media_device
*media
);
195 /*! \ingroup exynos_v4l2 */
196 struct media_pad
*exynos_media_parse_pad(struct media_device
*media
, const char *p
, char **endp
);
197 /*! \ingroup exynos_v4l2 */
198 struct media_link
*exynos_media_parse_link(struct media_device
*media
, const char *p
, char **endp
);
199 /*! \ingroup exynos_v4l2 */
200 int exynos_media_parse_setup_link(struct media_device
*media
, const char *p
, char **endp
);
201 /*! \ingroup exynos_v4l2 */
202 int exynos_media_parse_setup_links(struct media_device
*media
, const char *p
);
208 #endif /* __EXYNOS_LIB_V4L2_H__ */