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)
41enum {
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};
55enum {
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};
61enum {
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 */
69enum {
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};
75enum {
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 };
80enum 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};
96enum {
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 */
104struct 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};
115struct 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};
121struct 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};
130struct 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};
136struct 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};
152struct 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};
161struct 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 */
169struct 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};
202struct 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};
210struct 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};
215struct vdec_sequence {
216 u8 *header;
217 u32 len;
218/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
219};
220struct 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
227struct 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};
236struct 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};
241struct 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};
247struct vdec_queue_status {
248/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
249 u32 status;
250};
251struct 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};
265struct vdec_version {
266 u32 major;
267 u32 minor;
268/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
269};
270struct dal_vdec_rectangle {
271 u32 width;
272 u32 height;
273/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
274};
275struct stride_type {
276 u32 luma;
277 u32 chroma;
278/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
279};
280struct 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 */
289union 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};
306struct 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