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 _UAPI_MSM_VENC_H_
     20 #define _UAPI_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