1d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#ifndef _UAPI_MSM_VENC_H_ 2d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define _UAPI_MSM_VENC_H_ 35d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 45d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#include <linux/types.h> 55d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 65d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VENC_MAX_RECON_BUFFERS 2 75d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 85d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VENC_FLAG_EOS 0x00000001 95d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VENC_FLAG_END_OF_FRAME 0x00000010 105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VENC_FLAG_SYNC_FRAME 0x00000020 115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VENC_FLAG_EXTRA_DATA 0x00000040 125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VENC_FLAG_CODEC_CONFIG 0x00000080 135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum venc_flush_type { 155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_FLUSH_INPUT, 165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_FLUSH_OUTPUT, 175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_FLUSH_ALL 185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum venc_state_type { 215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_STATE_PAUSE = 0x1, 225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_STATE_START = 0x2, 235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_STATE_STOP = 0x4 245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum venc_event_type_enum { 275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_EVENT_START_STATUS, 285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_EVENT_STOP_STATUS, 295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_EVENT_SUSPEND_STATUS, 305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_EVENT_RESUME_STATUS, 315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_EVENT_FLUSH_STATUS, 325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_EVENT_RELEASE_INPUT, 335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_EVENT_DELIVER_OUTPUT, 345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_EVENT_UNKNOWN_STATUS 355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum venc_status_code { 385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_STATUS_SUCCESS, 395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_STATUS_ERROR, 405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_STATUS_INVALID_STATE, 415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_STATUS_FLUSHING, 425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_STATUS_INVALID_PARAM, 435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_STATUS_CMD_QUEUE_FULL, 445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_STATUS_CRITICAL, 455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_STATUS_INSUFFICIENT_RESOURCES, 465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_STATUS_TIMEOUT 475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum venc_msg_code { 505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_MSG_INDICATION, 515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_MSG_INPUT_BUFFER_DONE, 525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_MSG_OUTPUT_BUFFER_DONE, 535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_MSG_NEED_OUTPUT_BUFFER, 545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_MSG_FLUSH, 555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_MSG_START, 565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_MSG_STOP, 575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_MSG_PAUSE, 585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_MSG_RESUME, 595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_MSG_STOP_READING_MSG 605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum venc_error_code { 635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_S_SUCCESS, 645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_S_EFAIL, 655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_S_EFATAL, 665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_S_EBADPARAM, 675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_S_EINVALSTATE, 685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_S_ENOSWRES, 695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_S_ENOHWRES, 705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_S_EBUFFREQ, 715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_S_EINVALCMD, 725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_S_ETIMEOUT, 735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_S_ENOREATMPT, 745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_S_ENOPREREQ, 755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_S_ECMDQFULL, 765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_S_ENOTSUPP, 775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_S_ENOTIMPL, 785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_S_ENOTPMEM, 795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_S_EFLUSHED, 805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_S_EINSUFBUF, 815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_S_ESAMESTATE, 825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_S_EINVALTRANS 835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum venc_mem_region_enum { 865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_PMEM_EBI1, 875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin VENC_PMEM_SMI 885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct venc_buf_type { 915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 region; 925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 phys; 935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 size; 945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int offset; 955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct venc_qp_range { 985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 min_qp; 995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 max_qp; 1005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 1015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct venc_frame_rate { 1035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 frame_rate_num; 1045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 frame_rate_den; 1055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 1065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct venc_slice_info { 1085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 slice_mode; 1095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 units_per_slice; 1105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 1115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct venc_extra_data { 1135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 slice_extra_data_flag; 1145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 slice_client_data1; 1155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 slice_client_data2; 1165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 slice_client_data3; 1175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 none_extra_data_flag; 1185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 none_client_data1; 1195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 none_client_data2; 1205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 none_client_data3; 1215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 1225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct venc_common_config { 1245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 standard; 1255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 input_frame_height; 1265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 input_frame_width; 1275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 output_frame_height; 1285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 output_frame_width; 1295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 rotation_angle; 1305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 intra_period; 1315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 rate_control; 1325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct venc_frame_rate frame_rate; 1335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 bitrate; 1345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct venc_qp_range qp_range; 1355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 iframe_qp; 1365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 pframe_qp; 1375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct venc_slice_info slice_config; 1385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct venc_extra_data extra_data; 1395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 1405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct venc_nonio_buf_config { 1425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct venc_buf_type recon_buf1; 1435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct venc_buf_type recon_buf2; 1445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct venc_buf_type wb_buf; 1455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct venc_buf_type cmd_buf; 1465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct venc_buf_type vlc_buf; 1475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 1485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct venc_mpeg4_config { 1505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 profile; 1515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 level; 1525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 time_resolution; 1535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 ac_prediction; 1545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 hec_interval; 1555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 data_partition; 1565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 short_header; 1575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 rvlc_enable; 1585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 1595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct venc_h263_config { 1615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 profile; 1625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 level; 1635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 1645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct venc_h264_config { 1665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 profile; 1675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 level; 1685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 max_nal; 1695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 idr_period; 1705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 1715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct venc_pmem { 1735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int src; 1745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int fd; 1755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 offset; 1765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin void *virt; 1775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin void *phys; 1785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 size; 1795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 1805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct venc_buffer { 1825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char *ptr_buffer; 1835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 size; 1845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 len; 1855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 offset; 1865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin long long time_stamp; 1875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 flags; 1885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 client_data; 1895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 1915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct venc_buffers { 1935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct venc_pmem recon_buf[VENC_MAX_RECON_BUFFERS]; 1945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct venc_pmem wb_buf; 1955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct venc_pmem cmd_buf; 1965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct venc_pmem vlc_buf; 1975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 1985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct venc_buffer_flush { 2005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 flush_mode; 2015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 2025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinunion venc_msg_data { 2045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct venc_buffer buf; 2055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct venc_buffer_flush flush_ret; 2065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 2085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct venc_msg { 2105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 status_code; 2115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 msg_code; 2125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 msg_data_size; 2135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin union venc_msg_data msg_data; 2145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 2155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinunion venc_codec_config { 2175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct venc_mpeg4_config mpeg4_params; 2185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct venc_h263_config h263_params; 2195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct venc_h264_config h264_params; 2205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 2215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct venc_q6_config { 2235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct venc_common_config config_params; 2245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin union venc_codec_config codec_params; 2255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct venc_nonio_buf_config buf_params; 2265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin void *callback_event; 2275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 2285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct venc_hdr_config { 2305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct venc_common_config config_params; 2315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin union venc_codec_config codec_params; 2325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 2335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct venc_init_config { 2355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct venc_q6_config q6_config; 2365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct venc_buffers q6_bufs; 2375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 2385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct venc_seq_config { 2405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int size; 2415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct venc_pmem buf; 2425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct venc_q6_config q6_config; 2435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 2445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct venc_version { 2465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 major; 2475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin u32 minor; 2485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 2495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VENC_IOCTL_MAGIC 'V' 2515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VENC_IOCTL_CMD_READ_NEXT_MSG \ 2535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOWR(VENC_IOCTL_MAGIC, 1, struct venc_msg) 2545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VENC_IOCTL_CMD_STOP_READ_MSG _IO(VENC_IOCTL_MAGIC, 2) 2565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VENC_IOCTL_SET_INPUT_BUFFER \ 2585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW(VENC_IOCTL_MAGIC, 3, struct venc_pmem) 2595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VENC_IOCTL_SET_OUTPUT_BUFFER \ 2615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW(VENC_IOCTL_MAGIC, 4, struct venc_pmem) 2625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VENC_IOCTL_CMD_START _IOW(VENC_IOCTL_MAGIC, 5, struct venc_init_config) 2645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VENC_IOCTL_CMD_ENCODE_FRAME \ 2665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW(VENC_IOCTL_MAGIC, 6, struct venc_buffer) 2675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VENC_IOCTL_CMD_FILL_OUTPUT_BUFFER \ 2695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW(VENC_IOCTL_MAGIC, 7, struct venc_buffer) 2705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VENC_IOCTL_CMD_FLUSH \ 2725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW(VENC_IOCTL_MAGIC, 8, struct venc_buffer_flush) 2735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VENC_IOCTL_CMD_PAUSE _IO(VENC_IOCTL_MAGIC, 9) 2755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VENC_IOCTL_CMD_RESUME _IO(VENC_IOCTL_MAGIC, 10) 2775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VENC_IOCTL_CMD_STOP _IO(VENC_IOCTL_MAGIC, 11) 2795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VENC_IOCTL_SET_INTRA_PERIOD \ 2815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW(VENC_IOCTL_MAGIC, 12, int) 2825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VENC_IOCTL_CMD_REQUEST_IFRAME _IO(VENC_IOCTL_MAGIC, 13) 2845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VENC_IOCTL_GET_SEQUENCE_HDR \ 2865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOWR(VENC_IOCTL_MAGIC, 14, struct venc_seq_config) 2875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VENC_IOCTL_SET_INTRA_REFRESH \ 2895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW(VENC_IOCTL_MAGIC, 15, int) 2905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VENC_IOCTL_SET_FRAME_RATE \ 2925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW(VENC_IOCTL_MAGIC, 16, struct venc_frame_rate) 2935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VENC_IOCTL_SET_TARGET_BITRATE \ 2955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW(VENC_IOCTL_MAGIC, 17, int) 2965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VENC_IOCTL_SET_QP_RANGE \ 2985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOW(VENC_IOCTL_MAGIC, 18, struct venc_qp_range) 2995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 3005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VENC_IOCTL_GET_VERSION \ 3015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin _IOR(VENC_IOCTL_MAGIC, 19, struct venc_version) 3025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 3035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#endif 304