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