rjw | 6c1fd8f | 2022-11-30 14:33:01 +0800 | [diff] [blame] | 1 | #ifndef __IMSVT_IMCB_STRUCT_H__ |
| 2 | #define __IMSVT_IMCB_STRUCT_H__ |
| 3 | |
| 4 | #include "kal_public_defs.h" |
| 5 | |
| 6 | #if __IMCF_NO_UA__ |
| 7 | |
| 8 | #define VOLTE_MAX_SDP_PARAMETER_SET_LENGTH (256) // H.264, Spros parameter sets, must align with LTE_VT_SRV_UA_PARAMETER_SIZE_MAX. |
| 9 | #define VOLTE_MAX_SUB_PARAM_LENGTH (128) |
| 10 | #define VOLTE_MAX_SDP_FMTP_TOT_VALUE_LENGTH (32)// The maximum length of total fmtp specific parameter key and value, must align with LTE_VT_SRV_UA_FMTP_SIZE_MAX. |
| 11 | #define VOLTE_MAX_SDP_EGBYTE_LENGTH (8) |
| 12 | #define VOLTE_IPADDR_LENGTH (16) // IP address in binary |
| 13 | #define IMC_MAX_IF_NAME_LENGTH (16) |
| 14 | #define VOLTE_MAX_IF_NAME_LENGTH (IMC_MAX_IF_NAME_LENGTH) |
| 15 | |
| 16 | #define VOLTE_MAX_IMAGE_NUM (4) |
| 17 | #define VOLTE_MAX_RTCP_FB_SIZE (8) |
| 18 | #define VOLTE_MAX_VIDEO_CAP_NUM (4) |
| 19 | #define VOLTE_MAX_PS_NUM (32) |
| 20 | #define VOLTE_MAX_PROFILELEVEL_SIZE (32) |
| 21 | #define VOLTE_MAX_EXTMAP_URI_SIZE (256) |
| 22 | #define VOLTE_MAX_EXTMAP_NUM (4) // RFC 5285 |
| 23 | |
| 24 | typedef char imcf_int8 ; |
| 25 | typedef short int imcf_int16; |
| 26 | typedef int imcf_int32; |
| 27 | |
| 28 | typedef unsigned char imcf_uint8 ; |
| 29 | typedef unsigned short int imcf_uint16; |
| 30 | typedef unsigned int imcf_uint32; |
| 31 | |
| 32 | #else |
| 33 | #include "volte_vt_event.h" |
| 34 | #include "volte_def.h" |
| 35 | #endif |
| 36 | |
| 37 | #define VT_MAX_SDP_PARAMETER_SET_LENGTH VOLTE_MAX_SDP_PARAMETER_SET_LENGTH |
| 38 | #define VT_MAX_SUB_SDP_PARAMETER_SET_LENGTH VOLTE_MAX_SUB_PARAM_LENGTH |
| 39 | #define VT_MAX_SDP_FMTP_TOT_VALUE_LENGTH VOLTE_MAX_SDP_FMTP_TOT_VALUE_LENGTH |
| 40 | #define VT_MAX_SDP_EGBYTE_LENGTH VOLTE_MAX_SDP_EGBYTE_LENGTH |
| 41 | #define VT_MAX_IMAGE_NUM VOLTE_MAX_IMAGE_NUM |
| 42 | #define VT_MAX_RTCP_FB_SIZE VOLTE_MAX_RTCP_FB_SIZE |
| 43 | #define VT_MAX_VIDEO_CAP_NUM VOLTE_MAX_VIDEO_CAP_NUM |
| 44 | #define VT_ADDR_LENGTH VOLTE_IPADDR_LENGTH |
| 45 | #define VT_MAX_PS_NUM VOLTE_MAX_PS_NUM |
| 46 | #define VT_MAX_LEVEL_SIZE VOLTE_MAX_PROFILELEVEL_SIZE |
| 47 | #define VT_MAX_EXTMAP_URI_SIZE VOLTE_MAX_EXTMAP_URI_SIZE |
| 48 | #define VT_MAX_EXTMAP_NUM VOLTE_MAX_EXTMAP_NUM |
| 49 | #define VT_MAX_IF_NAME_LENGTH VOLTE_MAX_IF_NAME_LENGTH |
| 50 | |
| 51 | #define IMSVT_PARA_HDR \ |
| 52 | PEER_BUFF_HDR \ |
| 53 | unsigned int request_id; \ |
| 54 | unsigned int data_len; |
| 55 | |
| 56 | typedef struct imsvt_para_hdr_struct { |
| 57 | IMSVT_PARA_HDR |
| 58 | } imsvt_para_hdr_struct; |
| 59 | |
| 60 | typedef enum vt_srv_imcb_session_modify_type_e { |
| 61 | VT_SRV_IMCB_SESSION_MODIFY_TYPE_CAMERA, |
| 62 | VT_SRV_IMCB_SESSION_MODIFY_TYPE_CALL_TPYE, |
| 63 | VT_SRV_IMCB_SESSION_MODIFY_TYPE_RTP, |
| 64 | VT_SRV_IMCB_SESSION_MODIFY_TYPE_END |
| 65 | } vt_srv_imcb_session_modify_type_t ; |
| 66 | |
| 67 | typedef enum vt_srv_imcb_session_modify_result_e { |
| 68 | VT_SRV_IMCB_SESSION_MODIFY_OK = 0, |
| 69 | VT_SRV_IMCB_SESSION_MODIFY_WrongVideoDir, /*wrong video direction cause up/downgrade failed*/ |
| 70 | VT_SRV_IMCB_SESSION_MODIFY_InternalError, /*acct or session object broken*/ |
| 71 | VT_SRV_IMCB_SESSION_MODIFY_Result_BW_ModifyFailed, /*bandwidth modify require failed*/ |
| 72 | VT_SRV_IMCB_SESSION_MODIFY_NotActiveState, /*call session not in active state*/ |
| 73 | VT_SRV_IMCB_SESSION_MODIFY_LocalRel, /*local release:Ex.SRVCC,Hungup,call refresh timer timeout,no rpt packets*/ |
| 74 | VT_SRV_IMCB_SESSION_MODIFY_IsHold, /*the call at hold state*/ |
| 75 | VT_SRV_IMCB_SESSION_MODIFY_NoNeed, /*acorrding the video action state, not need up/downgrade */ |
| 76 | VT_SRV_IMCB_SESSION_MODIFY_InvalidPara, /*input parameter invalid*/ |
| 77 | VT_SRV_IMCB_SESSION_MODIFY_ReqTimeout, /*SIPTX error,transaction timeout*/ |
| 78 | VT_SRV_IMCB_SESSION_MODIFY_RejectByRemote, /*reject by remote*/ |
| 79 | VT_SRV_IMCB_SESSION_MODIFY_Canceled, /*canceled by user*/ |
| 80 | VT_SRV_IMCB_SESSION_MODIFY_InVideoAction, /*video action is ongoing*/ |
| 81 | VT_SRV_IMCB_SESSION_MODIFY_IsReinvite, /*is_reinvite*/ |
| 82 | }vt_srv_imcb_session_modify_result_t; |
| 83 | |
| 84 | enum vt_srv_imcb_session_modify_cancel_cause_e { |
| 85 | VT_SRV_IMCB_SESSION_MODIFY_CANCEL_CAUSE_cancel= 0, |
| 86 | VT_SRV_IMCB_SESSION_MODIFY_CANCEL_CAUSE_timeout, |
| 87 | }; |
| 88 | |
| 89 | enum vt_srv_imcb_session_modify_cancel_result_e { |
| 90 | VT_SRV_IMCB_SESSION_MODIFY_CANCEL_success = 0, |
| 91 | VT_SRV_IMCB_SESSION_MODIFY_CANCEL_fail_downgrade, |
| 92 | VT_SRV_IMCB_SESSION_MODIFY_CANCEL_fail_normal, |
| 93 | VT_SRV_IMCB_SESSION_MODIFY_CANCEL_fail_disable, |
| 94 | VT_SRV_IMCB_SESSION_MODIFY_CANCEL_fail_remote_reject, /*remote reject the upgrade while local cancel*/ |
| 95 | VT_SRV_IMCB_SESSION_MODIFY_CANCEL_fail_internal_error, |
| 96 | VT_SRV_IMCB_SESSION_MODIFY_CANCEL_fail_local_rel, |
| 97 | VT_SRV_IMCB_SESSION_MODIFY_CANCEL_fail_bw_modify_fail, |
| 98 | VT_SRV_IMCB_SESSION_MODIFY_CANCEL_fail_req_timeout, |
| 99 | }; |
| 100 | |
| 101 | |
| 102 | typedef struct rtcp_fb_param_type_s { |
| 103 | imcf_uint16 rtcp_fb_id; // such as "ack","nack","trr-int","ccm","app" |
| 104 | imcf_uint16 rtcp_fb_param; // such as pli" |
| 105 | imcf_int8 rtcp_fb_sub_param[VT_MAX_SUB_SDP_PARAMETER_SET_LENGTH]; //such as smaxpr=120 of tmmbr |
| 106 | }vt_srv_rtcp_fb_param_type_t; |
| 107 | |
| 108 | typedef struct vt_srv_image_s { |
| 109 | imcf_uint32 x; ///< RFC6236 image attributes |
| 110 | imcf_uint32 y; |
| 111 | imcf_int8 sar[VT_MAX_SDP_EGBYTE_LENGTH]; |
| 112 | imcf_int8 par[VT_MAX_SDP_EGBYTE_LENGTH]; |
| 113 | imcf_int8 q[VT_MAX_SDP_EGBYTE_LENGTH]; |
| 114 | } vt_srv_image_t; |
| 115 | |
| 116 | typedef struct vt_srv_imcb_msg_get_cap_ind_s { |
| 117 | IMSVT_PARA_HDR |
| 118 | imcf_uint8 sim_slot_id; /* start from 0 */ |
| 119 | imcf_uint8 pad; |
| 120 | imcf_uint16 operator_code; |
| 121 | } vt_srv_imcb_msg_get_cap_ind_struct, imsvt_imcb_get_cap_ind_struct; |
| 122 | |
| 123 | /******************* |
| 124 | ** VT_CAP_SETTING ** |
| 125 | ********************/ |
| 126 | |
| 127 | typedef struct vt_srv_h264_cap_cfg_s { /* Codec part */ |
| 128 | imcf_uint32 profile_level_id; ///< H.264 profile level id. construct by 3 parts |
| 129 | |
| 130 | imcf_uint16 max_recv_level; ///< require 2 bytes, reserved. |
| 131 | imcf_uint8 redundant_pic_cap; ///< 0, 1. 0: we do not support yet. |
| 132 | imcf_uint8 pading; |
| 133 | |
| 134 | imcf_int8 sprop_parameter_sets[VT_MAX_SDP_PARAMETER_SET_LENGTH]; |
| 135 | imcf_int8 sprop_level_parameter_sets[VT_MAX_SDP_PARAMETER_SET_LENGTH]; |
| 136 | imcf_uint32 max_mbps; ///< reserved. VT service provides default value |
| 137 | imcf_uint32 max_smbps; ///< reserved. VT service provides default value |
| 138 | imcf_uint32 max_fs; ///< reserved. VT service provides default value |
| 139 | imcf_uint32 max_cpb; ///< reserved. VT service provides default value |
| 140 | imcf_uint32 max_dpb; ///< reserved. VT service provides default value |
| 141 | imcf_uint32 max_br; ///< reserved. VT service provides default value |
| 142 | imcf_uint32 max_rcmd_nalu_size; ///< reserved. VT service provides default value |
| 143 | |
| 144 | imcf_uint8 sar_understood; ///< 0~255, reserved. VT service provides default value |
| 145 | imcf_uint8 sar_supported; ///< 0~255, reserved. VT service provides default value |
| 146 | imcf_uint8 in_band_parameter_sets; //0, 1 |
| 147 | imcf_uint8 level_asymmetry_allowed; //0, 1 |
| 148 | imcf_uint32 framerate; |
| 149 | imcf_uint32 frame_width; |
| 150 | imcf_uint32 frame_height; |
| 151 | vt_srv_image_t image_send[VT_MAX_IMAGE_NUM]; |
| 152 | vt_srv_image_t image_recv[VT_MAX_IMAGE_NUM]; |
| 153 | } vt_srv_h264_cap_cfg_t; |
| 154 | |
| 155 | typedef struct vt_srv_hevc_cap_cfg_s { |
| 156 | imcf_uint8 profile_space; |
| 157 | imcf_uint8 profile_id; |
| 158 | imcf_uint8 tier_flag; |
| 159 | imcf_uint8 level_id; |
| 160 | |
| 161 | imcf_uint8 interop_constraints[6]; |
| 162 | imcf_uint8 pad[2]; |
| 163 | |
| 164 | imcf_uint8 profile_comp_ind[4]; |
| 165 | |
| 166 | imcf_uint8 sprop_sub_layer_id; |
| 167 | imcf_uint8 recv_sub_layer_id; |
| 168 | imcf_uint8 max_recv_level_id; |
| 169 | imcf_uint8 tx_mode; //"SRST", "MRST" or "MRMT" |
| 170 | |
| 171 | imcf_int8 sprop_vps[VOLTE_MAX_SDP_PARAMETER_SET_LENGTH]; |
| 172 | imcf_int8 sprop_sps[VOLTE_MAX_SDP_PARAMETER_SET_LENGTH]; |
| 173 | imcf_int8 sprop_pps[VOLTE_MAX_SDP_PARAMETER_SET_LENGTH]; |
| 174 | imcf_int8 sprop_sei[VOLTE_MAX_SDP_PARAMETER_SET_LENGTH]; |
| 175 | |
| 176 | imcf_uint32 max_lsr; |
| 177 | imcf_uint32 max_lps; |
| 178 | imcf_uint32 max_cpb; |
| 179 | imcf_uint32 max_dpb; |
| 180 | imcf_uint32 max_br; |
| 181 | imcf_uint32 max_tr; |
| 182 | imcf_uint32 max_tc; |
| 183 | imcf_uint32 max_fps; |
| 184 | imcf_uint32 sprop_max_don_diff; |
| 185 | imcf_uint32 sprop_depack_buf_nalus; |
| 186 | imcf_uint32 sprop_depack_buf_bytes; |
| 187 | imcf_uint32 depack_buf_cap; |
| 188 | imcf_uint32 sprop_seg_id; |
| 189 | imcf_uint32 sprop_spatial_seg_idc; |
| 190 | |
| 191 | imcf_int8 dec_parallel_cap[VOLTE_MAX_SDP_PARAMETER_SET_LENGTH]; |
| 192 | imcf_int8 include_dph[VOLTE_MAX_SDP_PARAMETER_SET_LENGTH]; |
| 193 | imcf_uint32 framerate; |
| 194 | imcf_uint32 frame_width; |
| 195 | imcf_uint32 frame_height; |
| 196 | vt_srv_image_t image_send[VT_MAX_IMAGE_NUM]; |
| 197 | vt_srv_image_t image_recv[VT_MAX_IMAGE_NUM]; |
| 198 | } vt_srv_hevc_cap_cfg_t; |
| 199 | |
| 200 | typedef union vt_srv_video_codec_cap_cfg_u { |
| 201 | vt_srv_h264_cap_cfg_t h264_codec; |
| 202 | vt_srv_hevc_cap_cfg_t hevc_codec; |
| 203 | } vt_srv_video_codec_cap_cfg_t; |
| 204 | |
| 205 | typedef struct vt_srv_video_media_bitrate_s { |
| 206 | imcf_uint32 format; ///<H264 or H265 |
| 207 | imcf_uint32 profile; |
| 208 | imcf_uint32 level; |
| 209 | imcf_uint32 minbitrate; |
| 210 | imcf_uint32 bitrate; |
| 211 | } vt_srv_video_media_bitrate_t; |
| 212 | |
| 213 | typedef struct vt_srv_rtp_ext_map_s { |
| 214 | imcf_uint8 ext_id; |
| 215 | imcf_uint8 direction; |
| 216 | imcf_uint8 reserved[2]; |
| 217 | imcf_int8 ext_uri[VT_MAX_EXTMAP_URI_SIZE]; // size 256 |
| 218 | } vt_srv_rtp_ext_map_t; |
| 219 | |
| 220 | typedef struct vt_srv_h264_ps_s { |
| 221 | imcf_uint32 profile_level_id; |
| 222 | imcf_int8 sprop_parameter_sets[VT_MAX_SDP_PARAMETER_SET_LENGTH]; |
| 223 | } vt_srv_h264_ps_t; |
| 224 | |
| 225 | typedef struct vt_srv_hevc_ps_s { |
| 226 | imcf_uint8 profile_id; ///< Range: 0~31, 1 if not present. |
| 227 | imcf_uint8 level_id; ///< Range: 0~255, 93(level 3.1) if not present. |
| 228 | imcf_uint8 pad[2]; |
| 229 | imcf_int8 sprop_vps[VT_MAX_SDP_PARAMETER_SET_LENGTH]; |
| 230 | imcf_int8 sprop_sps[VT_MAX_SDP_PARAMETER_SET_LENGTH]; |
| 231 | imcf_int8 sprop_pps[VT_MAX_SDP_PARAMETER_SET_LENGTH]; |
| 232 | imcf_int8 sprop_sei[VT_MAX_SDP_PARAMETER_SET_LENGTH]; |
| 233 | } vt_srv_hevc_ps_t; |
| 234 | |
| 235 | typedef struct vt_srv_video_capability_s { |
| 236 | /* old start */ |
| 237 | imcf_uint32 profile_level_id; ///< H.264 profile level id. construct by 3 parts |
| 238 | |
| 239 | imcf_uint16 max_recv_level; ///< require 2 bytes, reserved. |
| 240 | imcf_uint8 packetization_mode; ///< VoLTE_Event_Packetize_Mode_e |
| 241 | imcf_uint8 redundant_pic_cap; ///< 0, 1. 0: we do not support yet. |
| 242 | |
| 243 | imcf_int8 sprop_parameter_sets[VT_MAX_SDP_PARAMETER_SET_LENGTH]; |
| 244 | imcf_int8 sprop_level_parameter_sets[VT_MAX_SDP_PARAMETER_SET_LENGTH]; |
| 245 | imcf_uint32 max_mbps; ///< reserved. VT service provides default value |
| 246 | imcf_uint32 max_smbps; ///< reserved. VT service provides default value |
| 247 | imcf_uint32 max_fs ; ///< reserved. VT service provides default value |
| 248 | imcf_uint32 max_cpb ; ///< reserved. VT service provides default value |
| 249 | imcf_uint32 max_dpb ; ///< reserved. VT service provides default value |
| 250 | imcf_uint32 max_br ; ///< reserved. VT service provides default value |
| 251 | imcf_uint32 max_rcmd_nalu_size; ///< reserved. VT service provides default value |
| 252 | |
| 253 | imcf_uint8 sar_understood; ///< 0~255, reserved. VT service provides default value |
| 254 | imcf_uint8 sar_supported; ///< 0~255, reserved. VT service provides default value |
| 255 | imcf_uint8 in_band_parameter_sets; //0, 1 |
| 256 | imcf_uint8 level_asymmetry_allowed; //0, 1 |
| 257 | /* old end */ |
| 258 | |
| 259 | vt_srv_video_codec_cap_cfg_t codec_cap; // Use mime_Type to judge the codec cap. |
| 260 | |
| 261 | /* rtp_rtcp part */ |
| 262 | imcf_uint8 media_type; //such as video/audio |
| 263 | imcf_uint8 mime_Type; // such as H.264 |
| 264 | //imcf_uint8 video_payload_type;// num such as: 97,98, 100 |
| 265 | imcf_uint8 rtp_profile;//supported rtp_profile for special media such as RTP/AVP,RTP/AVPF |
| 266 | imcf_uint8 reserved; |
| 267 | imcf_uint32 sample_rate;//timescale, which use to calculte rtp timestamp |
| 268 | |
| 269 | /*@ rtp packet transmission param |
| 270 | *@ contain b=AS,PT,packetization params related to the codec type |
| 271 | *@ ---------------------------------------------------------------------- |
| 272 | *@consider the negotiated params also can set through rtp_rtcp_capability |
| 273 | *@ rtp_rtcp_capability must be can for one explicit item |
| 274 | *@ then should not contain alternatives in rtp_packetize_params,such as "packetization-moe=1;packetization-mode=0" |
| 275 | *@ ---------------------------------------------------------------------- |
| 276 | */ |
| 277 | //imcf_uint32 video_b_as; //b=AS in kb/s |
| 278 | imcf_uint32 packetize_mode; |
| 279 | imcf_uint32 extmap_num; |
| 280 | vt_srv_rtp_ext_map_t extmap[VT_MAX_EXTMAP_NUM]; //now only CVO support |
| 281 | |
| 282 | //imcf_uint32 video_b_rs; //b=RS in bps |
| 283 | //imcf_uint32 video_b_rr; //b=RR in bps |
| 284 | imcf_uint32 rtcp_rsize; //a=rtcp_rsize |
| 285 | |
| 286 | /*@ rtcp packet transmission param |
| 287 | *@ contain b=RS,b=RR,and feedback message type |
| 288 | *@ may be serveral feedback message supported like: |
| 289 | *@ ---------sdp-------------- |
| 290 | *@ a=rtcp-fb:98 ccm tstr |
| 291 | *@ a=rtcp-fb:98 ccm fir |
| 292 | *@ a=rtcp-fb:* ccm tmmbr smaxpr=120 |
| 293 | *@ --------------------------- |
| 294 | *@ so need a array of rtcp_fb_type_t to represent all thest feedback messages |
| 295 | *@ rtcp_fb_param_num represent the size of the array |
| 296 | */ |
| 297 | imcf_uint32 rtcp_fb_param_num; |
| 298 | vt_srv_rtcp_fb_param_type_t rtcp_fb_type[VT_MAX_RTCP_FB_SIZE]; // SIZE 5 |
| 299 | } vt_srv_video_capability_t; |
| 300 | |
| 301 | typedef struct vt_srv_imcb_msg_vt_cap_setting_s { |
| 302 | IMSVT_PARA_HDR |
| 303 | imcf_int32 accout_id; |
| 304 | imcf_int32 video_cap_num; ///< number of cap. |
| 305 | vt_srv_video_capability_t video_cap[VT_MAX_VIDEO_CAP_NUM]; ///< video capability from MA |
| 306 | vt_srv_h264_ps_t h264_ps[VT_MAX_PS_NUM]; // SIZE 32 |
| 307 | vt_srv_hevc_ps_t hevc_ps[VT_MAX_PS_NUM]; // SIZE 32 |
| 308 | vt_srv_video_media_bitrate_t bitrate_info[VT_MAX_LEVEL_SIZE]; // SIZE 20 |
| 309 | |
| 310 | imcf_uint8 sim_slot_id; /* start from 0 */ |
| 311 | imcf_uint8 pad2; |
| 312 | imcf_uint16 operator_code; |
| 313 | |
| 314 | /* CAUTION: please keep VoLTE_Event_VT_Cap_Setting_t in sync when you want to add elements here, |
| 315 | IMCB is forwarding pointer to this structure and it is casted to VoLTE_Event_VT_Cap_Setting_t */ |
| 316 | } vt_srv_imcb_msg_get_cap_rsp_struct, imsvt_imcb_get_cap_rsp_struct, |
| 317 | vt_srv_vt_cap_setting_t; |
| 318 | |
| 319 | typedef struct vt_srv_imcb_msg_config_s { |
| 320 | // required by RTP and RTCP session |
| 321 | imcf_uint8 call_id; // identify this call |
| 322 | imcf_uint8 video_payload_type; // RTP payload type |
| 323 | imcf_uint8 remote_addr_type; ///< VoLTE_Event_IP_Version_e |
| 324 | imcf_uint8 rtp_direction; ///< VoLTE_Event_RTP_DIRECTION_e |
| 325 | |
| 326 | imcf_uint16 remote_rtp_port; |
| 327 | imcf_uint16 remote_rtcp_port; |
| 328 | imcf_uint16 local_rtcp_port; ///< rtcp port number. we may configure it not rtp_port+1 |
| 329 | imcf_uint16 local_rtp_port; ///< rtp port number for media attribute in SDP message |
| 330 | imcf_int8 remote_rtp_address[VT_ADDR_LENGTH]; |
| 331 | imcf_int8 remote_rtcp_address[VT_ADDR_LENGTH]; |
| 332 | imcf_int8 local_address[VT_ADDR_LENGTH]; |
| 333 | imcf_uint32 video_b_as; // RTP bandwidth |
| 334 | imcf_uint32 video_b_rs; // RTCP sender bandwidth |
| 335 | imcf_uint32 video_b_rr; // RTCP receiver bandwidth |
| 336 | |
| 337 | imcf_uint8 media_type; //such as video/audio |
| 338 | imcf_uint8 mime_Type; // such as H.264 |
| 339 | imcf_uint16 rtcp_rsize; |
| 340 | imcf_uint32 packetize_mode; |
| 341 | imcf_uint32 sample_rate;//timescale, which use to calculte rtp timestamp |
| 342 | imcf_uint32 rtcp_fb_param_num; |
| 343 | vt_srv_rtcp_fb_param_type_t rtcp_fb_type[VT_MAX_RTCP_FB_SIZE]; // SIZE? 32 |
| 344 | |
| 345 | imcf_uint8 rtp_profile;//supported rtp_profile for special media such as RTP/AVP,RTP/AVPF |
| 346 | imcf_uint8 camera_direction; |
| 347 | imcf_uint8 bHold; //local hold |
| 348 | imcf_uint8 bHeld; //remote hold |
| 349 | |
| 350 | vt_srv_rtp_ext_map_t extmap; |
| 351 | |
| 352 | /* WFC */ |
| 353 | imcf_uint32 video_dscp; |
| 354 | imcf_uint32 video_soc_priority; |
| 355 | |
| 356 | /*------ old start --------------*/ |
| 357 | imcf_uint16 pad_rtcp_rsize; /* move to new one*/ |
| 358 | imcf_uint16 rtcpfb_type; //bitmap, VoLTE_Event_RTCP_FB_Type_e |
| 359 | imcf_int8 id[VT_MAX_SDP_FMTP_TOT_VALUE_LENGTH]; |
| 360 | imcf_int8 trr_int[VT_MAX_SDP_FMTP_TOT_VALUE_LENGTH]; |
| 361 | imcf_int8 id_app_string[VT_MAX_SDP_FMTP_TOT_VALUE_LENGTH]; |
| 362 | imcf_int8 ack_app_string[VT_MAX_SDP_FMTP_TOT_VALUE_LENGTH]; |
| 363 | imcf_int8 nack_app_string[VT_MAX_SDP_FMTP_TOT_VALUE_LENGTH]; |
| 364 | imcf_int8 tmmbr_string[VT_MAX_SDP_FMTP_TOT_VALUE_LENGTH]; |
| 365 | imcf_int8 vbcm_string[VT_MAX_SDP_FMTP_TOT_VALUE_LENGTH]; |
| 366 | /*------ old end --------------*/ |
| 367 | |
| 368 | // require by H.264 or H265 |
| 369 | vt_srv_video_codec_cap_cfg_t codec_cfg; |
| 370 | |
| 371 | /*------ old start --------------*/ |
| 372 | // required by H.264 codec, RFC 6184 |
| 373 | imcf_uint32 profile_level_id; ///< H.264 profile level id. construct by 3 parts |
| 374 | |
| 375 | imcf_uint16 max_recv_level; ///< require 2 bytes, reserved. |
| 376 | imcf_uint8 packetization_mode; ///< VoLTE_Event_Packetize_Mode_e |
| 377 | imcf_uint8 redundant_pic_cap; ///< 0, 1. 0: we do not support yet. |
| 378 | |
| 379 | imcf_int8 sprop_parameter_sets[VOLTE_MAX_SDP_PARAMETER_SET_LENGTH]; |
| 380 | imcf_int8 sprop_level_parameter_sets[VOLTE_MAX_SDP_PARAMETER_SET_LENGTH]; |
| 381 | imcf_uint32 max_mbps; ///< reserved. VT service provides default value |
| 382 | imcf_uint32 max_smbps; ///< reserved. VT service provides default value |
| 383 | imcf_uint32 max_fs ; ///< reserved. VT service provides default value |
| 384 | imcf_uint32 max_cpb ; ///< reserved. VT service provides default value |
| 385 | imcf_uint32 max_dpb ; ///< reserved. VT service provides default value |
| 386 | imcf_uint32 max_br ; ///< reserved. VT service provides default value |
| 387 | imcf_uint32 max_rcmd_nalu_size; ///< reserved. VT service provides default value, 0: SDP will not present the value |
| 388 | |
| 389 | imcf_uint8 sar_understood; ///< 0~255, reserved. VT service provides default value, 0: SDP will not present the value |
| 390 | imcf_uint8 sar_supported; ///< 0~255, reserved. VT service provides default value, 0: SDP will not present the value |
| 391 | imcf_uint8 in_band_parameter_sets; ///< 0, 1. we only support 0: support SPS, PPS in SDP |
| 392 | imcf_uint8 level_asymmetry_allowed; ///<0, 1. we only support 0: symmetry communication |
| 393 | /*------ old end --------------*/ |
| 394 | } vt_srv_imcb_msg_config_t; |
| 395 | |
| 396 | typedef struct vt_srv_imcb_msg_setting { |
| 397 | // 0 : inactive (VoLTE) |
| 398 | // 1 : active (ViLTE) |
| 399 | imcf_uint32 mode; |
| 400 | |
| 401 | imcf_uint8 ebi; /* drop on 97 MD, set to zero (0) */ |
| 402 | imcf_uint8 video_type; |
| 403 | imcf_uint8 pad[2]; |
| 404 | imcf_uint32 network_id; /*drop on 93 MD */ |
| 405 | |
| 406 | // 0 : inactive |
| 407 | // 1 : send_only |
| 408 | // 2 : recv_only |
| 409 | // 3 : send_recv |
| 410 | |
| 411 | imcf_uint32 early_media_direction; |
| 412 | |
| 413 | /*kbps, please ignore when Wifi access RAT */ |
| 414 | /*0: is for un-specified, please DO NOT use this element */ |
| 415 | imcf_uint32 nw_assigned_ul_bw; |
| 416 | imcf_uint32 nw_assigned_dl_bw; |
| 417 | |
| 418 | imcf_uint8 sim_slot_id; /* start from 0 */ |
| 419 | imcf_uint8 pad2[3]; |
| 420 | |
| 421 | imcf_uint8 if_name[VT_MAX_IF_NAME_LENGTH]; |
| 422 | |
| 423 | /* 180 - 2 = 178 */ |
| 424 | imcf_uint8 bearer_id; // LTE: EPS Bearer Identifier (EBI), NR: 5G QoS Flow Identifier (QFI) |
| 425 | imcf_uint8 pdu_session_id; // LTE: 0, NR: PDU Session ID (1-15) |
| 426 | |
| 427 | imcf_uint8 extension[178]; |
| 428 | |
| 429 | } vt_srv_imcb_msg_setting_t; |
| 430 | |
| 431 | typedef struct vt_srv_imcb_msg_param_s { |
| 432 | IMSVT_PARA_HDR |
| 433 | vt_srv_imcb_msg_setting_t setting; |
| 434 | vt_srv_imcb_msg_config_t config; |
| 435 | } |
| 436 | vt_srv_imcb_msg_config_init_ind_struct, imsvt_imcb_config_init_ind_struct, |
| 437 | vt_srv_imcb_msg_config_update_ind_struct, imsvt_imcb_config_update_ind_struct, |
| 438 | vt_srv_imcb_msg_config_deinit_ind_struct, imsvt_imcb_config_deinit_ind_struct, |
| 439 | vt_srv_imcb_msg_param_t |
| 440 | ; |
| 441 | |
| 442 | typedef struct vt_srv_imcb_msg_session_modify_s { |
| 443 | IMSVT_PARA_HDR |
| 444 | imcf_uint8 call_id; /* identify this call */ |
| 445 | |
| 446 | // 0 : inactive (VoLTE) |
| 447 | // 1 : active (ViLTE) |
| 448 | imcf_uint8 mode; |
| 449 | |
| 450 | // 0 : inactive |
| 451 | // 1 : send_only |
| 452 | // 2 : recv_only |
| 453 | // 3 : send_recv |
| 454 | imcf_uint8 camera_direction; |
| 455 | |
| 456 | imcf_uint8 result; /* vt_srv_imcb_session_modify_result_t */ |
| 457 | |
| 458 | /* remeber to do offset to UA, UA do not contain this one */ |
| 459 | imcf_uint8 sim_slot_id; /* start from 0 */ |
| 460 | imcf_uint8 pad[3]; |
| 461 | } |
| 462 | |
| 463 | /* |
| 464 | VT -- req --> UA .... UA -- ind --> VT |
| 465 | VT <- cnf --- UA .... UA <- rsp -- VT |
| 466 | |
| 467 | */ |
| 468 | vt_srv_imcb_msg_session_modify_req_struct, imsvt_imcb_modify_session_req_struct, |
| 469 | vt_srv_imcb_msg_session_modify_ind_struct, imsvt_imcb_modify_session_ind_struct, |
| 470 | vt_srv_imcb_msg_session_modify_rsp_struct, imsvt_imcb_modify_session_rsp_struct, |
| 471 | vt_srv_imcb_msg_session_modify_cnf_struct, imsvt_imcb_modify_session_cnf_struct; |
| 472 | |
| 473 | typedef struct vt_srv_imcb_msg_session_modify_cancel_req_s { |
| 474 | IMSVT_PARA_HDR |
| 475 | imcf_uint8 call_id; /* identify this call */ |
| 476 | /* remeber to do offset to UA, UA do not contain this one */ |
| 477 | imcf_uint8 sim_slot_id; /* start from 0 */ |
| 478 | imcf_uint8 cause; |
| 479 | imcf_uint8 pad[5]; |
| 480 | }vt_srv_imcb_msg_session_modify_cancel_req_struct,imsvt_imcb_modify_session_cancel_req_struct; |
| 481 | |
| 482 | typedef struct vt_srv_imcb_msg_session_modify_cancel_cnf_s { |
| 483 | IMSVT_PARA_HDR |
| 484 | imcf_uint8 call_id; /* identify this call */ |
| 485 | /* remeber to do offset to UA, UA do not contain this one */ |
| 486 | imcf_uint8 sim_slot_id; /* start from 0 */ |
| 487 | imcf_uint8 result; |
| 488 | imcf_uint8 pad[5]; |
| 489 | }vt_srv_imcb_msg_session_modify_cancel_cnf_struct,imsvt_imcb_modify_session_cancel_cnf_struct; |
| 490 | |
| 491 | typedef struct vt_srv_imcb_msg_session_modify_cancel_s { |
| 492 | IMSVT_PARA_HDR |
| 493 | imcf_uint8 call_id; /* identify this call */ |
| 494 | /* remeber to do offset to UA, UA do not contain this one */ |
| 495 | imcf_uint8 sim_slot_id; /* start from 0 */ |
| 496 | imcf_uint8 pad[2]; |
| 497 | } |
| 498 | vt_srv_imcb_msg_session_modify_cancel_ind_struct,imsvt_imcb_modify_session_cancel_ind_struct, |
| 499 | vt_srv_imcb_msg_session_modify_local_bw_ready_ind_struct,imsvt_imcb_modify_session_local_bw_ready_ind_struct; |
| 500 | |
| 501 | typedef struct vt_srv_imcb_msg_call_progress_ind_s { |
| 502 | IMSVT_PARA_HDR |
| 503 | imcf_uint8 call_id; /* identify this call */ |
| 504 | /* remeber to do offset to UA, UA do not contain this one */ |
| 505 | imcf_uint8 sim_slot_id; /* start from 0 */ |
| 506 | imcf_uint8 call_mode; |
| 507 | imcf_uint8 pad1; |
| 508 | |
| 509 | imcf_uint32 ecpi; |
| 510 | imcf_uint32 reserved; |
| 511 | }vt_srv_imcb_msg_call_progress_ind_struct, imsvt_imcb_call_progress_ind_struct; |
| 512 | |
| 513 | typedef struct vt_srv_imcb_msg_mod_bw_req_s { |
| 514 | IMSVT_PARA_HDR |
| 515 | imcf_uint8 call_id; /* identify this call */ |
| 516 | imcf_uint8 pad[3]; |
| 517 | |
| 518 | imcf_uint32 video_bandwidth; |
| 519 | |
| 520 | imcf_uint8 sim_slot_id; /* start from 0 */ |
| 521 | imcf_uint8 pad2[3]; |
| 522 | } vt_srv_imcb_msg_mod_bw_req_t, imsvt_imcb_mod_bw_req_struct; |
| 523 | |
| 524 | typedef struct { |
| 525 | IMSVT_PARA_HDR |
| 526 | imcf_uint32 error_num; |
| 527 | } imsvt_imcb_comm_error_struct; |
| 528 | |
| 529 | typedef struct { |
| 530 | IMSVT_PARA_HDR |
| 531 | imcf_uint8 token; |
| 532 | imcf_uint8 pad[3]; |
| 533 | } imsvt_imcb_loop_test_ind_struct; |
| 534 | |
| 535 | typedef struct { |
| 536 | IMSVT_PARA_HDR |
| 537 | imcf_uint8 token; |
| 538 | imcf_uint8 pad[3]; |
| 539 | } imsvt_imcb_loop_test_rsp_struct; |
| 540 | |
| 541 | typedef enum vt_srv_imcb_rat_type_e { |
| 542 | VT_SRV_IMCB_RAT_TYPE_NONE = 0, |
| 543 | VT_SRV_IMCB_RAT_TYPE_2G = VT_SRV_IMCB_RAT_TYPE_NONE, |
| 544 | VT_SRV_IMCB_RAT_TYPE_3G_FDD, |
| 545 | VT_SRV_IMCB_RAT_TYPE_3G_TDD, |
| 546 | VT_SRV_IMCB_RAT_TYPE_4G_FDD, |
| 547 | VT_SRV_IMCB_RAT_TYPE_4G_TDD, |
| 548 | |
| 549 | /* WFC */ |
| 550 | VT_SRV_IMCB_RAT_TYPE_802_11, |
| 551 | VT_SRV_IMCB_RAT_TYPE_802_11a, |
| 552 | VT_SRV_IMCB_RAT_TYPE_802_11b, |
| 553 | VT_SRV_IMCB_RAT_TYPE_802_11g, |
| 554 | VT_SRV_IMCB_RAT_TYPE_802_11n, |
| 555 | VT_SRV_IMCB_RAT_TYPE_802_11ac, |
| 556 | |
| 557 | /* C2K */ |
| 558 | VT_SRV_IMCB_RAT_TYPE_1xRTT, |
| 559 | VT_SRV_IMCB_RAT_TYPE_HRPD, |
| 560 | VT_SRV_IMCB_RAT_TYPE_eHRPD, |
| 561 | |
| 562 | VT_SRV_IMCB_RAT_TYPE_5G_FDD, |
| 563 | VT_SRV_IMCB_RAT_TYPE_5G_TDD, |
| 564 | |
| 565 | VT_SRV_IMCB_RAT_TYPE_MAX = VT_SRV_IMCB_RAT_TYPE_5G_TDD, |
| 566 | VT_SRV_IMCB_RAT_TYPE_UNSPEC = 0x80 |
| 567 | } vt_srv_imcb_rat_type; |
| 568 | |
| 569 | |
| 570 | typedef struct { |
| 571 | IMSVT_PARA_HDR |
| 572 | imcf_uint8 source_rat_type; /* vt_srv_imcb_rat_type enum */ |
| 573 | imcf_uint8 target_rat_type; /* vt_srv_imcb_rat_type enum */ |
| 574 | imcf_uint8 pad[2]; |
| 575 | |
| 576 | imcf_uint8 sim_slot_id; /* start from 0 */ |
| 577 | imcf_uint8 pad2[3]; |
| 578 | } vt_srv_imcb_handover_start_ind_struct, imsvt_imcb_handover_start_ind_struct; |
| 579 | |
| 580 | typedef struct { |
| 581 | IMSVT_PARA_HDR |
| 582 | imcf_uint8 source_rat_type; /* vt_srv_imcb_rat_type enum */ |
| 583 | imcf_uint8 target_rat_type; /* vt_srv_imcb_rat_type enum */ |
| 584 | imcf_uint8 is_success; |
| 585 | imcf_uint8 pad[1]; |
| 586 | |
| 587 | imcf_uint8 sim_slot_id; /* start from 0 */ |
| 588 | imcf_uint8 pad2[3]; |
| 589 | } vt_srv_imcb_handover_stop_ind_struct, imsvt_imcb_handover_stop_ind_struct; |
| 590 | |
| 591 | typedef struct { |
| 592 | IMSVT_PARA_HDR |
| 593 | imcf_uint8 source_rat_type; /* vt_srv_imcb_rat_type enum */ |
| 594 | imcf_uint8 target_rat_type; /* vt_srv_imcb_rat_type enum */ |
| 595 | imcf_uint8 sim_slot_id; /* start from 0 */ |
| 596 | imcf_uint8 pad; |
| 597 | imcf_uint32 network_id; /* drop on 93MD */ |
| 598 | } vt_srv_imcb_pdn_handover_begin_ind_struct, imsvt_imcb_pdn_handover_begin_ind_struct; |
| 599 | |
| 600 | typedef struct { |
| 601 | IMSVT_PARA_HDR |
| 602 | imcf_uint8 source_rat_type; /* vt_srv_imcb_rat_type enum */ |
| 603 | imcf_uint8 target_rat_type; /* vt_srv_imcb_rat_type enum */ |
| 604 | imcf_uint8 is_success; |
| 605 | imcf_uint8 sim_slot_id; |
| 606 | imcf_uint32 network_id; /* drop on 93MD */ |
| 607 | } vt_srv_imcb_pdn_handover_end_ind_struct, imsvt_imcb_pdn_handover_end_ind_struct; |
| 608 | |
| 609 | #endif |