• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /****************************************************************************
2  ****************************************************************************
3  ***
4  ***   This header was automatically generated from a Linux kernel header
5  ***   of the same name, to make information necessary for userspace to
6  ***   call into the kernel available to libc.  It contains only constants,
7  ***   structures, and macros generated from the original header, and thus,
8  ***   contains no copyrightable information.
9  ***
10  ***   To edit the content of this header, modify the corresponding
11  ***   source file (e.g. under external/kernel-headers/original/) then
12  ***   run bionic/libc/kernel/tools/update_all.py
13  ***
14  ***   Any manual change here will be lost the next time this script will
15  ***   be run. You've been warned!
16  ***
17  ****************************************************************************
18  ****************************************************************************/
19 #ifndef _UAPI_MSM_VENC_H_
20 #define _UAPI_MSM_VENC_H_
21 #include <linux/types.h>
22 #define VENC_MAX_RECON_BUFFERS 2
23 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
24 #define VENC_FLAG_EOS 0x00000001
25 #define VENC_FLAG_END_OF_FRAME 0x00000010
26 #define VENC_FLAG_SYNC_FRAME 0x00000020
27 #define VENC_FLAG_EXTRA_DATA 0x00000040
28 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
29 #define VENC_FLAG_CODEC_CONFIG 0x00000080
30 enum venc_flush_type {
31   VENC_FLUSH_INPUT,
32   VENC_FLUSH_OUTPUT,
33 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
34   VENC_FLUSH_ALL
35 };
36 enum venc_state_type {
37   VENC_STATE_PAUSE = 0x1,
38 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
39   VENC_STATE_START = 0x2,
40   VENC_STATE_STOP = 0x4
41 };
42 enum venc_event_type_enum {
43 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
44   VENC_EVENT_START_STATUS,
45   VENC_EVENT_STOP_STATUS,
46   VENC_EVENT_SUSPEND_STATUS,
47   VENC_EVENT_RESUME_STATUS,
48 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
49   VENC_EVENT_FLUSH_STATUS,
50   VENC_EVENT_RELEASE_INPUT,
51   VENC_EVENT_DELIVER_OUTPUT,
52   VENC_EVENT_UNKNOWN_STATUS
53 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
54 };
55 enum venc_status_code {
56   VENC_STATUS_SUCCESS,
57   VENC_STATUS_ERROR,
58 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
59   VENC_STATUS_INVALID_STATE,
60   VENC_STATUS_FLUSHING,
61   VENC_STATUS_INVALID_PARAM,
62   VENC_STATUS_CMD_QUEUE_FULL,
63 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
64   VENC_STATUS_CRITICAL,
65   VENC_STATUS_INSUFFICIENT_RESOURCES,
66   VENC_STATUS_TIMEOUT
67 };
68 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
69 enum venc_msg_code {
70   VENC_MSG_INDICATION,
71   VENC_MSG_INPUT_BUFFER_DONE,
72   VENC_MSG_OUTPUT_BUFFER_DONE,
73 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
74   VENC_MSG_NEED_OUTPUT_BUFFER,
75   VENC_MSG_FLUSH,
76   VENC_MSG_START,
77   VENC_MSG_STOP,
78 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
79   VENC_MSG_PAUSE,
80   VENC_MSG_RESUME,
81   VENC_MSG_STOP_READING_MSG
82 };
83 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
84 enum venc_error_code {
85   VENC_S_SUCCESS,
86   VENC_S_EFAIL,
87   VENC_S_EFATAL,
88 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
89   VENC_S_EBADPARAM,
90   VENC_S_EINVALSTATE,
91   VENC_S_ENOSWRES,
92   VENC_S_ENOHWRES,
93 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
94   VENC_S_EBUFFREQ,
95   VENC_S_EINVALCMD,
96   VENC_S_ETIMEOUT,
97   VENC_S_ENOREATMPT,
98 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
99   VENC_S_ENOPREREQ,
100   VENC_S_ECMDQFULL,
101   VENC_S_ENOTSUPP,
102   VENC_S_ENOTIMPL,
103 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
104   VENC_S_ENOTPMEM,
105   VENC_S_EFLUSHED,
106   VENC_S_EINSUFBUF,
107   VENC_S_ESAMESTATE,
108 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
109   VENC_S_EINVALTRANS
110 };
111 enum venc_mem_region_enum {
112   VENC_PMEM_EBI1,
113 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
114   VENC_PMEM_SMI
115 };
116 struct venc_buf_type {
117   u32 region;
118 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
119   u32 phys;
120   u32 size;
121   int offset;
122 };
123 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
124 struct venc_qp_range {
125   u32 min_qp;
126   u32 max_qp;
127 };
128 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
129 struct venc_frame_rate {
130   u32 frame_rate_num;
131   u32 frame_rate_den;
132 };
133 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
134 struct venc_slice_info {
135   u32 slice_mode;
136   u32 units_per_slice;
137 };
138 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
139 struct venc_extra_data {
140   u32 slice_extra_data_flag;
141   u32 slice_client_data1;
142   u32 slice_client_data2;
143 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
144   u32 slice_client_data3;
145   u32 none_extra_data_flag;
146   u32 none_client_data1;
147   u32 none_client_data2;
148 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
149   u32 none_client_data3;
150 };
151 struct venc_common_config {
152   u32 standard;
153 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
154   u32 input_frame_height;
155   u32 input_frame_width;
156   u32 output_frame_height;
157   u32 output_frame_width;
158 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
159   u32 rotation_angle;
160   u32 intra_period;
161   u32 rate_control;
162   struct venc_frame_rate frame_rate;
163 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
164   u32 bitrate;
165   struct venc_qp_range qp_range;
166   u32 iframe_qp;
167   u32 pframe_qp;
168 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
169   struct venc_slice_info slice_config;
170   struct venc_extra_data extra_data;
171 };
172 struct venc_nonio_buf_config {
173 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
174   struct venc_buf_type recon_buf1;
175   struct venc_buf_type recon_buf2;
176   struct venc_buf_type wb_buf;
177   struct venc_buf_type cmd_buf;
178 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
179   struct venc_buf_type vlc_buf;
180 };
181 struct venc_mpeg4_config {
182   u32 profile;
183 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
184   u32 level;
185   u32 time_resolution;
186   u32 ac_prediction;
187   u32 hec_interval;
188 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
189   u32 data_partition;
190   u32 short_header;
191   u32 rvlc_enable;
192 };
193 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
194 struct venc_h263_config {
195   u32 profile;
196   u32 level;
197 };
198 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
199 struct venc_h264_config {
200   u32 profile;
201   u32 level;
202   u32 max_nal;
203 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
204   u32 idr_period;
205 };
206 struct venc_pmem {
207   int src;
208 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
209   int fd;
210   u32 offset;
211   void * virt;
212   void * phys;
213 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
214   u32 size;
215 };
216 struct venc_buffer {
217   unsigned char * ptr_buffer;
218 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
219   u32 size;
220   u32 len;
221   u32 offset;
222   long long time_stamp;
223 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
224   u32 flags;
225   u32 client_data;
226 };
227 struct venc_buffers {
228 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
229   struct venc_pmem recon_buf[VENC_MAX_RECON_BUFFERS];
230   struct venc_pmem wb_buf;
231   struct venc_pmem cmd_buf;
232   struct venc_pmem vlc_buf;
233 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
234 };
235 struct venc_buffer_flush {
236   u32 flush_mode;
237 };
238 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
239 union venc_msg_data {
240   struct venc_buffer buf;
241   struct venc_buffer_flush flush_ret;
242 };
243 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
244 struct venc_msg {
245   u32 status_code;
246   u32 msg_code;
247   u32 msg_data_size;
248 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
249   union venc_msg_data msg_data;
250 };
251 union venc_codec_config {
252   struct venc_mpeg4_config mpeg4_params;
253 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
254   struct venc_h263_config h263_params;
255   struct venc_h264_config h264_params;
256 };
257 struct venc_q6_config {
258 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
259   struct venc_common_config config_params;
260   union venc_codec_config codec_params;
261   struct venc_nonio_buf_config buf_params;
262   void * callback_event;
263 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
264 };
265 struct venc_hdr_config {
266   struct venc_common_config config_params;
267   union venc_codec_config codec_params;
268 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
269 };
270 struct venc_init_config {
271   struct venc_q6_config q6_config;
272   struct venc_buffers q6_bufs;
273 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
274 };
275 struct venc_seq_config {
276   int size;
277   struct venc_pmem buf;
278 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
279   struct venc_q6_config q6_config;
280 };
281 struct venc_version {
282   u32 major;
283 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
284   u32 minor;
285 };
286 #define VENC_IOCTL_MAGIC 'V'
287 #define VENC_IOCTL_CMD_READ_NEXT_MSG _IOWR(VENC_IOCTL_MAGIC, 1, struct venc_msg)
288 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
289 #define VENC_IOCTL_CMD_STOP_READ_MSG _IO(VENC_IOCTL_MAGIC, 2)
290 #define VENC_IOCTL_SET_INPUT_BUFFER _IOW(VENC_IOCTL_MAGIC, 3, struct venc_pmem)
291 #define VENC_IOCTL_SET_OUTPUT_BUFFER _IOW(VENC_IOCTL_MAGIC, 4, struct venc_pmem)
292 #define VENC_IOCTL_CMD_START _IOW(VENC_IOCTL_MAGIC, 5, struct venc_init_config)
293 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
294 #define VENC_IOCTL_CMD_ENCODE_FRAME _IOW(VENC_IOCTL_MAGIC, 6, struct venc_buffer)
295 #define VENC_IOCTL_CMD_FILL_OUTPUT_BUFFER _IOW(VENC_IOCTL_MAGIC, 7, struct venc_buffer)
296 #define VENC_IOCTL_CMD_FLUSH _IOW(VENC_IOCTL_MAGIC, 8, struct venc_buffer_flush)
297 #define VENC_IOCTL_CMD_PAUSE _IO(VENC_IOCTL_MAGIC, 9)
298 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
299 #define VENC_IOCTL_CMD_RESUME _IO(VENC_IOCTL_MAGIC, 10)
300 #define VENC_IOCTL_CMD_STOP _IO(VENC_IOCTL_MAGIC, 11)
301 #define VENC_IOCTL_SET_INTRA_PERIOD _IOW(VENC_IOCTL_MAGIC, 12, int)
302 #define VENC_IOCTL_CMD_REQUEST_IFRAME _IO(VENC_IOCTL_MAGIC, 13)
303 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
304 #define VENC_IOCTL_GET_SEQUENCE_HDR _IOWR(VENC_IOCTL_MAGIC, 14, struct venc_seq_config)
305 #define VENC_IOCTL_SET_INTRA_REFRESH _IOW(VENC_IOCTL_MAGIC, 15, int)
306 #define VENC_IOCTL_SET_FRAME_RATE _IOW(VENC_IOCTL_MAGIC, 16, struct venc_frame_rate)
307 #define VENC_IOCTL_SET_TARGET_BITRATE _IOW(VENC_IOCTL_MAGIC, 17, int)
308 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
309 #define VENC_IOCTL_SET_QP_RANGE _IOW(VENC_IOCTL_MAGIC, 18, struct venc_qp_range)
310 #define VENC_IOCTL_GET_VERSION _IOR(VENC_IOCTL_MAGIC, 19, struct venc_version)
311 #endif
312 
313