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 **************************************************************************** 11 ****************************************************************************/ 12#ifndef _MSM_VDEC_H_ 13#define _MSM_VDEC_H_ 14 15#include <linux/types.h> 16 17#define VDEC_IOCTL_MAGIC 'v' 18 19#define VDEC_IOCTL_INITIALIZE _IOWR(VDEC_IOCTL_MAGIC, 1, struct vdec_init) 20#define VDEC_IOCTL_SETBUFFERS _IOW(VDEC_IOCTL_MAGIC, 2, struct vdec_buffer) 21#define VDEC_IOCTL_QUEUE _IOWR(VDEC_IOCTL_MAGIC, 3, struct vdec_input_buf) 22#define VDEC_IOCTL_REUSEFRAMEBUFFER _IOW(VDEC_IOCTL_MAGIC, 4, unsigned int) 23#define VDEC_IOCTL_FLUSH _IOW(VDEC_IOCTL_MAGIC, 5, unsigned int) 24#define VDEC_IOCTL_EOS _IO(VDEC_IOCTL_MAGIC, 6) 25#define VDEC_IOCTL_GETMSG _IOR(VDEC_IOCTL_MAGIC, 7, struct vdec_msg) 26#define VDEC_IOCTL_CLOSE _IO(VDEC_IOCTL_MAGIC, 8) 27#define VDEC_IOCTL_FREEBUFFERS _IOW(VDEC_IOCTL_MAGIC, 9, struct vdec_buf_info) 28#define VDEC_IOCTL_GETDECATTRIBUTES _IOR(VDEC_IOCTL_MAGIC, 10, struct vdec_dec_attributes) 29 30enum { 31 VDEC_FRAME_DECODE_OK, 32 VDEC_FRAME_DECODE_ERR, 33 VDEC_FATAL_ERR, 34 VDEC_FLUSH_FINISH, 35 VDEC_EOS, 36 VDEC_FRAME_FLUSH, 37 VDEC_STREAM_SWITCH, 38 VDEC_SUSPEND_FINISH, 39 VDEC_BUFFER_CONSUMED 40}; 41 42enum { 43 VDEC_FLUSH_INPUT, 44 VDEC_FLUSH_OUTPUT, 45 VDEC_FLUSH_ALL 46}; 47 48enum { 49 VDEC_BUFFER_TYPE_INPUT, 50 VDEC_BUFFER_TYPE_OUTPUT, 51 VDEC_BUFFER_TYPE_INTERNAL1, 52 VDEC_BUFFER_TYPE_INTERNAL2, 53}; 54 55enum { 56 VDEC_QUEUE_SUCCESS, 57 VDEC_QUEUE_FAILED, 58 VDEC_QUEUE_BADSTATE, 59}; 60 61struct vdec_input_buf_info { 62 u32 offset; 63 u32 data; 64 u32 size; 65 int timestamp_lo; 66 int timestamp_hi; 67 int avsync_state; 68 u32 flags; 69}; 70 71struct vdec_buf_desc { 72 u32 bufsize; 73 u32 num_min_buffers; 74 u32 num_max_buffers; 75}; 76 77struct vdec_buf_req { 78 u32 max_input_queue_size; 79 struct vdec_buf_desc input; 80 struct vdec_buf_desc output; 81 struct vdec_buf_desc dec_req1; 82 struct vdec_buf_desc dec_req2; 83}; 84 85struct vdec_region_info { 86 u32 src_id; 87 u32 offset; 88 u32 size; 89}; 90 91struct vdec_config { 92 u32 fourcc; 93 u32 width; 94 u32 height; 95 u32 order; 96 u32 notify_enable; 97 u32 vc1_rowbase; 98 u32 h264_startcode_detect; 99 u32 h264_nal_len_size; 100 u32 postproc_flag; 101 u32 fruc_enable; 102 u32 reserved; 103}; 104 105struct vdec_vc1_panscan_regions { 106 int num; 107 int width[4]; 108 int height[4]; 109 int xoffset[4]; 110 int yoffset[4]; 111}; 112 113struct vdec_cropping_window { 114 u32 x1; 115 u32 y1; 116 u32 x2; 117 u32 y2; 118}; 119 120struct vdec_frame_info { 121 u32 status; 122 u32 offset; 123 u32 data1; 124 u32 data2; 125 int timestamp_lo; 126 int timestamp_hi; 127 int cal_timestamp_lo; 128 int cal_timestamp_hi; 129 u32 dec_width; 130 u32 dec_height; 131 struct vdec_cropping_window cwin; 132 u32 picture_type[2]; 133 u32 picture_format; 134 u32 vc1_rangeY; 135 u32 vc1_rangeUV; 136 u32 picture_resolution; 137 u32 frame_disp_repeat; 138 u32 repeat_first_field; 139 u32 top_field_first; 140 u32 interframe_interp; 141 struct vdec_vc1_panscan_regions panscan; 142 u32 concealed_macblk_num; 143 u32 flags; 144 u32 performance_stats; 145 u32 data3; 146}; 147 148struct vdec_buf_info { 149 u32 buf_type; 150 struct vdec_region_info region; 151 u32 num_buf; 152 u32 islast; 153}; 154 155struct vdec_buffer { 156 u32 pmem_id; 157 struct vdec_buf_info buf; 158}; 159 160struct vdec_sequence { 161 u8 *header; 162 u32 len; 163}; 164 165struct vdec_config_sps { 166 struct vdec_config cfg; 167 struct vdec_sequence seq; 168}; 169 170#define VDEC_MSG_REUSEINPUTBUFFER 1 171#define VDEC_MSG_FRAMEDONE 2 172 173struct vdec_msg { 174 u32 id; 175 176 union { 177 178 u32 buf_id; 179 180 struct vdec_frame_info vfr_info; 181 }; 182}; 183 184struct vdec_init { 185 struct vdec_config_sps sps_cfg; 186 struct vdec_buf_req *buf_req; 187}; 188 189struct vdec_input_buf { 190 u32 pmem_id; 191 struct vdec_input_buf_info buffer; 192 struct vdec_queue_status *queue_status; 193}; 194 195struct vdec_queue_status { 196 u32 status; 197}; 198 199struct vdec_dec_attributes { 200 u32 fourcc; 201 u32 profile; 202 u32 level; 203 u32 dec_pic_width; 204 u32 dec_pic_height; 205 struct vdec_buf_desc input; 206 struct vdec_buf_desc output; 207 struct vdec_buf_desc dec_req1; 208 struct vdec_buf_desc dec_req2; 209}; 210 211#endif 212 213