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 _MSM_VENC_H_
20#define _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
30enum 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};
36enum 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};
42enum 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};
55enum 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 */
69enum 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 */
84enum 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};
111enum 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};
116struct 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 */
124struct venc_qp_range {
125 u32 min_qp;
126 u32 max_qp;
127};
128/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
129struct 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 */
134struct 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 */
139struct 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};
151struct 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};
172struct 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};
181struct 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 */
194struct venc_h263_config {
195 u32 profile;
196 u32 level;
197};
198/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
199struct 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};
206struct 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};
216struct 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};
227struct 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};
235struct venc_buffer_flush {
236 u32 flush_mode;
237};
238/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
239union 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 */
244struct 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};
251union 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};
257struct 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};
265struct 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};
270struct 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};
275struct 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};
281struct 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