11094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru/* Copyright (c) 2008-2009, Code Aurora Forum. All rights reserved.
21094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru *
31094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * Redistribution and use in source and binary forms, with or without
41094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * modification, are permitted provided that the following conditions are met:
51094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru *     * Redistributions of source code must retain the above copyright
61094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru *       notice, this list of conditions and the following disclaimer.
71094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru *     * Redistributions in binary form must reproduce the above copyright
81094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru *       notice, this list of conditions and the following disclaimer in the
91094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru *       documentation and/or other materials provided with the distribution.
101094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru *     * Neither the name of Code Aurora nor
111094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru *       the names of its contributors may be used to endorse or promote
121094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru *       products derived from this software without specific prior written
131094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru *       permission.
141094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru *
151094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
161094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
171094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
181094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * NON-INFRINGEMENT ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
191094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
201094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
211094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
221094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
231094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
241094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
251094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
261094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru *
271094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru */
281094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru
291094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#ifndef _MSM_VDEC_H_
301094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define _MSM_VDEC_H_
311094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru
321094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#include <linux/types.h>
331094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru
341094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define VDEC_IOCTL_MAGIC 'v'
351094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru
361094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define VDEC_IOCTL_INITIALIZE   _IOWR(VDEC_IOCTL_MAGIC, 1, struct vdec_init)
371094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define VDEC_IOCTL_SETBUFFERS   _IOW(VDEC_IOCTL_MAGIC, 2, struct vdec_buffer)
381094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define VDEC_IOCTL_QUEUE        _IOWR(VDEC_IOCTL_MAGIC, 3, \
391094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru					struct vdec_input_buf)
401094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define VDEC_IOCTL_REUSEFRAMEBUFFER  _IOW(VDEC_IOCTL_MAGIC, 4, unsigned int)
411094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define VDEC_IOCTL_FLUSH        _IOW(VDEC_IOCTL_MAGIC, 5, unsigned int)
421094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define VDEC_IOCTL_EOS          _IO(VDEC_IOCTL_MAGIC, 6)
431094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define VDEC_IOCTL_GETMSG       _IOR(VDEC_IOCTL_MAGIC, 7, struct vdec_msg)
441094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define VDEC_IOCTL_CLOSE        _IO(VDEC_IOCTL_MAGIC, 8)
451094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define VDEC_IOCTL_FREEBUFFERS  _IOW(VDEC_IOCTL_MAGIC, 9, struct vdec_buf_info)
461094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define VDEC_IOCTL_GETDECATTRIBUTES   _IOR(VDEC_IOCTL_MAGIC, 10, \
471094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru						struct vdec_dec_attributes)
481094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru
491094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queruenum {
501094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	VDEC_FRAME_DECODE_OK,
511094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	VDEC_FRAME_DECODE_ERR,
521094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	VDEC_FATAL_ERR,
531094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	VDEC_FLUSH_FINISH,
541094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	VDEC_EOS,
551094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	VDEC_FRAME_FLUSH,
561094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	VDEC_STREAM_SWITCH,
571094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	VDEC_SUSPEND_FINISH,
581094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	VDEC_BUFFER_CONSUMED
591094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru};
601094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru
611094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queruenum {
621094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	VDEC_FLUSH_INPUT,
631094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	VDEC_FLUSH_OUTPUT,
641094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	VDEC_FLUSH_ALL
651094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru};
661094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru
671094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queruenum {
681094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	VDEC_BUFFER_TYPE_INPUT,
691094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	VDEC_BUFFER_TYPE_OUTPUT,
701094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	VDEC_BUFFER_TYPE_INTERNAL1,
711094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	VDEC_BUFFER_TYPE_INTERNAL2,
721094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru};
731094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru
741094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queruenum {
751094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	VDEC_QUEUE_SUCCESS,
761094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	VDEC_QUEUE_FAILED,
771094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	VDEC_QUEUE_BADSTATE,
781094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru};
791094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru
801094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Querustruct vdec_input_buf_info {
811094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 offset;
821094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 data;
831094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 size;
841094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	int timestamp_lo;
851094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	int timestamp_hi;
861094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	int avsync_state;
871094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 flags;
881094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru};
891094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru
901094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Querustruct vdec_buf_desc {
911094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 bufsize;
921094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 num_min_buffers;
931094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 num_max_buffers;
941094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru};
951094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru
961094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Querustruct vdec_buf_req {
971094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 max_input_queue_size;
981094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	struct vdec_buf_desc input;
991094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	struct vdec_buf_desc output;
1001094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	struct vdec_buf_desc dec_req1;
1011094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	struct vdec_buf_desc dec_req2;
1021094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru};
1031094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru
1041094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Querustruct vdec_region_info {
1051094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 src_id;
1061094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 offset;
1071094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 size;
1081094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru};
1091094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru
1101094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Querustruct vdec_config {
1111094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 fourcc;		/* video format */
1121094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 width;		/* source width */
1131094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 height;		/* source height */
1141094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 order;		/* render decoder order */
1151094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 notify_enable;	/* enable notify input buffer done event */
1161094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 vc1_rowbase;
1171094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 h264_startcode_detect;
1181094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 h264_nal_len_size;
1191094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 postproc_flag;
1201094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 fruc_enable;
1211094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 reserved;
1221094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru};
1231094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru
1241094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Querustruct vdec_vc1_panscan_regions {
1251094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	int num;
1261094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	int width[4];
1271094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	int height[4];
1281094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	int xoffset[4];
1291094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	int yoffset[4];
1301094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru};
1311094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru
1321094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Querustruct vdec_cropping_window {
1331094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 x1;
1341094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 y1;
1351094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 x2;
1361094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 y2;
1371094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru};
1381094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru
1391094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Querustruct vdec_frame_info {
1401094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 status;		/* video decode status */
1411094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 offset;		/* buffer offset */
1421094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 data1;		/* user data field 1 */
1431094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 data2;		/* user data field 2 */
1441094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	int timestamp_lo;	/* lower 32 bits timestamp, in msec */
1451094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	int timestamp_hi;	/* higher 32 bits timestamp, in msec */
1461094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	int cal_timestamp_lo;	/* lower 32 bits cal timestamp, in msec */
1471094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	int cal_timestamp_hi;	/* higher  32 bits cal timestamp, in msec */
1481094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 dec_width;		/* frame roi width */
1491094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 dec_height;		/* frame roi height */
1501094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	struct vdec_cropping_window cwin;	/* The frame cropping window */
1511094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 picture_type[2];	/* picture coding type */
1521094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 picture_format;	/* picture coding format */
1531094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 vc1_rangeY;		/* luma range mapping */
1541094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 vc1_rangeUV;	/* chroma range mapping */
1551094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 picture_resolution;	/* scaling factor */
1561094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 frame_disp_repeat;	/* how often repeated by disp */
1571094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 repeat_first_field;	/* repeat 1st field after 2nd */
1581094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 top_field_first;	/* top field displayed first */
1591094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 interframe_interp;	/* not for inter-frame interp */
1601094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	struct vdec_vc1_panscan_regions panscan;	/* pan region */
1611094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 concealed_macblk_num;	/* number of concealed macro blk */
1621094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 flags;		/* input flags */
1631094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 performance_stats;	/* performance statistics returned by decoder */
1641094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 data3;		/* user data field 3 */
1651094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru};
1661094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru
1671094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Querustruct vdec_buf_info {
1681094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 buf_type;
1691094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	struct vdec_region_info region;
1701094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 num_buf;
1711094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 islast;
1721094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru};
1731094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru
1741094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Querustruct vdec_buffer {
1751094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 pmem_id;
1761094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	struct vdec_buf_info buf;
1771094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru};
1781094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru
1791094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Querustruct vdec_sequence {
1801094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u8 *header;
1811094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 len;
1821094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru};
1831094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru
1841094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Querustruct vdec_config_sps {
1851094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	struct vdec_config cfg;
1861094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	struct vdec_sequence seq;
1871094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru};
1881094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru
1891094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define VDEC_MSG_REUSEINPUTBUFFER 	1
1901094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#define VDEC_MSG_FRAMEDONE 		2
1911094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru
1921094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Querustruct vdec_msg {
1931094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 id;
1941094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru
1951094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	union {
1961094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru		/* id = VDEC_MSG_REUSEINPUTBUFFER */
1971094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru		u32 buf_id;
1981094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru		/* id = VDEC_MSG_FRAMEDONE */
1991094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru		struct vdec_frame_info vfr_info;
2001094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	};
2011094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru};
2021094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru
2031094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Querustruct vdec_init {
2041094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	struct vdec_config_sps sps_cfg;
2051094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	struct vdec_buf_req *buf_req;
2061094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru};
2071094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru
2081094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Querustruct vdec_input_buf {
2091094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 pmem_id;
2101094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	struct vdec_input_buf_info buffer;
2111094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	struct vdec_queue_status *queue_status;
2121094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru};
2131094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru
2141094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Querustruct vdec_queue_status {
2151094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 status;
2161094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru};
2171094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru
2181094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Querustruct vdec_dec_attributes {
2191094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 fourcc;
2201094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 profile;
2211094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 level;
2221094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 dec_pic_width;
2231094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	u32 dec_pic_height;
2241094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	struct vdec_buf_desc input;
2251094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	struct vdec_buf_desc output;
2261094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	struct vdec_buf_desc dec_req1;
2271094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru	struct vdec_buf_desc dec_req2;
2281094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru};
2291094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru
2301094b68a0b1abb6616b613d8e4069ff71f882ce0Jean-Baptiste Queru#endif /* _MSM_VDEC_H_ */
231