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_VDEC_H_
20 #define _MSM_VDEC_H_
21 #include <linux/types.h>
22 #define VDEC_IOCTL_MAGIC 'v'
23 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
24 #define VDEC_IOCTL_INITIALIZE _IOWR(VDEC_IOCTL_MAGIC, 1, struct vdec_init)
25 #define VDEC_IOCTL_SETBUFFERS _IOW(VDEC_IOCTL_MAGIC, 2, struct vdec_buffer)
26 #define VDEC_IOCTL_QUEUE _IOWR(VDEC_IOCTL_MAGIC, 3,   struct vdec_input_buf)
27 #define VDEC_IOCTL_REUSEFRAMEBUFFER _IOW(VDEC_IOCTL_MAGIC, 4, unsigned int)
28 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
29 #define VDEC_IOCTL_FLUSH _IOW(VDEC_IOCTL_MAGIC, 5, unsigned int)
30 #define VDEC_IOCTL_EOS _IO(VDEC_IOCTL_MAGIC, 6)
31 #define VDEC_IOCTL_GETMSG _IOR(VDEC_IOCTL_MAGIC, 7, struct vdec_msg)
32 #define VDEC_IOCTL_CLOSE _IO(VDEC_IOCTL_MAGIC, 8)
33 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
34 #define VDEC_IOCTL_FREEBUFFERS _IOW(VDEC_IOCTL_MAGIC, 9, struct vdec_buf_info)
35 #define VDEC_IOCTL_GETDECATTRIBUTES _IOR(VDEC_IOCTL_MAGIC, 10,   struct vdec_dec_attributes)
36 #define VDEC_IOCTL_GETVERSION _IOR(VDEC_IOCTL_MAGIC, 11, struct vdec_version)
37 #define VDEC_IOCTL_SETPROPERTY _IOW   (VDEC_IOCTL_MAGIC, 12, struct vdec_property_info)
38 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
39 #define VDEC_IOCTL_GETPROPERTY _IOR   (VDEC_IOCTL_MAGIC, 13, struct vdec_property_info)
40 #define VDEC_IOCTL_PERFORMANCE_CHANGE_REQ _IOW(VDEC_IOCTL_MAGIC, 14,   unsigned int)
41 enum {
42  VDEC_FRAME_DECODE_OK,
43 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
44  VDEC_FRAME_DECODE_ERR,
45  VDEC_FATAL_ERR,
46  VDEC_FLUSH_FINISH,
47  VDEC_EOS,
48 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
49  VDEC_FRAME_FLUSH,
50  VDEC_STREAM_SWITCH,
51  VDEC_SUSPEND_FINISH,
52  VDEC_BUFFER_CONSUMED
53 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
54 };
55 enum {
56  VDEC_FLUSH_INPUT,
57  VDEC_FLUSH_OUTPUT,
58 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
59  VDEC_FLUSH_ALL
60 };
61 enum {
62  VDEC_BUFFER_TYPE_INPUT,
63 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
64  VDEC_BUFFER_TYPE_OUTPUT,
65  VDEC_BUFFER_TYPE_INTERNAL1,
66  VDEC_BUFFER_TYPE_INTERNAL2,
67 };
68 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
69 enum {
70  VDEC_QUEUE_SUCCESS,
71  VDEC_QUEUE_FAILED,
72  VDEC_QUEUE_BADSTATE,
73 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
74 };
75 enum {
76  VDEC_COLOR_FORMAT_NV21 = 0x01,
77  VDEC_COLOR_FORMAT_NV21_YAMOTO = 0x02
78 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
79  };
80 enum vdec_property_id {
81  VDEC_FOURCC,
82  VDEC_PROFILE,
83 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
84  VDEC_LEVEL,
85  VDEC_DIMENSIONS,
86  VDEC_CWIN,
87  VDEC_INPUT_BUF_REQ,
88 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
89  VDEC_OUTPUT_BUF_REQ,
90  VDEC_LUMA_CHROMA_STRIDE,
91  VDEC_NUM_DAL_PORTS,
92  VDEC_PRIORITY,
93 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
94  VDEC_FRAME_ALIGNMENT
95 };
96 enum {
97  PERF_REQUEST_SET_MIN = 0,
98 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
99  PERF_REQUEST_LOWER,
100  PERF_REQUEST_RAISE,
101  PERF_REQUEST_SET_MAX
102 };
103 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
104 struct vdec_input_buf_info {
105  u32 offset;
106  u32 data;
107  u32 size;
108 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
109  int timestamp_lo;
110  int timestamp_hi;
111  int avsync_state;
112  u32 flags;
113 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
114 };
115 struct vdec_buf_desc {
116  u32 bufsize;
117  u32 num_min_buffers;
118 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
119  u32 num_max_buffers;
120 };
121 struct vdec_buf_req {
122  u32 max_input_queue_size;
123 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
124  struct vdec_buf_desc input;
125  struct vdec_buf_desc output;
126  struct vdec_buf_desc dec_req1;
127  struct vdec_buf_desc dec_req2;
128 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
129 };
130 struct vdec_region_info {
131  u32 src_id;
132  u32 offset;
133 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
134  u32 size;
135 };
136 struct vdec_config {
137  u32 fourcc;
138 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
139  u32 width;
140  u32 height;
141  u32 order;
142  u32 notify_enable;
143 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
144  u32 vc1_rowbase;
145  u32 h264_startcode_detect;
146  u32 h264_nal_len_size;
147  u32 postproc_flag;
148 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
149  u32 fruc_enable;
150  u32 color_format;
151 };
152 struct vdec_vc1_panscan_regions {
153 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
154  int num;
155  int width[4];
156  int height[4];
157  int xoffset[4];
158 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
159  int yoffset[4];
160 };
161 struct vdec_cropping_window {
162  u32 x1;
163 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
164  u32 y1;
165  u32 x2;
166  u32 y2;
167 };
168 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
169 struct vdec_frame_info {
170  u32 status;
171  u32 offset;
172  u32 data1;
173 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
174  u32 data2;
175  int timestamp_lo;
176  int timestamp_hi;
177  int cal_timestamp_lo;
178 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
179  int cal_timestamp_hi;
180  u32 dec_width;
181  u32 dec_height;
182  struct vdec_cropping_window cwin;
183 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
184  u32 picture_type[2];
185  u32 picture_format;
186  u32 vc1_rangeY;
187  u32 vc1_rangeUV;
188 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
189  u32 picture_resolution;
190  u32 frame_disp_repeat;
191  u32 repeat_first_field;
192  u32 top_field_first;
193 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
194  u32 interframe_interp;
195  struct vdec_vc1_panscan_regions panscan;
196  u32 concealed_macblk_num;
197  u32 flags;
198 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
199  u32 performance_stats;
200  u32 data3;
201 };
202 struct vdec_buf_info {
203 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
204  u32 buf_type;
205  struct vdec_region_info region;
206  u32 num_buf;
207  u32 islast;
208 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
209 };
210 struct vdec_buffer {
211  u32 pmem_id;
212  struct vdec_buf_info buf;
213 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
214 };
215 struct vdec_sequence {
216  u8 *header;
217  u32 len;
218 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
219 };
220 struct vdec_config_sps {
221  struct vdec_config cfg;
222  struct vdec_sequence seq;
223 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
224 };
225 #define VDEC_MSG_REUSEINPUTBUFFER 1
226 #define VDEC_MSG_FRAMEDONE 2
227 struct vdec_msg {
228 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
229  u32 id;
230  union {
231  u32 buf_id;
232  struct vdec_frame_info vfr_info;
233 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
234  };
235 };
236 struct vdec_init {
237  struct vdec_config_sps sps_cfg;
238 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
239  struct vdec_buf_req *buf_req;
240 };
241 struct vdec_input_buf {
242  u32 pmem_id;
243 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
244  struct vdec_input_buf_info buffer;
245  struct vdec_queue_status *queue_status;
246 };
247 struct vdec_queue_status {
248 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
249  u32 status;
250 };
251 struct vdec_dec_attributes {
252  u32 fourcc;
253 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
254  u32 profile;
255  u32 level;
256  u32 dec_pic_width;
257  u32 dec_pic_height;
258 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
259  struct vdec_buf_desc input;
260  struct vdec_buf_desc output;
261  struct vdec_buf_desc dec_req1;
262  struct vdec_buf_desc dec_req2;
263 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
264 };
265 struct vdec_version {
266  u32 major;
267  u32 minor;
268 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
269 };
270 struct dal_vdec_rectangle {
271  u32 width;
272  u32 height;
273 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
274 };
275 struct stride_type {
276  u32 luma;
277  u32 chroma;
278 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
279 };
280 struct frame_alignment_type {
281  u32 luma_width;
282  u32 luma_height;
283 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
284  u32 chroma_width;
285  u32 chroma_height;
286  u32 chroma_offset;
287 };
288 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
289 union vdec_property {
290  u32 fourcc;
291  u32 profile;
292  u32 level;
293 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
294  struct dal_vdec_rectangle dim;
295  struct vdec_cropping_window cw;
296  struct vdec_buf_desc input_req;
297  struct vdec_buf_desc output_req;
298 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
299  struct stride_type stride;
300  u32 num_dal_ports;
301  u32 priority;
302  struct frame_alignment_type frame_alignment;
303 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
304  u32 def_type;
305 };
306 struct vdec_property_info {
307  enum vdec_property_id id;
308 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
309  union vdec_property property;
310 };
311 #endif
312 
313