16edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#ifndef _MSM_VIDC_DEC_H_ 26edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define _MSM_VIDC_DEC_H_ 36edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 46edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#include <linux/types.h> 56edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#include <linux/ioctl.h> 66edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 76edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner/* STATUS CODES */ 86edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner/* Base value for status codes */ 96edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_S_BASE 0x40000000 106edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner/* Success */ 116edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_S_SUCCESS (VDEC_S_BASE) 126edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner/* General failure */ 136edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_S_EFAIL (VDEC_S_BASE + 1) 146edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner/* Fatal irrecoverable failure. Need to tear down session. */ 156edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_S_EFATAL (VDEC_S_BASE + 2) 166edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner/* Error detected in the passed parameters */ 176edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_S_EBADPARAM (VDEC_S_BASE + 3) 186edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner/* Command called in invalid state. */ 196edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_S_EINVALSTATE (VDEC_S_BASE + 4) 206edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner /* Insufficient OS resources - thread, memory etc. */ 216edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_S_ENOSWRES (VDEC_S_BASE + 5) 226edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner /* Insufficient HW resources - core capacity maxed out. */ 236edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_S_ENOHWRES (VDEC_S_BASE + 6) 246edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner/* Invalid command called */ 256edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_S_EINVALCMD (VDEC_S_BASE + 7) 266edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner/* Command timeout. */ 276edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_S_ETIMEOUT (VDEC_S_BASE + 8) 286edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner/* Pre-requirement is not met for API. */ 296edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_S_ENOPREREQ (VDEC_S_BASE + 9) 306edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner/* Command queue is full. */ 316edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_S_ECMDQFULL (VDEC_S_BASE + 10) 326edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner/* Command is not supported by this driver */ 336edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_S_ENOTSUPP (VDEC_S_BASE + 11) 346edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner/* Command is not implemented by thedriver. */ 356edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_S_ENOTIMPL (VDEC_S_BASE + 12) 366edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner/* Command is not implemented by the driver. */ 376edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_S_BUSY (VDEC_S_BASE + 13) 38dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev#define VDEC_S_INPUT_BITSTREAM_ERR (VDEC_S_BASE + 14) 396edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 40dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev#define VDEC_INTF_VER 1 416edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_MSG_BASE 0x0000000 426edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner/* Codes to identify asynchronous message responses and events that driver 436edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner wants to communicate to the app.*/ 446edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_MSG_INVALID (VDEC_MSG_BASE + 0) 456edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_MSG_RESP_INPUT_BUFFER_DONE (VDEC_MSG_BASE + 1) 466edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_MSG_RESP_OUTPUT_BUFFER_DONE (VDEC_MSG_BASE + 2) 476edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_MSG_RESP_INPUT_FLUSHED (VDEC_MSG_BASE + 3) 486edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_MSG_RESP_OUTPUT_FLUSHED (VDEC_MSG_BASE + 4) 496edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_MSG_RESP_FLUSH_INPUT_DONE (VDEC_MSG_BASE + 5) 506edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_MSG_RESP_FLUSH_OUTPUT_DONE (VDEC_MSG_BASE + 6) 516edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_MSG_RESP_START_DONE (VDEC_MSG_BASE + 7) 526edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_MSG_RESP_STOP_DONE (VDEC_MSG_BASE + 8) 536edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_MSG_RESP_PAUSE_DONE (VDEC_MSG_BASE + 9) 546edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_MSG_RESP_RESUME_DONE (VDEC_MSG_BASE + 10) 556edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_MSG_RESP_RESOURCE_LOADED (VDEC_MSG_BASE + 11) 566edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_EVT_RESOURCES_LOST (VDEC_MSG_BASE + 12) 576edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_MSG_EVT_CONFIG_CHANGED (VDEC_MSG_BASE + 13) 586edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_MSG_EVT_HW_ERROR (VDEC_MSG_BASE + 14) 59dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev#define VDEC_MSG_EVT_INFO_CONFIG_CHANGED (VDEC_MSG_BASE + 15) 60dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev#define VDEC_MSG_EVT_INFO_FIELD_DROPPED (VDEC_MSG_BASE + 16) 616edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 626edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner/*Buffer flags bits masks.*/ 636edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_BUFFERFLAG_EOS 0x00000001 646edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_BUFFERFLAG_DECODEONLY 0x00000004 656edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_BUFFERFLAG_DATACORRUPT 0x00000008 666edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_BUFFERFLAG_ENDOFFRAME 0x00000010 676edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_BUFFERFLAG_SYNCFRAME 0x00000020 686edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_BUFFERFLAG_EXTRADATA 0x00000040 696edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_BUFFERFLAG_CODECCONFIG 0x00000080 706edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 716edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner/*Post processing flags bit masks*/ 72dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev#define VDEC_EXTRADATA_NONE 0x001 73dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev#define VDEC_EXTRADATA_QP 0x004 74dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev#define VDEC_EXTRADATA_MB_ERROR_MAP 0x008 75dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev#define VDEC_EXTRADATA_SEI 0x010 76dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev#define VDEC_EXTRADATA_VUI 0x020 77dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev#define VDEC_EXTRADATA_VC1 0x040 786edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 796edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_CMDBASE 0x800 806edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_CMD_SET_INTF_VERSION (VDEC_CMDBASE) 816edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 826edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_IOCTL_MAGIC 'v' 836edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 846edab35481161575425a4666bedca9c92892bf69David 'Digit' Turnerstruct vdec_ioctl_msg { 85dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev void __user *in; 86dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev void __user *out; 876edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner}; 886edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 896edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner/* CMD params: InputParam:enum vdec_codec 906edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner OutputParam: struct vdec_profile_level*/ 916edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_IOCTL_GET_PROFILE_LEVEL_SUPPORTED \ 926edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner _IOWR(VDEC_IOCTL_MAGIC, 0, struct vdec_ioctl_msg) 936edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 946edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner/*CMD params:InputParam: NULL 956edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner OutputParam: uint32_t(bitmask)*/ 966edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_IOCTL_GET_INTERLACE_FORMAT \ 976edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner _IOR(VDEC_IOCTL_MAGIC, 1, struct vdec_ioctl_msg) 986edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 996edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner/* CMD params: InputParam: enum vdec_codec 1006edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner OutputParam: struct vdec_profile_level*/ 1016edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_IOCTL_GET_CURRENT_PROFILE_LEVEL \ 1026edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner _IOWR(VDEC_IOCTL_MAGIC, 2, struct vdec_ioctl_msg) 1036edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 1046edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner/*CMD params: SET: InputParam: enum vdec_output_fromat OutputParam: NULL 1056edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner GET: InputParam: NULL OutputParam: enum vdec_output_fromat*/ 1066edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_IOCTL_SET_OUTPUT_FORMAT \ 1076edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner _IOWR(VDEC_IOCTL_MAGIC, 3, struct vdec_ioctl_msg) 1086edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_IOCTL_GET_OUTPUT_FORMAT \ 1096edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner _IOWR(VDEC_IOCTL_MAGIC, 4, struct vdec_ioctl_msg) 1106edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 1116edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner/*CMD params: SET: InputParam: enum vdec_codec OutputParam: NULL 1126edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner GET: InputParam: NULL OutputParam: enum vdec_codec*/ 1136edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_IOCTL_SET_CODEC \ 1146edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner _IOW(VDEC_IOCTL_MAGIC, 5, struct vdec_ioctl_msg) 1156edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_IOCTL_GET_CODEC \ 1166edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner _IOR(VDEC_IOCTL_MAGIC, 6, struct vdec_ioctl_msg) 1176edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 1186edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner/*CMD params: SET: InputParam: struct vdec_picsize outputparam: NULL 1196edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner GET: InputParam: NULL outputparam: struct vdec_picsize*/ 1206edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_IOCTL_SET_PICRES \ 1216edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner _IOW(VDEC_IOCTL_MAGIC, 7, struct vdec_ioctl_msg) 1226edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_IOCTL_GET_PICRES \ 1236edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner _IOR(VDEC_IOCTL_MAGIC, 8, struct vdec_ioctl_msg) 1246edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 1256edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_IOCTL_SET_EXTRADATA \ 1266edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner _IOW(VDEC_IOCTL_MAGIC, 9, struct vdec_ioctl_msg) 1276edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_IOCTL_GET_EXTRADATA \ 1286edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner _IOR(VDEC_IOCTL_MAGIC, 10, struct vdec_ioctl_msg) 1296edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 1306edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_IOCTL_SET_SEQUENCE_HEADER \ 1316edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner _IOW(VDEC_IOCTL_MAGIC, 11, struct vdec_ioctl_msg) 1326edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 1336edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner/* CMD params: SET: InputParam - vdec_allocatorproperty, OutputParam - NULL 1346edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner GET: InputParam - NULL, OutputParam - vdec_allocatorproperty*/ 1356edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_IOCTL_SET_BUFFER_REQ \ 1366edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner _IOW(VDEC_IOCTL_MAGIC, 12, struct vdec_ioctl_msg) 1376edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_IOCTL_GET_BUFFER_REQ \ 1386edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner _IOR(VDEC_IOCTL_MAGIC, 13, struct vdec_ioctl_msg) 1396edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner/* CMD params: InputParam - vdec_buffer, OutputParam - uint8_t** */ 1406edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_IOCTL_ALLOCATE_BUFFER \ 1416edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner _IOWR(VDEC_IOCTL_MAGIC, 14, struct vdec_ioctl_msg) 1426edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner/* CMD params: InputParam - uint8_t *, OutputParam - NULL.*/ 1436edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_IOCTL_FREE_BUFFER \ 1446edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner _IOW(VDEC_IOCTL_MAGIC, 15, struct vdec_ioctl_msg) 1456edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 1466edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner/*CMD params: CMD: InputParam - struct vdec_setbuffer_cmd, OutputParam - NULL*/ 1476edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_IOCTL_SET_BUFFER \ 1486edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner _IOW(VDEC_IOCTL_MAGIC, 16, struct vdec_ioctl_msg) 1496edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 1506edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner/* CMD params: InputParam - struct vdec_fillbuffer_cmd, OutputParam - NULL*/ 1516edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_IOCTL_FILL_OUTPUT_BUFFER \ 1526edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner _IOW(VDEC_IOCTL_MAGIC, 17, struct vdec_ioctl_msg) 1536edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 1546edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner/*CMD params: InputParam - struct vdec_frameinfo , OutputParam - NULL*/ 1556edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_IOCTL_DECODE_FRAME \ 1566edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner _IOW(VDEC_IOCTL_MAGIC, 18, struct vdec_ioctl_msg) 1576edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 1586edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_IOCTL_LOAD_RESOURCES _IO(VDEC_IOCTL_MAGIC, 19) 1596edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_IOCTL_CMD_START _IO(VDEC_IOCTL_MAGIC, 20) 1606edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_IOCTL_CMD_STOP _IO(VDEC_IOCTL_MAGIC, 21) 1616edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_IOCTL_CMD_PAUSE _IO(VDEC_IOCTL_MAGIC, 22) 1626edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_IOCTL_CMD_RESUME _IO(VDEC_IOCTL_MAGIC, 23) 1636edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 1646edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner/*CMD params: InputParam - enum vdec_bufferflush , OutputParam - NULL */ 1656edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_IOCTL_CMD_FLUSH _IOW(VDEC_IOCTL_MAGIC, 24, struct vdec_ioctl_msg) 1666edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 1676edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner/* ======================================================== 1686edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner * IOCTL for getting asynchronous notification from driver 1696edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner * ========================================================*/ 1706edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 1716edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner/*IOCTL params: InputParam - NULL, OutputParam - struct vdec_msginfo*/ 1726edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_IOCTL_GET_NEXT_MSG \ 1736edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner _IOR(VDEC_IOCTL_MAGIC, 25, struct vdec_ioctl_msg) 1746edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 1756edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_IOCTL_STOP_NEXT_MSG _IO(VDEC_IOCTL_MAGIC, 26) 1766edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 1776edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#define VDEC_IOCTL_GET_NUMBER_INSTANCES \ 1786edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner _IOR(VDEC_IOCTL_MAGIC, 27, struct vdec_ioctl_msg) 1796edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 180dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev#define VDEC_IOCTL_SET_PICTURE_ORDER \ 181dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev _IOW(VDEC_IOCTL_MAGIC, 28, struct vdec_ioctl_msg) 182dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev 183dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev#define VDEC_IOCTL_SET_FRAME_RATE \ 184dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev _IOW(VDEC_IOCTL_MAGIC, 29, struct vdec_ioctl_msg) 185dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev 186dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev#define VDEC_IOCTL_SET_H264_MV_BUFFER \ 187dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev _IOW(VDEC_IOCTL_MAGIC, 30, struct vdec_ioctl_msg) 188dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev 189dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev#define VDEC_IOCTL_FREE_H264_MV_BUFFER \ 190dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev _IOW(VDEC_IOCTL_MAGIC, 31, struct vdec_ioctl_msg) 191dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev 192dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev#define VDEC_IOCTL_GET_MV_BUFFER_SIZE \ 193dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev _IOR(VDEC_IOCTL_MAGIC, 32, struct vdec_ioctl_msg) 194dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev 195dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev#define VDEC_IOCTL_SET_IDR_ONLY_DECODING \ 196dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev _IO(VDEC_IOCTL_MAGIC, 33) 197dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev 198dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev#define VDEC_IOCTL_SET_CONT_ON_RECONFIG \ 199dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev _IO(VDEC_IOCTL_MAGIC, 34) 200dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev 201dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev#define VDEC_IOCTL_SET_DISABLE_DMX \ 202dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev _IOW(VDEC_IOCTL_MAGIC, 35, struct vdec_ioctl_msg) 203dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev 204dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev#define VDEC_IOCTL_GET_DISABLE_DMX \ 205dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev _IOR(VDEC_IOCTL_MAGIC, 36, struct vdec_ioctl_msg) 206dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev 207dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev#define VDEC_IOCTL_GET_DISABLE_DMX_SUPPORT \ 208dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev _IOR(VDEC_IOCTL_MAGIC, 37, struct vdec_ioctl_msg) 209dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev 2106edab35481161575425a4666bedca9c92892bf69David 'Digit' Turnerenum vdec_picture { 2116edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner PICTURE_TYPE_I, 2126edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner PICTURE_TYPE_P, 2136edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner PICTURE_TYPE_B, 2146edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner PICTURE_TYPE_BI, 2156edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner PICTURE_TYPE_SKIP, 216dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev PICTURE_TYPE_IDR, 2176edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner PICTURE_TYPE_UNKNOWN 2186edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner}; 2196edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 2206edab35481161575425a4666bedca9c92892bf69David 'Digit' Turnerenum vdec_buffer { 2216edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_BUFFER_TYPE_INPUT, 2226edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_BUFFER_TYPE_OUTPUT 2236edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner}; 2246edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 2256edab35481161575425a4666bedca9c92892bf69David 'Digit' Turnerstruct vdec_allocatorproperty { 2266edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner enum vdec_buffer buffer_type; 2276edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner uint32_t mincount; 2286edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner uint32_t maxcount; 2296edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner uint32_t actualcount; 230dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev size_t buffer_size; 2316edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner uint32_t alignment; 2326edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner uint32_t buf_poolid; 2336edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner}; 2346edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 2356edab35481161575425a4666bedca9c92892bf69David 'Digit' Turnerstruct vdec_bufferpayload { 236dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev void __user *bufferaddr; 237dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev size_t buffer_len; 2386edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner int pmem_fd; 239dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev size_t offset; 240dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev size_t mmaped_size; 2416edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner}; 2426edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 2436edab35481161575425a4666bedca9c92892bf69David 'Digit' Turnerstruct vdec_setbuffer_cmd { 2446edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner enum vdec_buffer buffer_type; 2456edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner struct vdec_bufferpayload buffer; 2466edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner}; 2476edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 2486edab35481161575425a4666bedca9c92892bf69David 'Digit' Turnerstruct vdec_fillbuffer_cmd { 2496edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner struct vdec_bufferpayload buffer; 2506edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner void *client_data; 2516edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner}; 2526edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 2536edab35481161575425a4666bedca9c92892bf69David 'Digit' Turnerenum vdec_bufferflush { 2546edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_FLUSH_TYPE_INPUT, 2556edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_FLUSH_TYPE_OUTPUT, 2566edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_FLUSH_TYPE_ALL 2576edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner}; 2586edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 2596edab35481161575425a4666bedca9c92892bf69David 'Digit' Turnerenum vdec_codec { 2606edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_CODECTYPE_H264 = 0x1, 2616edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_CODECTYPE_H263 = 0x2, 2626edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_CODECTYPE_MPEG4 = 0x3, 2636edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_CODECTYPE_DIVX_3 = 0x4, 2646edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_CODECTYPE_DIVX_4 = 0x5, 2656edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_CODECTYPE_DIVX_5 = 0x6, 2666edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_CODECTYPE_DIVX_6 = 0x7, 2676edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_CODECTYPE_XVID = 0x8, 2686edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_CODECTYPE_MPEG1 = 0x9, 2696edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_CODECTYPE_MPEG2 = 0xa, 2706edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_CODECTYPE_VC1 = 0xb, 2716edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_CODECTYPE_VC1_RCV = 0xc 2726edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner}; 2736edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 2746edab35481161575425a4666bedca9c92892bf69David 'Digit' Turnerenum vdec_mpeg2_profile { 2756edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_MPEG2ProfileSimple = 0x1, 2766edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_MPEG2ProfileMain = 0x2, 2776edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_MPEG2Profile422 = 0x4, 2786edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_MPEG2ProfileSNR = 0x8, 2796edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_MPEG2ProfileSpatial = 0x10, 2806edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_MPEG2ProfileHigh = 0x20, 2816edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_MPEG2ProfileKhronosExtensions = 0x6F000000, 2826edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_MPEG2ProfileVendorStartUnused = 0x7F000000, 2836edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_MPEG2ProfileMax = 0x7FFFFFFF 2846edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner}; 2856edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 2866edab35481161575425a4666bedca9c92892bf69David 'Digit' Turnerenum vdec_mpeg2_level { 2876edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 2886edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_MPEG2LevelLL = 0x1, 2896edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_MPEG2LevelML = 0x2, 2906edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_MPEG2LevelH14 = 0x4, 2916edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_MPEG2LevelHL = 0x8, 2926edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_MPEG2LevelKhronosExtensions = 0x6F000000, 2936edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_MPEG2LevelVendorStartUnused = 0x7F000000, 2946edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_MPEG2LevelMax = 0x7FFFFFFF 2956edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner}; 2966edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 2976edab35481161575425a4666bedca9c92892bf69David 'Digit' Turnerenum vdec_mpeg4_profile { 2986edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_MPEG4ProfileSimple = 0x01, 2996edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_MPEG4ProfileSimpleScalable = 0x02, 3006edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_MPEG4ProfileCore = 0x04, 3016edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_MPEG4ProfileMain = 0x08, 3026edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_MPEG4ProfileNbit = 0x10, 3036edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_MPEG4ProfileScalableTexture = 0x20, 3046edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_MPEG4ProfileSimpleFace = 0x40, 3056edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_MPEG4ProfileSimpleFBA = 0x80, 3066edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_MPEG4ProfileBasicAnimated = 0x100, 3076edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_MPEG4ProfileHybrid = 0x200, 3086edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_MPEG4ProfileAdvancedRealTime = 0x400, 3096edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_MPEG4ProfileCoreScalable = 0x800, 3106edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_MPEG4ProfileAdvancedCoding = 0x1000, 3116edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_MPEG4ProfileAdvancedCore = 0x2000, 3126edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_MPEG4ProfileAdvancedScalable = 0x4000, 3136edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_MPEG4ProfileAdvancedSimple = 0x8000, 3146edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_MPEG4ProfileKhronosExtensions = 0x6F000000, 3156edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_MPEG4ProfileVendorStartUnused = 0x7F000000, 3166edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_MPEG4ProfileMax = 0x7FFFFFFF 3176edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner}; 3186edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 3196edab35481161575425a4666bedca9c92892bf69David 'Digit' Turnerenum vdec_mpeg4_level { 3206edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_MPEG4Level0 = 0x01, 3216edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_MPEG4Level0b = 0x02, 3226edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_MPEG4Level1 = 0x04, 3236edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_MPEG4Level2 = 0x08, 3246edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_MPEG4Level3 = 0x10, 3256edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_MPEG4Level4 = 0x20, 3266edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_MPEG4Level4a = 0x40, 3276edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_MPEG4Level5 = 0x80, 3286edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_MPEG4LevelKhronosExtensions = 0x6F000000, 3296edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_MPEG4LevelVendorStartUnused = 0x7F000000, 3306edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_MPEG4LevelMax = 0x7FFFFFFF 3316edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner}; 3326edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 3336edab35481161575425a4666bedca9c92892bf69David 'Digit' Turnerenum vdec_avc_profile { 3346edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_AVCProfileBaseline = 0x01, 3356edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_AVCProfileMain = 0x02, 3366edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_AVCProfileExtended = 0x04, 3376edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_AVCProfileHigh = 0x08, 3386edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_AVCProfileHigh10 = 0x10, 3396edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_AVCProfileHigh422 = 0x20, 3406edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_AVCProfileHigh444 = 0x40, 3416edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_AVCProfileKhronosExtensions = 0x6F000000, 3426edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_AVCProfileVendorStartUnused = 0x7F000000, 3436edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_AVCProfileMax = 0x7FFFFFFF 3446edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner}; 3456edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 3466edab35481161575425a4666bedca9c92892bf69David 'Digit' Turnerenum vdec_avc_level { 3476edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_AVCLevel1 = 0x01, 3486edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_AVCLevel1b = 0x02, 3496edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_AVCLevel11 = 0x04, 3506edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_AVCLevel12 = 0x08, 3516edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_AVCLevel13 = 0x10, 3526edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_AVCLevel2 = 0x20, 3536edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_AVCLevel21 = 0x40, 3546edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_AVCLevel22 = 0x80, 3556edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_AVCLevel3 = 0x100, 3566edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_AVCLevel31 = 0x200, 3576edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_AVCLevel32 = 0x400, 3586edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_AVCLevel4 = 0x800, 3596edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_AVCLevel41 = 0x1000, 3606edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_AVCLevel42 = 0x2000, 3616edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_AVCLevel5 = 0x4000, 3626edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_AVCLevel51 = 0x8000, 3636edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_AVCLevelKhronosExtensions = 0x6F000000, 3646edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_AVCLevelVendorStartUnused = 0x7F000000, 3656edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_AVCLevelMax = 0x7FFFFFFF 3666edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner}; 3676edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 3686edab35481161575425a4666bedca9c92892bf69David 'Digit' Turnerenum vdec_divx_profile { 3696edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_DIVXProfile_qMobile = 0x01, 3706edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_DIVXProfile_Mobile = 0x02, 3716edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_DIVXProfile_HD = 0x04, 3726edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_DIVXProfile_Handheld = 0x08, 3736edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_DIVXProfile_Portable = 0x10, 3746edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_DIVXProfile_HomeTheater = 0x20 3756edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner}; 3766edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 3776edab35481161575425a4666bedca9c92892bf69David 'Digit' Turnerenum vdec_xvid_profile { 3786edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_XVIDProfile_Simple = 0x1, 3796edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_XVIDProfile_Advanced_Realtime_Simple = 0x2, 3806edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_XVIDProfile_Advanced_Simple = 0x4 3816edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner}; 3826edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 3836edab35481161575425a4666bedca9c92892bf69David 'Digit' Turnerenum vdec_xvid_level { 3846edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_XVID_LEVEL_S_L0 = 0x1, 3856edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_XVID_LEVEL_S_L1 = 0x2, 3866edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_XVID_LEVEL_S_L2 = 0x4, 3876edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_XVID_LEVEL_S_L3 = 0x8, 3886edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_XVID_LEVEL_ARTS_L1 = 0x10, 3896edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_XVID_LEVEL_ARTS_L2 = 0x20, 3906edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_XVID_LEVEL_ARTS_L3 = 0x40, 3916edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_XVID_LEVEL_ARTS_L4 = 0x80, 3926edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_XVID_LEVEL_AS_L0 = 0x100, 3936edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_XVID_LEVEL_AS_L1 = 0x200, 3946edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_XVID_LEVEL_AS_L2 = 0x400, 3956edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_XVID_LEVEL_AS_L3 = 0x800, 3966edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_XVID_LEVEL_AS_L4 = 0x1000 3976edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner}; 3986edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 3996edab35481161575425a4666bedca9c92892bf69David 'Digit' Turnerenum vdec_h263profile { 4006edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_H263ProfileBaseline = 0x01, 4016edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_H263ProfileH320Coding = 0x02, 4026edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_H263ProfileBackwardCompatible = 0x04, 4036edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_H263ProfileISWV2 = 0x08, 4046edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_H263ProfileISWV3 = 0x10, 4056edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_H263ProfileHighCompression = 0x20, 4066edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_H263ProfileInternet = 0x40, 4076edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_H263ProfileInterlace = 0x80, 4086edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_H263ProfileHighLatency = 0x100, 4096edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_H263ProfileKhronosExtensions = 0x6F000000, 4106edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_H263ProfileVendorStartUnused = 0x7F000000, 4116edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_H263ProfileMax = 0x7FFFFFFF 4126edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner}; 4136edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 4146edab35481161575425a4666bedca9c92892bf69David 'Digit' Turnerenum vdec_h263level { 4156edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_H263Level10 = 0x01, 4166edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_H263Level20 = 0x02, 4176edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_H263Level30 = 0x04, 4186edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_H263Level40 = 0x08, 4196edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_H263Level45 = 0x10, 4206edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_H263Level50 = 0x20, 4216edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_H263Level60 = 0x40, 4226edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_H263Level70 = 0x80, 4236edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_H263LevelKhronosExtensions = 0x6F000000, 4246edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_H263LevelVendorStartUnused = 0x7F000000, 4256edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_H263LevelMax = 0x7FFFFFFF 4266edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner}; 4276edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 4286edab35481161575425a4666bedca9c92892bf69David 'Digit' Turnerenum vdec_wmv_format { 4296edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_WMVFormatUnused = 0x01, 4306edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_WMVFormat7 = 0x02, 4316edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_WMVFormat8 = 0x04, 4326edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_WMVFormat9 = 0x08, 4336edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_WMFFormatKhronosExtensions = 0x6F000000, 4346edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_WMFFormatVendorStartUnused = 0x7F000000, 4356edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_WMVFormatMax = 0x7FFFFFFF 4366edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner}; 4376edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 4386edab35481161575425a4666bedca9c92892bf69David 'Digit' Turnerenum vdec_vc1_profile { 4396edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_VC1ProfileSimple = 0x1, 4406edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_VC1ProfileMain = 0x2, 4416edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_VC1ProfileAdvanced = 0x4 4426edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner}; 4436edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 4446edab35481161575425a4666bedca9c92892bf69David 'Digit' Turnerenum vdec_vc1_level { 4456edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_VC1_LEVEL_S_Low = 0x1, 4466edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_VC1_LEVEL_S_Medium = 0x2, 4476edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_VC1_LEVEL_M_Low = 0x4, 4486edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_VC1_LEVEL_M_Medium = 0x8, 4496edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_VC1_LEVEL_M_High = 0x10, 4506edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_VC1_LEVEL_A_L0 = 0x20, 4516edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_VC1_LEVEL_A_L1 = 0x40, 4526edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_VC1_LEVEL_A_L2 = 0x80, 4536edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_VC1_LEVEL_A_L3 = 0x100, 4546edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_VC1_LEVEL_A_L4 = 0x200 4556edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner}; 4566edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 4576edab35481161575425a4666bedca9c92892bf69David 'Digit' Turnerstruct vdec_profile_level { 4586edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner uint32_t profiles; 4596edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner uint32_t levels; 4606edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner}; 4616edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 4626edab35481161575425a4666bedca9c92892bf69David 'Digit' Turnerenum vdec_interlaced_format { 4636edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_InterlaceFrameProgressive = 0x1, 4646edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_InterlaceInterleaveFrameTopFieldFirst = 0x2, 4656edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_InterlaceInterleaveFrameBottomFieldFirst = 0x4 4666edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner}; 4676edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 4686edab35481161575425a4666bedca9c92892bf69David 'Digit' Turnerenum vdec_output_fromat { 4696edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_YUV_FORMAT_NV12 = 0x1, 4706edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner VDEC_YUV_FORMAT_TILE_4x2 = 0x2 4716edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner}; 4726edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 473dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchevenum vdec_output_order { 474dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev VDEC_ORDER_DISPLAY = 0x1, 475dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev VDEC_ORDER_DECODE = 0x2 476dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev}; 477dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev 4786edab35481161575425a4666bedca9c92892bf69David 'Digit' Turnerstruct vdec_picsize { 4796edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner uint32_t frame_width; 4806edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner uint32_t frame_height; 4816edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner uint32_t stride; 4826edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner uint32_t scan_lines; 4836edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner}; 4846edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 4856edab35481161575425a4666bedca9c92892bf69David 'Digit' Turnerstruct vdec_seqheader { 486dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev void __user *ptr_seqheader; 487dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev size_t seq_header_len; 4886edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner int pmem_fd; 489dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev size_t pmem_offset; 4906edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner}; 4916edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 4926edab35481161575425a4666bedca9c92892bf69David 'Digit' Turnerstruct vdec_mberror { 493dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev void __user *ptr_errormap; 494dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev size_t err_mapsize; 4956edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner}; 4966edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 4976edab35481161575425a4666bedca9c92892bf69David 'Digit' Turnerstruct vdec_input_frameinfo { 498dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev void __user *bufferaddr; 499dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev size_t offset; 500dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev size_t datalen; 5016edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner uint32_t flags; 5026edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner int64_t timestamp; 5036edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner void *client_data; 5046edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner int pmem_fd; 505dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev size_t pmem_offset; 506dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev void __user *desc_addr; 507dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev uint32_t desc_size; 5086edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner}; 5096edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 5106edab35481161575425a4666bedca9c92892bf69David 'Digit' Turnerstruct vdec_framesize { 511dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev uint32_t left; 512dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev uint32_t top; 513dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev uint32_t right; 514dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev uint32_t bottom; 515dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev}; 516dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev 517dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchevstruct vdec_aspectratioinfo { 518dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev uint32_t aspect_ratio; 519dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev uint32_t par_width; 520dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev uint32_t par_height; 5216edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner}; 5226edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 5236edab35481161575425a4666bedca9c92892bf69David 'Digit' Turnerstruct vdec_output_frameinfo { 524dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev void __user *bufferaddr; 525dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev size_t offset; 526dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev size_t len; 5276edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner uint32_t flags; 5286edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner int64_t time_stamp; 529dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev enum vdec_picture pic_type; 5306edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner void *client_data; 5316edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner void *input_frame_clientdata; 5326edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner struct vdec_framesize framesize; 533dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev enum vdec_interlaced_format interlaced_format; 534dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev struct vdec_aspectratioinfo aspect_ratio_info; 5356edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner}; 5366edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 5376edab35481161575425a4666bedca9c92892bf69David 'Digit' Turnerunion vdec_msgdata { 5386edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner struct vdec_output_frameinfo output_frame; 5396edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner void *input_frame_clientdata; 5406edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner}; 5416edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner 5426edab35481161575425a4666bedca9c92892bf69David 'Digit' Turnerstruct vdec_msginfo { 5436edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner uint32_t status_code; 5446edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner uint32_t msgcode; 5456edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner union vdec_msgdata msgdata; 546dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev size_t msgdatasize; 5476edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner}; 548dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev 549dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchevstruct vdec_framerate { 550dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev unsigned long fps_denominator; 551dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev unsigned long fps_numerator; 552dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev}; 553dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev 554dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchevstruct vdec_h264_mv{ 555dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev size_t size; 556dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev int count; 557dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev int pmem_fd; 558dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev int offset; 559dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev}; 560dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev 561dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchevstruct vdec_mv_buff_size{ 562dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev int width; 563dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev int height; 564dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev int size; 565dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev int alignment; 566dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev}; 567dc8310d157158d68cfb1a2363f791f89f45e0610Iliyan Malchev 5686edab35481161575425a4666bedca9c92892bf69David 'Digit' Turner#endif /* end of macro _VDECDECODER_H_ */ 569