1dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner/* Copyright (c) 2008-2009, Code Aurora Forum. All rights reserved.
2dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner *
3dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner * Redistribution and use in source and binary forms, with or without
4dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner * modification, are permitted provided that the following conditions are met:
5dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner *     * Redistributions of source code must retain the above copyright
6dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner *       notice, this list of conditions and the following disclaimer.
7dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner *     * Redistributions in binary form must reproduce the above copyright
8dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner *       notice, this list of conditions and the following disclaimer in the
9dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner *       documentation and/or other materials provided with the distribution.
10dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner *     * Neither the name of Code Aurora nor
11dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner *       the names of its contributors may be used to endorse or promote
12dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner *       products derived from this software without specific prior written
13dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner *       permission.
14dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner *
15dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner * NON-INFRINGEMENT ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
19dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
20dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
21dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
22dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
23dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
24dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
25dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner *
27dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner */
28dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
29dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner#ifndef _MSM_VENC_H_
30dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner#define _MSM_VENC_H_
31dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
32dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner#include <linux/types.h>
33dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
34dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner#define VENC_MAX_RECON_BUFFERS 2
35dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
36dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner#define VENC_FLAG_EOS                   0x00000001
37dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner#define VENC_FLAG_END_OF_FRAME          0x00000010
38dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner#define VENC_FLAG_SYNC_FRAME            0x00000020
39dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner#define VENC_FLAG_EXTRA_DATA            0x00000040
40dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner#define VENC_FLAG_CODEC_CONFIG          0x00000080
41dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
42dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turnerenum venc_flush_type {
43dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_FLUSH_INPUT,
44dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_FLUSH_OUTPUT,
45dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_FLUSH_ALL
46dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner};
47dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
48dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turnerenum venc_state_type {
49dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_STATE_PAUSE = 0x1,
50dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_STATE_START = 0x2,
51dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_STATE_STOP = 0x4
52dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner};
53dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
54dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turnerenum venc_event_type_enum {
55dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_EVENT_START_STATUS,
56dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_EVENT_STOP_STATUS,
57dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_EVENT_SUSPEND_STATUS,
58dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_EVENT_RESUME_STATUS,
59dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_EVENT_FLUSH_STATUS,
60dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_EVENT_RELEASE_INPUT,
61dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_EVENT_DELIVER_OUTPUT,
62dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_EVENT_UNKNOWN_STATUS
63dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner};
64dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
65dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turnerenum venc_status_code {
66dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_STATUS_SUCCESS,
67dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_STATUS_ERROR,
68dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_STATUS_INVALID_STATE,
69dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_STATUS_FLUSHING,
70dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_STATUS_INVALID_PARAM,
71dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_STATUS_CMD_QUEUE_FULL,
72dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_STATUS_CRITICAL,
73dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_STATUS_INSUFFICIENT_RESOURCES,
74dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_STATUS_TIMEOUT
75dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner};
76dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
77dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turnerenum venc_msg_code {
78dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_MSG_INDICATION,
79dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_MSG_INPUT_BUFFER_DONE,
80dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_MSG_OUTPUT_BUFFER_DONE,
81dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_MSG_NEED_OUTPUT_BUFFER,
82dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_MSG_FLUSH,
83dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_MSG_START,
84dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_MSG_STOP,
85dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_MSG_PAUSE,
86dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_MSG_RESUME,
87dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_MSG_STOP_READING_MSG
88dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner};
89dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
90dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turnerenum venc_error_code {
91dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_S_SUCCESS,
92dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_S_EFAIL,
93dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_S_EFATAL,
94dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_S_EBADPARAM,
95dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_S_EINVALSTATE,
96dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_S_ENOSWRES,
97dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_S_ENOHWRES,
98dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_S_EBUFFREQ,
99dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_S_EINVALCMD,
100dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_S_ETIMEOUT,
101dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_S_ENOREATMPT,
102dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_S_ENOPREREQ,
103dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_S_ECMDQFULL,
104dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_S_ENOTSUPP,
105dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_S_ENOTIMPL,
106dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_S_ENOTPMEM,
107dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_S_EFLUSHED,
108dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_S_EINSUFBUF,
109dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_S_ESAMESTATE,
110dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_S_EINVALTRANS
111dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner};
112dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
113dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turnerenum venc_mem_region_enum {
114dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_PMEM_EBI1,
115dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	VENC_PMEM_SMI
116dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner};
117dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
118dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turnerstruct venc_buf_type {
119dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int region;
120dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int phys;
121dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int size;
122dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	int offset;
123dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner};
124dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
125dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turnerstruct venc_qp_range {
126dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int min_qp;
127dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int max_qp;
128dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner};
129dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
130dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turnerstruct venc_frame_rate {
131dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int frame_rate_num;
132dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int frame_rate_den;
133dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner};
134dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
135dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turnerstruct venc_slice_info {
136dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int slice_mode;
137dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int units_per_slice;
138dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner};
139dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
140dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turnerstruct venc_extra_data {
141dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int slice_extra_data_flag;
142dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int slice_client_data1;
143dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int slice_client_data2;
144dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int slice_client_data3;
145dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int none_extra_data_flag;
146dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int none_client_data1;
147dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int none_client_data2;
148dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int none_client_data3;
149dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner};
150dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
151dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turnerstruct venc_common_config {
152dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int standard;
153dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int input_frame_height;
154dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int input_frame_width;
155dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int output_frame_height;
156dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int output_frame_width;
157dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int rotation_angle;
158dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int intra_period;
159dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int rate_control;
160dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	struct venc_frame_rate frame_rate;
161dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int bitrate;
162dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	struct venc_qp_range qp_range;
163dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int iframe_qp;
164dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int pframe_qp;
165dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	struct venc_slice_info slice_config;
166dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	struct venc_extra_data extra_data;
167dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner};
168dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
169dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turnerstruct venc_nonio_buf_config {
170dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	struct venc_buf_type recon_buf1;
171dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	struct venc_buf_type recon_buf2;
172dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	struct venc_buf_type wb_buf;
173dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	struct venc_buf_type cmd_buf;
174dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	struct venc_buf_type vlc_buf;
175dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner};
176dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
177dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turnerstruct venc_mpeg4_config {
178dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int profile;
179dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int level;
180dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int time_resolution;
181dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int ac_prediction;
182dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int hec_interval;
183dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int data_partition;
184dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int short_header;
185dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int rvlc_enable;
186dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner};
187dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
188dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turnerstruct venc_h263_config {
189dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int profile;
190dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int level;
191dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner};
192dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
193dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turnerstruct venc_h264_config {
194dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int profile;
195dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int level;
196dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int max_nal;
197dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int idr_period;
198dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner};
199dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
200dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turnerstruct venc_pmem {
201dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	int src;
202dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	int fd;
203dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int offset;
204dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	void *virt;
205dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	void *phys;
206dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int size;
207dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner};
208dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
209dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turnerstruct venc_buffer {
210dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned char *ptr_buffer;
211dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int size;
212dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int len;
213dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int offset;
214dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	long long time_stamp;
215dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int flags;
216dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int client_data;
217dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner};
218dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
219dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turnerstruct venc_buffers {
220dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	struct venc_pmem recon_buf[VENC_MAX_RECON_BUFFERS];
221dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	struct venc_pmem wb_buf;
222dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	struct venc_pmem cmd_buf;
223dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	struct venc_pmem vlc_buf;
224dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner};
225dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
226dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turnerstruct venc_buffer_flush {
227dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int flush_mode;
228dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner};
229dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
230dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turnerunion venc_msg_data {
231dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	struct venc_buffer buf;
232dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	struct venc_buffer_flush flush_ret;
233dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner};
234dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
235dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turnerstruct venc_msg {
236dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int status_code;
237dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int msg_code;
238dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	union venc_msg_data msg_data;
239dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	unsigned int msg_data_size;
240dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner};
241dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
242dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turnerunion venc_codec_config {
243dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	struct venc_mpeg4_config mpeg4_params;
244dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	struct venc_h263_config h263_params;
245dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	struct venc_h264_config h264_params;
246dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner};
247dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
248dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turnerstruct venc_q6_config {
249dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	struct venc_common_config config_params;
250dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	union venc_codec_config codec_params;
251dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	struct venc_nonio_buf_config buf_params;
252dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	void *callback_event;
253dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner};
254dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
255dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turnerstruct venc_hdr_config {
256dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	struct venc_common_config config_params;
257dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	union venc_codec_config codec_params;
258dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner};
259dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
260dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turnerstruct venc_init_config {
261dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	struct venc_q6_config q6_config;
262dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	struct venc_buffers q6_bufs;
263dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner};
264dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
265dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turnerstruct venc_seq_config {
266dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	int size;
267dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	struct venc_pmem buf;
268dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	struct venc_q6_config q6_config;
269dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner};
270dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
271dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner#define VENC_IOCTL_MAGIC 'V'
272dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
273dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner#define VENC_IOCTL_CMD_READ_NEXT_MSG \
274dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	_IOWR(VENC_IOCTL_MAGIC, 1, struct venc_msg)
275dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
276dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner#define VENC_IOCTL_CMD_STOP_READ_MSG  _IO(VENC_IOCTL_MAGIC, 2)
277dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
278dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner#define VENC_IOCTL_SET_INPUT_BUFFER \
279dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	_IOW(VENC_IOCTL_MAGIC, 3, struct venc_pmem)
280dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
281dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner#define VENC_IOCTL_SET_OUTPUT_BUFFER \
282dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	_IOW(VENC_IOCTL_MAGIC, 4, struct venc_pmem)
283dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
284dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner#define VENC_IOCTL_CMD_START _IOW(VENC_IOCTL_MAGIC, 5, struct venc_init_config)
285dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
286dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner#define VENC_IOCTL_CMD_ENCODE_FRAME \
287dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	_IOW(VENC_IOCTL_MAGIC, 6, struct venc_buffer)
288dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
289dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner#define VENC_IOCTL_CMD_FILL_OUTPUT_BUFFER \
290dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	_IOW(VENC_IOCTL_MAGIC, 7, struct venc_buffer)
291dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
292dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner#define VENC_IOCTL_CMD_FLUSH \
293dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	_IOW(VENC_IOCTL_MAGIC, 8, struct venc_buffer_flush)
294dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
295dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner#define VENC_IOCTL_CMD_PAUSE _IO(VENC_IOCTL_MAGIC, 9)
296dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
297dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner#define VENC_IOCTL_CMD_RESUME _IO(VENC_IOCTL_MAGIC, 10)
298dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
299dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner#define VENC_IOCTL_CMD_STOP _IO(VENC_IOCTL_MAGIC, 11)
300dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
301dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner#define VENC_IOCTL_SET_INTRA_PERIOD \
302dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	_IOW(VENC_IOCTL_MAGIC, 12, int)
303dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
304dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner#define VENC_IOCTL_CMD_REQUEST_IFRAME _IO(VENC_IOCTL_MAGIC, 13)
305dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
306dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner#define VENC_IOCTL_GET_SEQUENCE_HDR \
307dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	_IOWR(VENC_IOCTL_MAGIC, 14, struct venc_seq_config)
308dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
309dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner#define VENC_IOCTL_SET_INTRA_REFRESH \
310dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	_IOW(VENC_IOCTL_MAGIC, 15, int)
311dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
312dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner#define VENC_IOCTL_SET_FRAME_RATE \
313dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	_IOW(VENC_IOCTL_MAGIC, 16, struct venc_frame_rate)
314dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
315dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner#define VENC_IOCTL_SET_TARGET_BITRATE \
316dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	_IOW(VENC_IOCTL_MAGIC, 17, int)
317dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
318dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner#define VENC_IOCTL_SET_QP_RANGE \
319dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner	_IOW(VENC_IOCTL_MAGIC, 18, struct venc_qp_range)
320dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner
321dcd296979d92dcfbe1d7b0f2945969bb535cb636David 'Digit' Turner#endif
322