msm_q6venc.h revision 5c32826841460294cfba98ff713b4804512bacd1
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
17struct venc_buf {
18 unsigned int src_id;
19 int fd;
20 unsigned long offset;
21 unsigned long size;
22};
23
24struct 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
49struct 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
57struct 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
67struct encode_param {
68 struct venc_buf y_addr;
69 unsigned long uv_offset;
70 struct q6_encode_param q6_encode_param;
71};
72
73struct intra_refresh {
74 unsigned int intra_refresh_enable;
75 unsigned int intra_mb_num;
76};
77
78struct 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
85struct 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
92struct 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