18611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#ifndef _MSM_VENC_H_ 28611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define _MSM_VENC_H_ 38611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 48611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#include <linux/types.h> 58611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 68611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VENC_MAX_RECON_BUFFERS 2 78611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 88611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VENC_FLAG_EOS 0x00000001 98611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VENC_FLAG_END_OF_FRAME 0x00000010 108611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VENC_FLAG_SYNC_FRAME 0x00000020 118611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VENC_FLAG_EXTRA_DATA 0x00000040 128611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VENC_FLAG_CODEC_CONFIG 0x00000080 138611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 148611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuenum venc_flush_type { 158611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_FLUSH_INPUT, 168611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_FLUSH_OUTPUT, 178611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_FLUSH_ALL 188611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 198611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 208611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuenum venc_state_type { 218611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_STATE_PAUSE = 0x1, 228611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_STATE_START = 0x2, 238611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_STATE_STOP = 0x4 248611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 258611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 268611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuenum venc_event_type_enum { 278611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_EVENT_START_STATUS, 288611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_EVENT_STOP_STATUS, 298611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_EVENT_SUSPEND_STATUS, 308611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_EVENT_RESUME_STATUS, 318611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_EVENT_FLUSH_STATUS, 328611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_EVENT_RELEASE_INPUT, 338611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_EVENT_DELIVER_OUTPUT, 348611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_EVENT_UNKNOWN_STATUS 358611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 368611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 378611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuenum venc_status_code { 388611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_STATUS_SUCCESS, 398611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_STATUS_ERROR, 408611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_STATUS_INVALID_STATE, 418611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_STATUS_FLUSHING, 428611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_STATUS_INVALID_PARAM, 438611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_STATUS_CMD_QUEUE_FULL, 448611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_STATUS_CRITICAL, 458611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_STATUS_INSUFFICIENT_RESOURCES, 468611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_STATUS_TIMEOUT 478611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 488611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 498611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuenum venc_msg_code { 508611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_MSG_INDICATION, 518611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_MSG_INPUT_BUFFER_DONE, 528611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_MSG_OUTPUT_BUFFER_DONE, 538611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_MSG_NEED_OUTPUT_BUFFER, 548611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_MSG_FLUSH, 558611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_MSG_START, 568611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_MSG_STOP, 578611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_MSG_PAUSE, 588611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_MSG_RESUME, 598611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_MSG_STOP_READING_MSG 608611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 618611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 628611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuenum venc_error_code { 638611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_S_SUCCESS, 648611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_S_EFAIL, 658611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_S_EFATAL, 668611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_S_EBADPARAM, 678611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_S_EINVALSTATE, 688611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_S_ENOSWRES, 698611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_S_ENOHWRES, 708611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_S_EBUFFREQ, 718611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_S_EINVALCMD, 728611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_S_ETIMEOUT, 738611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_S_ENOREATMPT, 748611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_S_ENOPREREQ, 758611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_S_ECMDQFULL, 768611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_S_ENOTSUPP, 778611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_S_ENOTIMPL, 788611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_S_ENOTPMEM, 798611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_S_EFLUSHED, 808611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_S_EINSUFBUF, 818611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_S_ESAMESTATE, 828611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_S_EINVALTRANS 838611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 848611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 858611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuenum venc_mem_region_enum { 868611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_PMEM_EBI1, 878611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu VENC_PMEM_SMI 888611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 898611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 908611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct venc_buf_type { 91f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 region; 92f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 phys; 93f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 size; 948611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int offset; 958611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 968611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 978611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct venc_qp_range { 98f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 min_qp; 99f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 max_qp; 1008611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 1018611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 1028611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct venc_frame_rate { 103f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 frame_rate_num; 104f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 frame_rate_den; 1058611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 1068611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 1078611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct venc_slice_info { 108f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 slice_mode; 109f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 units_per_slice; 1108611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 1118611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 1128611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct venc_extra_data { 113f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 slice_extra_data_flag; 114f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 slice_client_data1; 115f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 slice_client_data2; 116f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 slice_client_data3; 117f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 none_extra_data_flag; 118f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 none_client_data1; 119f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 none_client_data2; 120f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 none_client_data3; 1218611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 1228611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 1238611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct venc_common_config { 124f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 standard; 125f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 input_frame_height; 126f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 input_frame_width; 127f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 output_frame_height; 128f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 output_frame_width; 129f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 rotation_angle; 130f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 intra_period; 131f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 rate_control; 1328611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct venc_frame_rate frame_rate; 133f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 bitrate; 1348611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct venc_qp_range qp_range; 135f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 iframe_qp; 136f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 pframe_qp; 1378611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct venc_slice_info slice_config; 1388611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct venc_extra_data extra_data; 1398611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 1408611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 1418611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct venc_nonio_buf_config { 1428611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct venc_buf_type recon_buf1; 1438611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct venc_buf_type recon_buf2; 1448611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct venc_buf_type wb_buf; 1458611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct venc_buf_type cmd_buf; 1468611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct venc_buf_type vlc_buf; 1478611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 1488611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 1498611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct venc_mpeg4_config { 150f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 profile; 151f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 level; 152f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 time_resolution; 153f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 ac_prediction; 154f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 hec_interval; 155f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 data_partition; 156f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 short_header; 157f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 rvlc_enable; 1588611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 1598611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 1608611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct venc_h263_config { 161f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 profile; 162f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 level; 1638611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 1648611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 1658611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct venc_h264_config { 166f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 profile; 167f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 level; 168f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 max_nal; 169f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 idr_period; 1708611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 1718611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 1728611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct venc_pmem { 1738611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int src; 1748611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int fd; 175f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 offset; 1768611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu void *virt; 1778611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu void *phys; 178f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 size; 1798611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 1808611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 1818611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct venc_buffer { 1828611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu unsigned char *ptr_buffer; 183f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 size; 184f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 len; 185f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 offset; 1868611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu long long time_stamp; 187f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 flags; 188f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 client_data; 189f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev 1908611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 1918611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 1928611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct venc_buffers { 1938611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct venc_pmem recon_buf[VENC_MAX_RECON_BUFFERS]; 1948611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct venc_pmem wb_buf; 1958611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct venc_pmem cmd_buf; 1968611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct venc_pmem vlc_buf; 1978611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 1988611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 1998611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct venc_buffer_flush { 200f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 flush_mode; 2018611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 2028611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2038611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuunion venc_msg_data { 2048611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct venc_buffer buf; 2058611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct venc_buffer_flush flush_ret; 206f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev 2078611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 2088611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2098611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct venc_msg { 210f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 status_code; 211f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 msg_code; 212f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 msg_data_size; 2138611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu union venc_msg_data msg_data; 2148611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 2158611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2168611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsuunion venc_codec_config { 2178611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct venc_mpeg4_config mpeg4_params; 2188611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct venc_h263_config h263_params; 2198611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct venc_h264_config h264_params; 2208611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 2218611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2228611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct venc_q6_config { 2238611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct venc_common_config config_params; 2248611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu union venc_codec_config codec_params; 2258611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct venc_nonio_buf_config buf_params; 2268611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu void *callback_event; 2278611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 2288611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2298611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct venc_hdr_config { 2308611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct venc_common_config config_params; 2318611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu union venc_codec_config codec_params; 2328611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 2338611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2348611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct venc_init_config { 2358611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct venc_q6_config q6_config; 2368611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct venc_buffers q6_bufs; 2378611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 2388611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2398611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsustruct venc_seq_config { 2408611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu int size; 2418611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct venc_pmem buf; 2428611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu struct venc_q6_config q6_config; 2438611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu}; 2448611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 245f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchevstruct venc_version { 246f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 major; 247f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev u32 minor; 248f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev}; 249f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev 2508611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VENC_IOCTL_MAGIC 'V' 2518611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2528611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VENC_IOCTL_CMD_READ_NEXT_MSG \ 2538611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu _IOWR(VENC_IOCTL_MAGIC, 1, struct venc_msg) 2548611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2558611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VENC_IOCTL_CMD_STOP_READ_MSG _IO(VENC_IOCTL_MAGIC, 2) 2568611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2578611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VENC_IOCTL_SET_INPUT_BUFFER \ 2588611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu _IOW(VENC_IOCTL_MAGIC, 3, struct venc_pmem) 2598611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2608611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VENC_IOCTL_SET_OUTPUT_BUFFER \ 2618611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu _IOW(VENC_IOCTL_MAGIC, 4, struct venc_pmem) 2628611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2638611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VENC_IOCTL_CMD_START _IOW(VENC_IOCTL_MAGIC, 5, struct venc_init_config) 2648611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2658611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VENC_IOCTL_CMD_ENCODE_FRAME \ 2668611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu _IOW(VENC_IOCTL_MAGIC, 6, struct venc_buffer) 2678611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2688611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VENC_IOCTL_CMD_FILL_OUTPUT_BUFFER \ 2698611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu _IOW(VENC_IOCTL_MAGIC, 7, struct venc_buffer) 2708611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2718611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VENC_IOCTL_CMD_FLUSH \ 2728611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu _IOW(VENC_IOCTL_MAGIC, 8, struct venc_buffer_flush) 2738611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2748611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VENC_IOCTL_CMD_PAUSE _IO(VENC_IOCTL_MAGIC, 9) 2758611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2768611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VENC_IOCTL_CMD_RESUME _IO(VENC_IOCTL_MAGIC, 10) 2778611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2788611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VENC_IOCTL_CMD_STOP _IO(VENC_IOCTL_MAGIC, 11) 2798611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2808611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VENC_IOCTL_SET_INTRA_PERIOD \ 2818611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu _IOW(VENC_IOCTL_MAGIC, 12, int) 2828611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2838611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VENC_IOCTL_CMD_REQUEST_IFRAME _IO(VENC_IOCTL_MAGIC, 13) 2848611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2858611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VENC_IOCTL_GET_SEQUENCE_HDR \ 2868611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu _IOWR(VENC_IOCTL_MAGIC, 14, struct venc_seq_config) 2878611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2888611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VENC_IOCTL_SET_INTRA_REFRESH \ 2898611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu _IOW(VENC_IOCTL_MAGIC, 15, int) 2908611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2918611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VENC_IOCTL_SET_FRAME_RATE \ 2928611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu _IOW(VENC_IOCTL_MAGIC, 16, struct venc_frame_rate) 2938611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2948611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VENC_IOCTL_SET_TARGET_BITRATE \ 2958611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu _IOW(VENC_IOCTL_MAGIC, 17, int) 2968611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 2978611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#define VENC_IOCTL_SET_QP_RANGE \ 2988611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu _IOW(VENC_IOCTL_MAGIC, 18, struct venc_qp_range) 2998611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu 300f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev#define VENC_IOCTL_GET_VERSION \ 301f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev _IOR(VENC_IOCTL_MAGIC, 19, struct venc_version) 302f0edc3f155a136d87beccd5ecef75c2d4b6f6b64Iliyan Malchev 3038611d5578ff014a1415b26e75e63aecbc4ad266cBrian Muramatsu#endif 304