1d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#ifndef _UAPI_MSM_VDEC_H_ 2d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define _UAPI_MSM_VDEC_H_ 35d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 45d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#include <linux/types.h> 55d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 65d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VDEC_IOCTL_MAGIC 'v' 75d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 85d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VDEC_IOCTL_INITIALIZE _IOWR(VDEC_IOCTL_MAGIC, 1, struct vdec_init) 95d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VDEC_IOCTL_SETBUFFERS _IOW(VDEC_IOCTL_MAGIC, 2, struct vdec_buffer) 105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VDEC_IOCTL_QUEUE _IOWR(VDEC_IOCTL_MAGIC, 3, \ 115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct vdec_input_buf) 125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VDEC_IOCTL_REUSEFRAMEBUFFER _IOW(VDEC_IOCTL_MAGIC, 4, unsigned int) 135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VDEC_IOCTL_FLUSH _IOW(VDEC_IOCTL_MAGIC, 5, unsigned int) 145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VDEC_IOCTL_EOS _IO(VDEC_IOCTL_MAGIC, 6) 155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VDEC_IOCTL_GETMSG _IOR(VDEC_IOCTL_MAGIC, 7, struct vdec_msg) 165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VDEC_IOCTL_CLOSE _IO(VDEC_IOCTL_MAGIC, 8) 175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VDEC_IOCTL_FREEBUFFERS _IOW(VDEC_IOCTL_MAGIC, 9, struct vdec_buf_info) 185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VDEC_IOCTL_GETDECATTRIBUTES _IOR(VDEC_IOCTL_MAGIC, 10, \ 195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct vdec_dec_attributes) 205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VDEC_IOCTL_GETVERSION _IOR(VDEC_IOCTL_MAGIC, 11, struct vdec_version) 215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VDEC_IOCTL_SETPROPERTY _IOW \ 225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin (VDEC_IOCTL_MAGIC, 12, struct vdec_property_info) 235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VDEC_IOCTL_GETPROPERTY _IOR \ 245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin (VDEC_IOCTL_MAGIC, 13, struct vdec_property_info) 255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VDEC_IOCTL_PERFORMANCE_CHANGE_REQ _IOW(VDEC_IOCTL_MAGIC, 14, \ 265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int) 275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum { 295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VDEC_FRAME_DECODE_OK, 305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VDEC_FRAME_DECODE_ERR, 315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VDEC_FATAL_ERR, 325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VDEC_FLUSH_FINISH, 335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VDEC_EOS, 345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VDEC_FRAME_FLUSH, 355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VDEC_STREAM_SWITCH, 365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VDEC_SUSPEND_FINISH, 375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VDEC_BUFFER_CONSUMED 385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum { 415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VDEC_FLUSH_INPUT, 425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VDEC_FLUSH_OUTPUT, 435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VDEC_FLUSH_ALL 445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum { 475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VDEC_BUFFER_TYPE_INPUT, 485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VDEC_BUFFER_TYPE_OUTPUT, 495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VDEC_BUFFER_TYPE_INTERNAL1, 505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VDEC_BUFFER_TYPE_INTERNAL2, 515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum { 545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VDEC_QUEUE_SUCCESS, 555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VDEC_QUEUE_FAILED, 565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VDEC_QUEUE_BADSTATE, 575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum { 605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VDEC_COLOR_FORMAT_NV21 = 0x01, 615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VDEC_COLOR_FORMAT_NV21_YAMOTO = 0x02 625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin }; 635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum vdec_property_id { 655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VDEC_FOURCC, 665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VDEC_PROFILE, 675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VDEC_LEVEL, 685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VDEC_DIMENSIONS, 695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VDEC_CWIN, 705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VDEC_INPUT_BUF_REQ, 715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VDEC_OUTPUT_BUF_REQ, 725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VDEC_LUMA_CHROMA_STRIDE, 735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VDEC_NUM_DAL_PORTS, 745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VDEC_PRIORITY, 755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VDEC_FRAME_ALIGNMENT 765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum { 795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin PERF_REQUEST_SET_MIN = 0, 805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin PERF_REQUEST_LOWER, 815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin PERF_REQUEST_RAISE, 825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin PERF_REQUEST_SET_MAX 835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct vdec_input_buf_info { 865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 offset; 875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 data; 885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 size; 895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int timestamp_lo; 905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int timestamp_hi; 915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int avsync_state; 925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 flags; 935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct vdec_buf_desc { 965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 bufsize; 975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 num_min_buffers; 985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 num_max_buffers; 995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 1005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct vdec_buf_req { 1025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 max_input_queue_size; 1035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct vdec_buf_desc input; 1045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct vdec_buf_desc output; 1055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct vdec_buf_desc dec_req1; 1065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct vdec_buf_desc dec_req2; 1075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 1085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct vdec_region_info { 1105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 src_id; 1115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 offset; 1125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 size; 1135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 1145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct vdec_config { 1165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 fourcc; /* video format */ 1175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 width; /* source width */ 1185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 height; /* source height */ 1195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 order; /* render decoder order */ 1205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 notify_enable; /* enable notify input buffer done event */ 1215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 vc1_rowbase; 1225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 h264_startcode_detect; 1235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 h264_nal_len_size; 1245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 postproc_flag; 1255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 fruc_enable; 1265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 color_format; /* used to set YUV color format */ 1275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 1285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct vdec_vc1_panscan_regions { 1305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int num; 1315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int width[4]; 1325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int height[4]; 1335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int xoffset[4]; 1345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int yoffset[4]; 1355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 1365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct vdec_cropping_window { 1385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 x1; 1395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 y1; 1405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 x2; 1415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 y2; 1425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 1435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct vdec_frame_info { 1455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 status; /* video decode status */ 1465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 offset; /* buffer offset */ 1475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 data1; /* user data field 1 */ 1485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 data2; /* user data field 2 */ 1495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int timestamp_lo; /* lower 32 bits timestamp, in msec */ 1505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int timestamp_hi; /* higher 32 bits timestamp, in msec */ 1515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int cal_timestamp_lo; /* lower 32 bits cal timestamp, in msec */ 1525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int cal_timestamp_hi; /* higher 32 bits cal timestamp, in msec */ 1535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 dec_width; /* frame roi width */ 1545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 dec_height; /* frame roi height */ 1555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct vdec_cropping_window cwin; /* The frame cropping window */ 1565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 picture_type[2]; /* picture coding type */ 1575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 picture_format; /* picture coding format */ 1585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 vc1_rangeY; /* luma range mapping */ 1595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 vc1_rangeUV; /* chroma range mapping */ 1605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 picture_resolution; /* scaling factor */ 1615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 frame_disp_repeat; /* how often repeated by disp */ 1625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 repeat_first_field; /* repeat 1st field after 2nd */ 1635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 top_field_first; /* top field displayed first */ 1645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 interframe_interp; /* not for inter-frame interp */ 1655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct vdec_vc1_panscan_regions panscan; /* pan region */ 1665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 concealed_macblk_num; /* number of concealed macro blk */ 1675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 flags; /* input flags */ 1685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 performance_stats; /* performance statistics returned by decoder */ 1695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 data3; /* user data field 3 */ 1705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 1715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct vdec_buf_info { 1735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 buf_type; 1745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct vdec_region_info region; 1755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 num_buf; 1765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 islast; 1775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 1785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct vdec_buffer { 1805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 pmem_id; 1815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct vdec_buf_info buf; 1825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 1835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct vdec_sequence { 1855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u8 *header; 1865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 len; 1875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 1885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct vdec_config_sps { 1905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct vdec_config cfg; 1915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct vdec_sequence seq; 1925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 1935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VDEC_MSG_REUSEINPUTBUFFER 1 1955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VDEC_MSG_FRAMEDONE 2 1965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct vdec_msg { 1985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 id; 1995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin union { 2015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* id = VDEC_MSG_REUSEINPUTBUFFER */ 2025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 buf_id; 2035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* id = VDEC_MSG_FRAMEDONE */ 2045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct vdec_frame_info vfr_info; 2055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin }; 2065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 2075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct vdec_init { 2095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct vdec_config_sps sps_cfg; 2105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct vdec_buf_req *buf_req; 2115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 2125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct vdec_input_buf { 2145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 pmem_id; 2155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct vdec_input_buf_info buffer; 2165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct vdec_queue_status *queue_status; 2175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 2185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct vdec_queue_status { 2205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 status; 2215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 2225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct vdec_dec_attributes { 2245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 fourcc; 2255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 profile; 2265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 level; 2275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 dec_pic_width; 2285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 dec_pic_height; 2295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct vdec_buf_desc input; 2305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct vdec_buf_desc output; 2315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct vdec_buf_desc dec_req1; 2325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct vdec_buf_desc dec_req2; 2335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 2345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct vdec_version { 2365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 major; 2375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 minor; 2385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 2395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct dal_vdec_rectangle { 2415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 width; 2425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 height; 2435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 2445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct stride_type { 2465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 luma; 2475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 chroma; 2485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 2495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct frame_alignment_type { 2515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 luma_width; 2525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 luma_height; 2535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 chroma_width; 2545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 chroma_height; 2555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 chroma_offset; 2565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 2575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinunion vdec_property { 2595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 fourcc; 2605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 profile; 2615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 level; 2625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct dal_vdec_rectangle dim; 2635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct vdec_cropping_window cw; 2645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct vdec_buf_desc input_req; 2655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct vdec_buf_desc output_req; 2665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct stride_type stride; 2675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 num_dal_ports; 2685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 priority; 2695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct frame_alignment_type frame_alignment; 2705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 def_type; 2715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 2725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct vdec_property_info { 2745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin enum vdec_property_id id; 2755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin union vdec_property property; 2765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 277d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#endif /* _UAPI_MSM_VDEC_H_ */ 278