1 #ifndef _MSM_VIDC_H_ 2 #define _MSM_VIDC_H_ 3 4 #ifdef __KERNEL__ 5 6 #include <linux/poll.h> 7 #include <linux/videodev2.h> 8 9 enum core_id { 10 MSM_VIDC_CORE_0 = 0, 11 MSM_VIDC_CORE_1, /* for Q6 core */ 12 MSM_VIDC_CORES_MAX, 13 }; 14 15 enum session_type { 16 MSM_VIDC_ENCODER = 0, 17 MSM_VIDC_DECODER, 18 MSM_VIDC_MAX_DEVICES, 19 }; 20 21 void *msm_vidc_open(int core_id, int session_type); 22 int msm_vidc_close(void *instance); 23 int msm_vidc_querycap(void *instance, struct v4l2_capability *cap); 24 int msm_vidc_enum_fmt(void *instance, struct v4l2_fmtdesc *f); 25 int msm_vidc_s_fmt(void *instance, struct v4l2_format *f); 26 int msm_vidc_g_fmt(void *instance, struct v4l2_format *f); 27 int msm_vidc_s_ctrl(void *instance, struct v4l2_control *a); 28 int msm_vidc_g_ctrl(void *instance, struct v4l2_control *a); 29 int msm_vidc_reqbufs(void *instance, struct v4l2_requestbuffers *b); 30 int msm_vidc_prepare_buf(void *instance, struct v4l2_buffer *b); 31 int msm_vidc_release_buf(void *instance, struct v4l2_buffer *b); 32 int msm_vidc_qbuf(void *instance, struct v4l2_buffer *b); 33 int msm_vidc_dqbuf(void *instance, struct v4l2_buffer *b); 34 int msm_vidc_streamon(void *instance, enum v4l2_buf_type i); 35 int msm_vidc_streamoff(void *instance, enum v4l2_buf_type i); 36 int msm_vidc_decoder_cmd(void *instance, struct v4l2_decoder_cmd *dec); 37 int msm_vidc_encoder_cmd(void *instance, struct v4l2_encoder_cmd *enc); 38 int msm_vidc_poll(void *instance, struct file *filp, 39 struct poll_table_struct *pt); 40 int msm_vidc_get_iommu_domain_partition(void *instance, u32 flags, 41 enum v4l2_buf_type, int *domain, int *partition); 42 int msm_vidc_subscribe_event(void *instance, 43 struct v4l2_event_subscription *sub); 44 int msm_vidc_unsubscribe_event(void *instance, 45 struct v4l2_event_subscription *sub); 46 int msm_vidc_dqevent(void *instance, struct v4l2_event *event); 47 int msm_vidc_wait(void *instance); 48 int msm_vidc_s_parm(void *instance, struct v4l2_streamparm *a); 49 int msm_vidc_enum_framesizes(void *instance, struct v4l2_frmsizeenum *fsize); 50 #endif 51 struct msm_vidc_interlace_payload { 52 unsigned int format; 53 }; 54 struct msm_vidc_framerate_payload { 55 unsigned int frame_rate; 56 }; 57 struct msm_vidc_ts_payload { 58 unsigned int timestamp_lo; 59 unsigned int timestamp_hi; 60 }; 61 struct msm_vidc_concealmb_payload { 62 unsigned int num_mbs; 63 }; 64 struct msm_vidc_recoverysei_payload { 65 unsigned int flags; 66 }; 67 68 struct msm_vidc_aspect_ratio_payload { 69 unsigned int size; 70 unsigned int version; 71 unsigned int port_index; 72 unsigned int aspect_width; 73 unsigned int aspect_height; 74 }; 75 76 struct msm_vidc_mpeg2_seqdisp_payload { 77 unsigned int video_format; 78 bool color_descp; 79 unsigned int color_primaries; 80 unsigned int transfer_char; 81 unsigned int matrix_coeffs; 82 unsigned int disp_width; 83 unsigned int disp_height; 84 }; 85 86 struct msm_vidc_panscan_window { 87 unsigned int panscan_height_offset; 88 unsigned int panscan_width_offset; 89 unsigned int panscan_window_width; 90 unsigned int panscan_window_height; 91 }; 92 struct msm_vidc_panscan_window_payload { 93 unsigned int num_panscan_windows; 94 struct msm_vidc_panscan_window wnd[1]; 95 }; 96 enum msm_vidc_extradata_type { 97 EXTRADATA_NONE = 0x00000000, 98 EXTRADATA_MB_QUANTIZATION = 0x00000001, 99 EXTRADATA_INTERLACE_VIDEO = 0x00000002, 100 EXTRADATA_VC1_FRAMEDISP = 0x00000003, 101 EXTRADATA_VC1_SEQDISP = 0x00000004, 102 EXTRADATA_TIMESTAMP = 0x00000005, 103 EXTRADATA_S3D_FRAME_PACKING = 0x00000006, 104 EXTRADATA_FRAME_RATE = 0x00000007, 105 EXTRADATA_PANSCAN_WINDOW = 0x00000008, 106 EXTRADATA_RECOVERY_POINT_SEI = 0x00000009, 107 EXTRADATA_MPEG2_SEQDISP = 0x0000000D, 108 EXTRADATA_MULTISLICE_INFO = 0x7F100000, 109 EXTRADATA_NUM_CONCEALED_MB = 0x7F100001, 110 EXTRADATA_INDEX = 0x7F100002, 111 EXTRADATA_ASPECT_RATIO = 0x7F100003, 112 EXTRADATA_METADATA_FILLER = 0x7FE00002, 113 }; 114 enum msm_vidc_interlace_type { 115 INTERLACE_FRAME_PROGRESSIVE = 0x01, 116 INTERLACE_INTERLEAVE_FRAME_TOPFIELDFIRST = 0x02, 117 INTERLACE_INTERLEAVE_FRAME_BOTTOMFIELDFIRST = 0x04, 118 INTERLACE_FRAME_TOPFIELDFIRST = 0x08, 119 INTERLACE_FRAME_BOTTOMFIELDFIRST = 0x10, 120 }; 121 enum msm_vidc_recovery_sei { 122 FRAME_RECONSTRUCTION_INCORRECT = 0x0, 123 FRAME_RECONSTRUCTION_CORRECT = 0x01, 124 FRAME_RECONSTRUCTION_APPROXIMATELY_CORRECT = 0x02, 125 }; 126 127 #endif 128