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