Home | History | Annotate | Download | only in linux
      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  ***   To edit the content of this header, modify the corresponding
     11  ***   source file (e.g. under external/kernel-headers/original/) then
     12  ***   run bionic/libc/kernel/tools/update_all.py
     13  ***
     14  ***   Any manual change here will be lost the next time this script will
     15  ***   be run. You've been warned!
     16  ***
     17  ****************************************************************************
     18  ****************************************************************************/
     19 #ifndef _MSM_VENC_H_
     20 #define _MSM_VENC_H_
     21 #include <linux/types.h>
     22 #define VENC_MAX_RECON_BUFFERS 2
     23 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
     24 #define VENC_FLAG_EOS 0x00000001
     25 #define VENC_FLAG_END_OF_FRAME 0x00000010
     26 #define VENC_FLAG_SYNC_FRAME 0x00000020
     27 #define VENC_FLAG_EXTRA_DATA 0x00000040
     28 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
     29 #define VENC_FLAG_CODEC_CONFIG 0x00000080
     30 enum venc_flush_type {
     31  VENC_FLUSH_INPUT,
     32  VENC_FLUSH_OUTPUT,
     33 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
     34  VENC_FLUSH_ALL
     35 };
     36 enum venc_state_type {
     37  VENC_STATE_PAUSE = 0x1,
     38 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
     39  VENC_STATE_START = 0x2,
     40  VENC_STATE_STOP = 0x4
     41 };
     42 enum venc_event_type_enum {
     43 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
     44  VENC_EVENT_START_STATUS,
     45  VENC_EVENT_STOP_STATUS,
     46  VENC_EVENT_SUSPEND_STATUS,
     47  VENC_EVENT_RESUME_STATUS,
     48 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
     49  VENC_EVENT_FLUSH_STATUS,
     50  VENC_EVENT_RELEASE_INPUT,
     51  VENC_EVENT_DELIVER_OUTPUT,
     52  VENC_EVENT_UNKNOWN_STATUS
     53 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
     54 };
     55 enum venc_status_code {
     56  VENC_STATUS_SUCCESS,
     57  VENC_STATUS_ERROR,
     58 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
     59  VENC_STATUS_INVALID_STATE,
     60  VENC_STATUS_FLUSHING,
     61  VENC_STATUS_INVALID_PARAM,
     62  VENC_STATUS_CMD_QUEUE_FULL,
     63 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
     64  VENC_STATUS_CRITICAL,
     65  VENC_STATUS_INSUFFICIENT_RESOURCES,
     66  VENC_STATUS_TIMEOUT
     67 };
     68 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
     69 enum venc_msg_code {
     70  VENC_MSG_INDICATION,
     71  VENC_MSG_INPUT_BUFFER_DONE,
     72  VENC_MSG_OUTPUT_BUFFER_DONE,
     73 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
     74  VENC_MSG_NEED_OUTPUT_BUFFER,
     75  VENC_MSG_FLUSH,
     76  VENC_MSG_START,
     77  VENC_MSG_STOP,
     78 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
     79  VENC_MSG_PAUSE,
     80  VENC_MSG_RESUME,
     81  VENC_MSG_STOP_READING_MSG
     82 };
     83 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
     84 enum venc_error_code {
     85  VENC_S_SUCCESS,
     86  VENC_S_EFAIL,
     87  VENC_S_EFATAL,
     88 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
     89  VENC_S_EBADPARAM,
     90  VENC_S_EINVALSTATE,
     91  VENC_S_ENOSWRES,
     92  VENC_S_ENOHWRES,
     93 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
     94  VENC_S_EBUFFREQ,
     95  VENC_S_EINVALCMD,
     96  VENC_S_ETIMEOUT,
     97  VENC_S_ENOREATMPT,
     98 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
     99  VENC_S_ENOPREREQ,
    100  VENC_S_ECMDQFULL,
    101  VENC_S_ENOTSUPP,
    102  VENC_S_ENOTIMPL,
    103 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
    104  VENC_S_ENOTPMEM,
    105  VENC_S_EFLUSHED,
    106  VENC_S_EINSUFBUF,
    107  VENC_S_ESAMESTATE,
    108 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
    109  VENC_S_EINVALTRANS
    110 };
    111 enum venc_mem_region_enum {
    112  VENC_PMEM_EBI1,
    113 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
    114  VENC_PMEM_SMI
    115 };
    116 struct venc_buf_type {
    117  u32 region;
    118 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
    119  u32 phys;
    120  u32 size;
    121  int offset;
    122 };
    123 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
    124 struct venc_qp_range {
    125  u32 min_qp;
    126  u32 max_qp;
    127 };
    128 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
    129 struct venc_frame_rate {
    130  u32 frame_rate_num;
    131  u32 frame_rate_den;
    132 };
    133 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
    134 struct venc_slice_info {
    135  u32 slice_mode;
    136  u32 units_per_slice;
    137 };
    138 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
    139 struct venc_extra_data {
    140  u32 slice_extra_data_flag;
    141  u32 slice_client_data1;
    142  u32 slice_client_data2;
    143 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
    144  u32 slice_client_data3;
    145  u32 none_extra_data_flag;
    146  u32 none_client_data1;
    147  u32 none_client_data2;
    148 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
    149  u32 none_client_data3;
    150 };
    151 struct venc_common_config {
    152  u32 standard;
    153 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
    154  u32 input_frame_height;
    155  u32 input_frame_width;
    156  u32 output_frame_height;
    157  u32 output_frame_width;
    158 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
    159  u32 rotation_angle;
    160  u32 intra_period;
    161  u32 rate_control;
    162  struct venc_frame_rate frame_rate;
    163 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
    164  u32 bitrate;
    165  struct venc_qp_range qp_range;
    166  u32 iframe_qp;
    167  u32 pframe_qp;
    168 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
    169  struct venc_slice_info slice_config;
    170  struct venc_extra_data extra_data;
    171 };
    172 struct venc_nonio_buf_config {
    173 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
    174  struct venc_buf_type recon_buf1;
    175  struct venc_buf_type recon_buf2;
    176  struct venc_buf_type wb_buf;
    177  struct venc_buf_type cmd_buf;
    178 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
    179  struct venc_buf_type vlc_buf;
    180 };
    181 struct venc_mpeg4_config {
    182  u32 profile;
    183 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
    184  u32 level;
    185  u32 time_resolution;
    186  u32 ac_prediction;
    187  u32 hec_interval;
    188 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
    189  u32 data_partition;
    190  u32 short_header;
    191  u32 rvlc_enable;
    192 };
    193 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
    194 struct venc_h263_config {
    195  u32 profile;
    196  u32 level;
    197 };
    198 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
    199 struct venc_h264_config {
    200  u32 profile;
    201  u32 level;
    202  u32 max_nal;
    203 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
    204  u32 idr_period;
    205 };
    206 struct venc_pmem {
    207  int src;
    208 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
    209  int fd;
    210  u32 offset;
    211  void *virt;
    212  void *phys;
    213 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
    214  u32 size;
    215 };
    216 struct venc_buffer {
    217  unsigned char *ptr_buffer;
    218 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
    219  u32 size;
    220  u32 len;
    221  u32 offset;
    222  long long time_stamp;
    223 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
    224  u32 flags;
    225  u32 client_data;
    226 };
    227 struct venc_buffers {
    228 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
    229  struct venc_pmem recon_buf[VENC_MAX_RECON_BUFFERS];
    230  struct venc_pmem wb_buf;
    231  struct venc_pmem cmd_buf;
    232  struct venc_pmem vlc_buf;
    233 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
    234 };
    235 struct venc_buffer_flush {
    236  u32 flush_mode;
    237 };
    238 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
    239 union venc_msg_data {
    240  struct venc_buffer buf;
    241  struct venc_buffer_flush flush_ret;
    242 };
    243 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
    244 struct venc_msg {
    245  u32 status_code;
    246  u32 msg_code;
    247  u32 msg_data_size;
    248 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
    249  union venc_msg_data msg_data;
    250 };
    251 union venc_codec_config {
    252  struct venc_mpeg4_config mpeg4_params;
    253 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
    254  struct venc_h263_config h263_params;
    255  struct venc_h264_config h264_params;
    256 };
    257 struct venc_q6_config {
    258 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
    259  struct venc_common_config config_params;
    260  union venc_codec_config codec_params;
    261  struct venc_nonio_buf_config buf_params;
    262  void *callback_event;
    263 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
    264 };
    265 struct venc_hdr_config {
    266  struct venc_common_config config_params;
    267  union venc_codec_config codec_params;
    268 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
    269 };
    270 struct venc_init_config {
    271  struct venc_q6_config q6_config;
    272  struct venc_buffers q6_bufs;
    273 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
    274 };
    275 struct venc_seq_config {
    276  int size;
    277  struct venc_pmem buf;
    278 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
    279  struct venc_q6_config q6_config;
    280 };
    281 struct venc_version {
    282  u32 major;
    283 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
    284  u32 minor;
    285 };
    286 #define VENC_IOCTL_MAGIC 'V'
    287 #define VENC_IOCTL_CMD_READ_NEXT_MSG   _IOWR(VENC_IOCTL_MAGIC, 1, struct venc_msg)
    288 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
    289 #define VENC_IOCTL_CMD_STOP_READ_MSG _IO(VENC_IOCTL_MAGIC, 2)
    290 #define VENC_IOCTL_SET_INPUT_BUFFER   _IOW(VENC_IOCTL_MAGIC, 3, struct venc_pmem)
    291 #define VENC_IOCTL_SET_OUTPUT_BUFFER   _IOW(VENC_IOCTL_MAGIC, 4, struct venc_pmem)
    292 #define VENC_IOCTL_CMD_START _IOW(VENC_IOCTL_MAGIC, 5, struct venc_init_config)
    293 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
    294 #define VENC_IOCTL_CMD_ENCODE_FRAME   _IOW(VENC_IOCTL_MAGIC, 6, struct venc_buffer)
    295 #define VENC_IOCTL_CMD_FILL_OUTPUT_BUFFER   _IOW(VENC_IOCTL_MAGIC, 7, struct venc_buffer)
    296 #define VENC_IOCTL_CMD_FLUSH   _IOW(VENC_IOCTL_MAGIC, 8, struct venc_buffer_flush)
    297 #define VENC_IOCTL_CMD_PAUSE _IO(VENC_IOCTL_MAGIC, 9)
    298 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
    299 #define VENC_IOCTL_CMD_RESUME _IO(VENC_IOCTL_MAGIC, 10)
    300 #define VENC_IOCTL_CMD_STOP _IO(VENC_IOCTL_MAGIC, 11)
    301 #define VENC_IOCTL_SET_INTRA_PERIOD   _IOW(VENC_IOCTL_MAGIC, 12, int)
    302 #define VENC_IOCTL_CMD_REQUEST_IFRAME _IO(VENC_IOCTL_MAGIC, 13)
    303 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
    304 #define VENC_IOCTL_GET_SEQUENCE_HDR   _IOWR(VENC_IOCTL_MAGIC, 14, struct venc_seq_config)
    305 #define VENC_IOCTL_SET_INTRA_REFRESH   _IOW(VENC_IOCTL_MAGIC, 15, int)
    306 #define VENC_IOCTL_SET_FRAME_RATE   _IOW(VENC_IOCTL_MAGIC, 16, struct venc_frame_rate)
    307 #define VENC_IOCTL_SET_TARGET_BITRATE   _IOW(VENC_IOCTL_MAGIC, 17, int)
    308 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
    309 #define VENC_IOCTL_SET_QP_RANGE   _IOW(VENC_IOCTL_MAGIC, 18, struct venc_qp_range)
    310 #define VENC_IOCTL_GET_VERSION   _IOR(VENC_IOCTL_MAGIC, 19, struct venc_version)
    311 #endif
    312 
    313