1 /*
2  *
3  * Copyright 2012 Samsung Electronics S.LSI Co. LTD
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 
18 /*!
19  * \file      exynos_rotator.h
20  * \brief     header file for exynos_rotator HAL
21  * \author    Sunmi Lee (carrotsm.lee@samsung.com)
22  * \date      2012/03/05
23  *
24  * <b>Revision History: </b>
25  * - 2012/03/05 : Sunmi Lee (carrotsm.lee@samsung.com) \n
26  *   Create
27  *
28  */
29 
30 /*!
31  * \defgroup exynos_rotator
32  * \brief API for rotator
33  * \addtogroup Exynos
34  */
35 
36 #ifndef _EXYNOS_ROTATOR_H_
37 #define _EXYNOS_ROTATOR_H_
38 
39 #ifdef __cplusplus
40 extern "C" {
41 #endif
42 
43 /*!
44  * Create librotator handle
45  *
46  * \ingroup exynos_rotator
47  *
48  * \return
49  *   librotator handle
50  */
51 void *exynos_rotator_create(void);
52 
53 /*!
54  * Destroy librotator handle
55  *
56  * \ingroup exynos_rotator
57  *
58  * \param handle
59  *   librotator handle[in]
60  */
61 void exynos_rotator_destroy(
62     void *handle);
63 
64 /*!
65  * Set source format.
66  *
67  * \ingroup exynos_rotator
68  *
69  * \param handle
70  *   librotator handle[in]
71  *
72  * \param width
73  *   image width[in]
74  *
75  * \param height
76  *   image height[in]
77  *
78  * \param crop_left
79  *   image left crop size[in]
80  *
81  * \param crop_top
82  *   image top crop size[in]
83  *
84  * \param crop_width
85  *   cropped image width[in]
86  *
87  * \param crop_height
88  *   cropped image height[in]
89  *
90  * \param v4l2_colorformat
91  *   color format[in]
92  *
93  * \param cacheable
94  *   ccacheable[in]
95  *
96  * \return
97  *   error code
98  */
99 int exynos_rotator_set_src_format(
100     void        *handle,
101     unsigned int width,
102     unsigned int height,
103     unsigned int crop_left,
104     unsigned int crop_top,
105     unsigned int crop_width,
106     unsigned int crop_height,
107     unsigned int v4l2_colorformat,
108     unsigned int cacheable);
109 
110 /*!
111  * Set destination format.
112  *
113  * \ingroup exynos_rotator
114  *
115  * \param handle
116  *   librotator handle[in]
117  *
118  * \param width
119  *   image width[in]
120  *
121  * \param height
122  *   image height[in]
123  *
124  * \param crop_left
125  *   image left crop size[in]
126  *
127  * \param crop_top
128  *   image top crop size[in]
129  *
130  * \param v4l2_colorformat
131  *   color format[in]
132  *
133  * \param cacheable
134  *   ccacheable[in]
135  *
136  * \return
137  *   error code
138  */
139 int exynos_rotator_set_dst_format(
140     void        *handle,
141     unsigned int width,
142     unsigned int height,
143     unsigned int crop_left,
144     unsigned int crop_top,
145     unsigned int v4l2_colorformat,
146     unsigned int cacheable);
147 
148 /*!
149  * Set rotation.
150  *
151  * \ingroup exynos_rotator
152  *
153  * \param handle
154  *   librotator handle[in]
155  *
156  * \param rotation
157  *   image rotation. It should be multiple of 90[in]
158  *
159  * \return
160  *   error code
161  */
162 int exynos_rotator_set_rotation(
163     void *handle,
164     int   rotation);
165 
166 /*!
167  * Set source buffer
168  *
169  * \ingroup exynos_rotator
170  *
171  * \param handle
172  *   librotator handle[in]
173  *
174  * \param addr
175  *   buffer pointer array[in]
176  *
177  * \return
178  *   error code
179  */
180 int exynos_rotator_set_src_addr(
181     void *handle,
182     void *addr[3]);
183 
184 /*!
185  * Set destination buffer
186  *
187  * \ingroup exynos_rotator
188  *
189  * \param handle
190  *   librotator handle[in]
191  *
192  * \param addr
193  *   buffer pointer array[in]
194  *
195  * \return
196  *   error code
197  */
198 int exynos_rotator_set_dst_addr(
199     void *handle,
200     void *addr[3]);
201 
202 /*!
203  * Convert color space with presetup color format
204  *
205  * \ingroup exynos_rotator
206  *
207  * \param handle
208  *   librotator handle[in]
209  *
210  * \return
211  *   error code
212  */
213 int exynos_rotator_convert(
214     void *handle);
215 
216 /*!
217  * api for local path rotator. Not yet support.
218  *
219  * \ingroup exynos_rotator
220  */
221 int exynos_rotator_connect(
222     void *handle,
223     void *hw);
224 
225 /*!
226  * api for local path rotator. Not yet support.
227  *
228  * \ingroup exynos_rotator
229  */
230 int exynos_rotator_disconnect(
231     void *handle,
232     void *hw);
233 
234 #ifdef __cplusplus
235 }
236 #endif
237 
238 #endif /*EXYNOS_ROTATORALER_H_*/