18611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#ifndef _MSM_VDEC_H_ 28611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define _MSM_VDEC_H_ 38611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 48611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#include <linux/types.h> 58611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 68611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VDEC_IOCTL_MAGIC 'v' 78611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 88611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VDEC_IOCTL_INITIALIZE _IOWR(VDEC_IOCTL_MAGIC, 1, struct vdec_init) 98611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VDEC_IOCTL_SETBUFFERS _IOW(VDEC_IOCTL_MAGIC, 2, struct vdec_buffer) 108611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VDEC_IOCTL_QUEUE _IOWR(VDEC_IOCTL_MAGIC, 3, \ 118611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct vdec_input_buf) 128611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VDEC_IOCTL_REUSEFRAMEBUFFER _IOW(VDEC_IOCTL_MAGIC, 4, unsigned int) 138611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VDEC_IOCTL_FLUSH _IOW(VDEC_IOCTL_MAGIC, 5, unsigned int) 148611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VDEC_IOCTL_EOS _IO(VDEC_IOCTL_MAGIC, 6) 158611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VDEC_IOCTL_GETMSG _IOR(VDEC_IOCTL_MAGIC, 7, struct vdec_msg) 168611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VDEC_IOCTL_CLOSE _IO(VDEC_IOCTL_MAGIC, 8) 178611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VDEC_IOCTL_FREEBUFFERS _IOW(VDEC_IOCTL_MAGIC, 9, struct vdec_buf_info) 188611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VDEC_IOCTL_GETDECATTRIBUTES _IOR(VDEC_IOCTL_MAGIC, 10, \ 198611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct vdec_dec_attributes) 20f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev#define VDEC_IOCTL_GETVERSION _IOR(VDEC_IOCTL_MAGIC, 11, struct vdec_version) 21f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev#define VDEC_IOCTL_SETPROPERTY _IOW \ 22f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev (VDEC_IOCTL_MAGIC, 12, struct vdec_property_info) 23f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev#define VDEC_IOCTL_GETPROPERTY _IOR \ 24f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev (VDEC_IOCTL_MAGIC, 13, struct vdec_property_info) 25f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev#define VDEC_IOCTL_PERFORMANCE_CHANGE_REQ _IOW(VDEC_IOCTL_MAGIC, 14, \ 26f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev unsigned int) 278611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 288611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuenum { 298611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VDEC_FRAME_DECODE_OK, 308611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VDEC_FRAME_DECODE_ERR, 318611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VDEC_FATAL_ERR, 328611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VDEC_FLUSH_FINISH, 338611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VDEC_EOS, 348611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VDEC_FRAME_FLUSH, 358611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VDEC_STREAM_SWITCH, 368611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VDEC_SUSPEND_FINISH, 378611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VDEC_BUFFER_CONSUMED 388611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 398611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 408611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuenum { 418611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VDEC_FLUSH_INPUT, 428611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VDEC_FLUSH_OUTPUT, 438611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VDEC_FLUSH_ALL 448611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 458611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 468611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuenum { 478611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VDEC_BUFFER_TYPE_INPUT, 488611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VDEC_BUFFER_TYPE_OUTPUT, 498611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VDEC_BUFFER_TYPE_INTERNAL1, 508611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VDEC_BUFFER_TYPE_INTERNAL2, 518611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 528611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 538611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuenum { 548611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VDEC_QUEUE_SUCCESS, 558611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VDEC_QUEUE_FAILED, 568611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VDEC_QUEUE_BADSTATE, 578611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 588611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 59f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchevenum { 60f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev VDEC_COLOR_FORMAT_NV21 = 0x01, 61f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev VDEC_COLOR_FORMAT_NV21_YAMOTO = 0x02 62f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev }; 63f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev 64f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchevenum vdec_property_id { 65f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev VDEC_FOURCC, 66f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev VDEC_PROFILE, 67f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev VDEC_LEVEL, 68f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev VDEC_DIMENSIONS, 69f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev VDEC_CWIN, 70f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev VDEC_INPUT_BUF_REQ, 71f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev VDEC_OUTPUT_BUF_REQ, 72f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev VDEC_LUMA_CHROMA_STRIDE, 73f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev VDEC_NUM_DAL_PORTS, 74f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev VDEC_PRIORITY, 75f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev VDEC_FRAME_ALIGNMENT 76f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev}; 77f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev 78f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchevenum { 79f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev PERF_REQUEST_SET_MIN = 0, 80f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev PERF_REQUEST_LOWER, 81f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev PERF_REQUEST_RAISE, 82f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev PERF_REQUEST_SET_MAX 83f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev}; 84f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev 858611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct vdec_input_buf_info { 868611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 offset; 878611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 data; 888611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 size; 898611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int timestamp_lo; 908611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int timestamp_hi; 918611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int avsync_state; 928611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 flags; 938611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 948611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 958611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct vdec_buf_desc { 968611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 bufsize; 978611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 num_min_buffers; 988611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 num_max_buffers; 998611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 1008611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 1018611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct vdec_buf_req { 1028611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 max_input_queue_size; 1038611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct vdec_buf_desc input; 1048611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct vdec_buf_desc output; 1058611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct vdec_buf_desc dec_req1; 1068611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct vdec_buf_desc dec_req2; 1078611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 1088611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 1098611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct vdec_region_info { 1108611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 src_id; 1118611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 offset; 1128611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 size; 1138611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 1148611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 1158611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct vdec_config { 1168611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 fourcc; /* video format */ 1178611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 width; /* source width */ 1188611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 height; /* source height */ 1198611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 order; /* render decoder order */ 1208611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 notify_enable; /* enable notify input buffer done event */ 1218611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 vc1_rowbase; 1228611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 h264_startcode_detect; 1238611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 h264_nal_len_size; 1248611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 postproc_flag; 1258611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 fruc_enable; 126f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 color_format; /* used to set YUV color format */ 1278611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 1288611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 1298611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct vdec_vc1_panscan_regions { 1308611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int num; 1318611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int width[4]; 1328611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int height[4]; 1338611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int xoffset[4]; 1348611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int yoffset[4]; 1358611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 1368611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 1378611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct vdec_cropping_window { 1388611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 x1; 1398611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 y1; 1408611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 x2; 1418611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 y2; 1428611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 1438611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 1448611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct vdec_frame_info { 1458611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 status; /* video decode status */ 1468611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 offset; /* buffer offset */ 1478611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 data1; /* user data field 1 */ 1488611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 data2; /* user data field 2 */ 1498611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int timestamp_lo; /* lower 32 bits timestamp, in msec */ 1508611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int timestamp_hi; /* higher 32 bits timestamp, in msec */ 1518611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int cal_timestamp_lo; /* lower 32 bits cal timestamp, in msec */ 1528611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int cal_timestamp_hi; /* higher 32 bits cal timestamp, in msec */ 1538611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 dec_width; /* frame roi width */ 1548611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 dec_height; /* frame roi height */ 1558611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct vdec_cropping_window cwin; /* The frame cropping window */ 1568611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 picture_type[2]; /* picture coding type */ 1578611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 picture_format; /* picture coding format */ 1588611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 vc1_rangeY; /* luma range mapping */ 1598611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 vc1_rangeUV; /* chroma range mapping */ 1608611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 picture_resolution; /* scaling factor */ 1618611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 frame_disp_repeat; /* how often repeated by disp */ 1628611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 repeat_first_field; /* repeat 1st field after 2nd */ 1638611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 top_field_first; /* top field displayed first */ 1648611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 interframe_interp; /* not for inter-frame interp */ 1658611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct vdec_vc1_panscan_regions panscan; /* pan region */ 1668611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 concealed_macblk_num; /* number of concealed macro blk */ 1678611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 flags; /* input flags */ 1688611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 performance_stats; /* performance statistics returned by decoder */ 169f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 data3; /* user data field 3 */ 1708611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 1718611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 1728611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct vdec_buf_info { 1738611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 buf_type; 1748611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct vdec_region_info region; 1758611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 num_buf; 1768611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 islast; 1778611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 1788611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 1798611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct vdec_buffer { 1808611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 pmem_id; 1818611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct vdec_buf_info buf; 1828611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 1838611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 1848611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct vdec_sequence { 1858611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u8 *header; 1868611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 len; 1878611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 1888611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 1898611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct vdec_config_sps { 1908611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct vdec_config cfg; 1918611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct vdec_sequence seq; 1928611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 1938611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 1948611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VDEC_MSG_REUSEINPUTBUFFER 1 1958611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VDEC_MSG_FRAMEDONE 2 1968611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 1978611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct vdec_msg { 1988611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 id; 1998611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2008611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu union { 2018611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu /* id = VDEC_MSG_REUSEINPUTBUFFER */ 2028611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 buf_id; 2038611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu /* id = VDEC_MSG_FRAMEDONE */ 2048611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct vdec_frame_info vfr_info; 2058611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu }; 2068611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 2078611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2088611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct vdec_init { 2098611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct vdec_config_sps sps_cfg; 2108611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct vdec_buf_req *buf_req; 2118611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 2128611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2138611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct vdec_input_buf { 2148611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 pmem_id; 2158611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct vdec_input_buf_info buffer; 2168611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct vdec_queue_status *queue_status; 2178611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 2188611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2198611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct vdec_queue_status { 2208611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 status; 2218611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 2228611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2238611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct vdec_dec_attributes { 2248611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 fourcc; 2258611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 profile; 2268611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 level; 2278611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 dec_pic_width; 2288611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu u32 dec_pic_height; 2298611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct vdec_buf_desc input; 2308611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct vdec_buf_desc output; 2318611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct vdec_buf_desc dec_req1; 2328611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct vdec_buf_desc dec_req2; 2338611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 2348611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 235f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchevstruct vdec_version { 236f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 major; 237f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 minor; 238f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev}; 239f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev 240f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchevstruct dal_vdec_rectangle { 241f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 width; 242f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 height; 243f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev}; 244f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev 245f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchevstruct stride_type { 246f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 luma; 247f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 chroma; 248f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev}; 249f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev 250f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchevstruct frame_alignment_type { 251f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 luma_width; 252f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 luma_height; 253f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 chroma_width; 254f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 chroma_height; 255f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 chroma_offset; 256f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev}; 257f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev 258f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchevunion vdec_property { 259f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 fourcc; 260f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 profile; 261f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 level; 262f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev struct dal_vdec_rectangle dim; 263f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev struct vdec_cropping_window cw; 264f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev struct vdec_buf_desc input_req; 265f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev struct vdec_buf_desc output_req; 266f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev struct stride_type stride; 267f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 num_dal_ports; 268f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 priority; 269f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev struct frame_alignment_type frame_alignment; 270f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 def_type; 271f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev}; 272f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev 273f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchevstruct vdec_property_info { 274f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev enum vdec_property_id id; 275f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev union vdec_property property; 276f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev}; 2778611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#endif /* _MSM_VDEC_H_ */ 278