1 /**************************************************************************** 2 **************************************************************************** 3 *** 4 *** This header was automatically generated from a Linux kernel header 5 *** of the same name, to make information necessary for userspace to 6 *** call into the kernel available to libc. It contains only constants, 7 *** structures, and macros generated from the original header, and thus, 8 *** contains no copyrightable information. 9 *** 10 **************************************************************************** 11 ****************************************************************************/ 12 #ifndef _MSM_VENC_H_ 13 #define _MSM_VENC_H_ 14 15 #include <linux/types.h> 16 17 struct venc_buf { 18 unsigned int src_id; 19 int fd; 20 unsigned long offset; 21 unsigned long size; 22 }; 23 24 struct q6_init_config { 25 unsigned short venc_standard; 26 unsigned short partial_run_length_flag; 27 unsigned short h263_annex_ispt; 28 unsigned short h263_annex_jspt; 29 unsigned short h263_annex_tspt; 30 unsigned short rc_flag; 31 unsigned short one_mv_flag; 32 unsigned short acdc_pred_enable; 33 unsigned short rounding_bit_ctrl; 34 unsigned short rotation_flag; 35 unsigned short max_mvx; 36 unsigned short max_mvy; 37 unsigned short enc_frame_height_inmb; 38 unsigned short enc_frame_width_inmb; 39 unsigned short dvs_frame_height; 40 unsigned short dvs_frame_width; 41 42 unsigned int ref_frame_buf1_phy; 43 unsigned int ref_frame_buf2_phy; 44 unsigned int rlc_buf1_phy; 45 unsigned int rlc_buf2_phy; 46 unsigned int rlc_buf_length; 47 }; 48 49 struct init_config { 50 struct venc_buf ref_frame_buf1; 51 struct venc_buf ref_frame_buf2; 52 struct venc_buf rlc_buf1; 53 struct venc_buf rlc_buf2; 54 struct q6_init_config q6_init_config; 55 }; 56 57 struct q6_encode_param { 58 unsigned int luma_addr; 59 unsigned int chroma_addr; 60 unsigned int x_offset; 61 unsigned int y_offset; 62 unsigned int frame_rho_budget; 63 unsigned int frame_type; 64 unsigned int qp; 65 }; 66 67 struct encode_param { 68 struct venc_buf y_addr; 69 unsigned long uv_offset; 70 struct q6_encode_param q6_encode_param; 71 }; 72 73 struct intra_refresh { 74 unsigned int intra_refresh_enable; 75 unsigned int intra_mb_num; 76 }; 77 78 struct rc_config { 79 unsigned short max_frame_qp_up_delta; 80 unsigned short max_frame_qp_down_delta; 81 unsigned short min_frame_qp; 82 unsigned short max_frame_qp; 83 }; 84 85 struct q6_frame_type { 86 unsigned int frame_type; 87 unsigned int frame_len; 88 unsigned int frame_addr; 89 unsigned int map_table; 90 }; 91 92 struct frame_type { 93 struct venc_buf frame_addr; 94 struct q6_frame_type q6_frame_type; 95 }; 96 97 #define VENC_IOCTL_MAGIC 'V' 98 99 #define VENC_IOCTL_INITIALIZE _IOW(VENC_IOCTL_MAGIC, 1, struct init_config) 100 #define VENC_IOCTL_ENCODE _IOW(VENC_IOCTL_MAGIC, 2, struct encode_param) 101 #define VENC_IOCTL_INTRA_REFRESH _IOW(VENC_IOCTL_MAGIC, 3, struct intra_refresh) 102 #define VENC_IOCTL_RC_CONFIG _IOW(VENC_IOCTL_MAGIC, 4, struct rc_config) 103 #define VENC_IOCTL_ENCODE_CONFIG _IOW(VENC_IOCTL_MAGIC, 5, struct init_config) 104 #define VENC_IOCTL_STOP _IO(VENC_IOCTL_MAGIC, 6) 105 #define VENC_IOCTL_WAIT_FOR_ENCODE _IOR(VENC_IOCTL_MAGIC, 7, struct frame_type) 106 #define VENC_IOCTL_STOP_ENCODE _IO(VENC_IOCTL_MAGIC, 8) 107 108 #endif 109 110