| File: | root/firefox-clang/third_party/sipcc/sipcc_sdp.h |
| Warning: | line 1101, column 16 Excessive padding in 'struct sdp_srtp_crypto_suite_list_' (10 padding bytes, where 2 is optimal). Optimal fields order: crypto_suite_str, crypto_suite_val, key_size_bytes, salt_size_bytes, consider reordering the fields or adding explicit padding members |
Press '?' to see keyboard shortcuts
Keyboard shortcuts:
| 1 | /* This Source Code Form is subject to the terms of the Mozilla Public |
| 2 | * License, v. 2.0. If a copy of the MPL was not distributed with this |
| 3 | * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
| 4 | |
| 5 | #ifndef SIPCCSDP_H_ |
| 6 | #define SIPCCSDP_H_ |
| 7 | |
| 8 | #include "sdp_os_defs.h" |
| 9 | #include "ccsdp.h" |
| 10 | |
| 11 | /* SDP Defines */ |
| 12 | |
| 13 | /* The following defines are used to indicate params that are specified |
| 14 | * as the choose parameter or parameters that are invalid. These can |
| 15 | * be used where the value required is really a uint16_t, but is represented |
| 16 | * by an int32_t. |
| 17 | */ |
| 18 | #define SDP_CHOOSE_PARAM(-1) (-1) |
| 19 | #define SDP_SESSION_LEVEL0xFFFF 0xFFFF |
| 20 | |
| 21 | #define UNKNOWN_CRYPTO_SUITE"UNKNOWN_CRYPTO_SUITE" "UNKNOWN_CRYPTO_SUITE" |
| 22 | #define AES_CM_128_HMAC_SHA1_32"AES_CM_128_HMAC_SHA1_32" "AES_CM_128_HMAC_SHA1_32" |
| 23 | #define AES_CM_128_HMAC_SHA1_80"AES_CM_128_HMAC_SHA1_80" "AES_CM_128_HMAC_SHA1_80" |
| 24 | #define F8_128_HMAC_SHA1_80"F8_128_HMAC_SHA1_80" "F8_128_HMAC_SHA1_80" |
| 25 | |
| 26 | /* Pulled in from rtp_defs.h. */ |
| 27 | #define GET_DYN_PAYLOAD_TYPE_VALUE(a)((a & 0XFF00) ? ((a & 0XFF00) >> 8) : a) ((a & 0XFF00) ? ((a & 0XFF00) >> 8) : a) |
| 28 | #define SET_PAYLOAD_TYPE_WITH_DYNAMIC(a,b)((a << 8) | b) ((a << 8) | b) |
| 29 | |
| 30 | /* |
| 31 | * SDP_SRTP_MAX_KEY_SIZE_BYTES |
| 32 | * Maximum size for a SRTP Master Key in bytes. |
| 33 | */ |
| 34 | #define SDP_SRTP_MAX_KEY_SIZE_BYTES16 16 |
| 35 | /* |
| 36 | * SDP_SRTP_MAX_SALT_SIZE_BYTES |
| 37 | * Maximum size for a SRTP Master Salt in bytes. |
| 38 | */ |
| 39 | #define SDP_SRTP_MAX_SALT_SIZE_BYTES14 14 |
| 40 | /* |
| 41 | * SDP_SRTP_MAX_MKI_SIZE_BYTES |
| 42 | * Maximum size for a SRTP Master Key Index in bytes. |
| 43 | */ |
| 44 | #define SDP_SRTP_MAX_MKI_SIZE_BYTES4 4 |
| 45 | |
| 46 | /* Max number of characters for Lifetime */ |
| 47 | #define SDP_SRTP_MAX_LIFETIME_BYTES16 16 |
| 48 | |
| 49 | #define SDP_SDESCRIPTIONS_KEY_SIZE_UNKNOWN0 0 |
| 50 | #define SDP_SRTP_CRYPTO_SELECTION_FLAGS_UNKNOWN0 0 |
| 51 | |
| 52 | /* Max number of fmtp redundant encodings */ |
| 53 | #define SDP_FMTP_MAX_REDUNDANT_ENCODINGS128 128 |
| 54 | |
| 55 | /* |
| 56 | * SRTP_CONTEXT_SET_* |
| 57 | * Set a SRTP Context field flag |
| 58 | */ |
| 59 | #define SDP_SRTP_ENCRYPT_MASK0x00000001 0x00000001 |
| 60 | #define SDP_SRTP_AUTHENTICATE_MASK0x00000002 0x00000002 |
| 61 | #define SDP_SRTCP_ENCRYPT_MASK0x00000004 0x00000004 |
| 62 | #define SDP_SRTCP_SSRC_MASK0x20000000 0x20000000 |
| 63 | #define SDP_SRTCP_ROC_MASK0x10000000 0x10000000 |
| 64 | #define SDP_SRTCP_KDR_MASK0x08000000 0x08000000 |
| 65 | #define SDP_SRTCP_KEY_MASK0x80000000 0x80000000 |
| 66 | #define SDP_SRTCP_SALT_MASK0x40000000 0x40000000 |
| 67 | |
| 68 | #define SDP_SRTP_CONTEXT_SET_SSRC(cw)((cw) |= 0x20000000) ((cw) |= SDP_SRTCP_SSRC_MASK0x20000000) |
| 69 | #define SDP_SRTP_CONTEXT_SET_ROC(cw)((cw) |= 0x10000000) ((cw) |= SDP_SRTCP_ROC_MASK0x10000000) |
| 70 | #define SDP_SRTP_CONTEXT_SET_KDR(cw)((cw) |= 0x08000000) ((cw) |= SDP_SRTCP_KDR_MASK0x08000000) |
| 71 | #define SDP_SRTP_CONTEXT_SET_MASTER_KEY(cw)((cw) |= 0x80000000) ((cw) |= SDP_SRTCP_KEY_MASK0x80000000) |
| 72 | #define SDP_SRTP_CONTEXT_SET_MASTER_SALT(cw)((cw) |= 0x40000000) ((cw) |= SDP_SRTCP_SALT_MASK0x40000000) |
| 73 | #define SDP_SRTP_CONTEXT_SET_ENCRYPT_AUTHENTICATE(cw)((cw) |= (0x00000001 | 0x00000002 | 0x00000004)) \ |
| 74 | ((cw) |= (SDP_SRTP_ENCRYPT_MASK0x00000001 | SDP_SRTP_AUTHENTICATE_MASK0x00000002 | \ |
| 75 | SDP_SRTCP_ENCRYPT_MASK0x00000004)) |
| 76 | #define SDP_SRTP_CONTEXT_RESET_SSRC(cw)((cw) &= ~(0x20000000)) ((cw) &= ~(SDP_SRTCP_SSRC_MASK0x20000000)) |
| 77 | #define SDP_SRTP_CONTEXT_RESET_ROC(cw)((cw) &= ~(0x10000000)) ((cw) &= ~(SDP_SRTCP_ROC_MASK0x10000000)) |
| 78 | #define SDP_SRTP_CONTEXT_RESET_KDR(cw)((cw) &= ~(0x08000000)) ((cw) &= ~(SDP_SRTCP_KDR_MASK0x08000000)) |
| 79 | #define SDP_CONTEXT_RESET_MASTER_KEY(cw)((cw) &= ~(0x80000000)) ((cw) &= ~(SDP_SRTCP_KEY_MASK0x80000000)) |
| 80 | #define SDP_CONTEXT_RESET_MASTER_SALT(cw)((cw) &= ~(0x40000000)) ((cw) &= ~(SDP_SRTCP_SALT_MASK0x40000000)) |
| 81 | #define SDP_EXTMAP_AUDIO_LEVEL"urn:ietf:params:rtp-hdrext:ssrc-audio-level" "urn:ietf:params:rtp-hdrext:ssrc-audio-level" |
| 82 | |
| 83 | /* SDP Enum Types */ |
| 84 | typedef enum { |
| 85 | SDP_DEBUG_TRACE, |
| 86 | SDP_DEBUG_WARNINGS, |
| 87 | SDP_DEBUG_ERRORS, |
| 88 | SDP_MAX_DEBUG_TYPES |
| 89 | } sdp_debug_e; |
| 90 | |
| 91 | typedef enum { |
| 92 | SDP_CHOOSE_CONN_ADDR, |
| 93 | SDP_CHOOSE_PORTNUM, |
| 94 | SDP_MAX_CHOOSE_PARAMS |
| 95 | } sdp_choose_param_e; |
| 96 | |
| 97 | |
| 98 | /* Token Lines - these must be in the same order they should |
| 99 | * appear in an SDP. |
| 100 | */ |
| 101 | typedef enum { |
| 102 | SDP_TOKEN_V = 0, |
| 103 | SDP_TOKEN_O, |
| 104 | SDP_TOKEN_S, |
| 105 | SDP_TOKEN_I, |
| 106 | SDP_TOKEN_U, |
| 107 | SDP_TOKEN_E, |
| 108 | SDP_TOKEN_P, |
| 109 | SDP_TOKEN_C, |
| 110 | SDP_TOKEN_B, |
| 111 | SDP_TOKEN_T, |
| 112 | SDP_TOKEN_R, |
| 113 | SDP_TOKEN_Z, |
| 114 | SDP_TOKEN_K, |
| 115 | SDP_TOKEN_A, |
| 116 | SDP_TOKEN_M, |
| 117 | SDP_MAX_TOKENS |
| 118 | } sdp_token_e; |
| 119 | |
| 120 | /* Media Types */ |
| 121 | typedef enum { |
| 122 | SDP_MEDIA_AUDIO = 0, |
| 123 | SDP_MEDIA_VIDEO, |
| 124 | SDP_MEDIA_APPLICATION, |
| 125 | SDP_MEDIA_DATA, |
| 126 | SDP_MEDIA_CONTROL, |
| 127 | SDP_MEDIA_NAS_RADIUS, |
| 128 | SDP_MEDIA_NAS_TACACS, |
| 129 | SDP_MEDIA_NAS_DIAMETER, |
| 130 | SDP_MEDIA_NAS_L2TP, |
| 131 | SDP_MEDIA_NAS_LOGIN, |
| 132 | SDP_MEDIA_NAS_NONE, |
| 133 | SDP_MEDIA_TEXT, |
| 134 | SDP_MEDIA_IMAGE, |
| 135 | SDP_MAX_MEDIA_TYPES, |
| 136 | SDP_MEDIA_UNSUPPORTED, |
| 137 | SDP_MEDIA_INVALID |
| 138 | } sdp_media_e; |
| 139 | |
| 140 | |
| 141 | /* Connection Network Type */ |
| 142 | typedef enum { |
| 143 | SDP_NT_INTERNET = 0, /* 0 -> IP - In SDP "IN" is defined */ |
| 144 | /* to mean "Internet" */ |
| 145 | SDP_NT_ATM, /* 1 -> ATM */ |
| 146 | SDP_NT_FR, /* 2 -> FRAME RELAY */ |
| 147 | SDP_NT_LOCAL, /* 3 -> local */ |
| 148 | SDP_MAX_NETWORK_TYPES, |
| 149 | SDP_NT_UNSUPPORTED, |
| 150 | SDP_NT_INVALID |
| 151 | } sdp_nettype_e; |
| 152 | |
| 153 | |
| 154 | /* Address Type */ |
| 155 | typedef enum { |
| 156 | SDP_AT_IP4 = 0, /* 0 -> IP Version 4 (IP4) */ |
| 157 | SDP_AT_IP6, /* 1 -> IP Version 6 (IP6) */ |
| 158 | SDP_AT_NSAP, /* 2 -> 20 byte NSAP address */ |
| 159 | SDP_AT_EPN, /* 3 -> 32 bytes of endpoint name */ |
| 160 | SDP_AT_E164, /* 4 -> 15 digit decimal number addr */ |
| 161 | SDP_AT_GWID, /* 5 -> Private gw id. ASCII string */ |
| 162 | SDP_MAX_ADDR_TYPES, |
| 163 | SDP_AT_UNSUPPORTED, |
| 164 | SDP_AT_FQDN, |
| 165 | SDP_AT_INVALID |
| 166 | } sdp_addrtype_e; |
| 167 | |
| 168 | |
| 169 | /* Transport Types */ |
| 170 | |
| 171 | #define SDP_MAX_PROFILES3 3 |
| 172 | |
| 173 | typedef enum { |
| 174 | SDP_TRANSPORT_RTPAVP = 0, |
| 175 | SDP_TRANSPORT_UDP, |
| 176 | SDP_TRANSPORT_UDPTL, |
| 177 | SDP_TRANSPORT_CES10, |
| 178 | SDP_TRANSPORT_LOCAL, |
| 179 | SDP_TRANSPORT_AAL2_ITU, |
| 180 | SDP_TRANSPORT_AAL2_ATMF, |
| 181 | SDP_TRANSPORT_AAL2_CUSTOM, |
| 182 | SDP_TRANSPORT_AAL1AVP, |
| 183 | SDP_TRANSPORT_UDPSPRT, |
| 184 | SDP_TRANSPORT_RTPSAVP, |
| 185 | SDP_TRANSPORT_TCP, |
| 186 | SDP_TRANSPORT_RTPSAVPF, |
| 187 | SDP_TRANSPORT_DTLSSCTP, |
| 188 | SDP_TRANSPORT_RTPAVPF, |
| 189 | SDP_TRANSPORT_UDPTLSRTPSAVP, |
| 190 | SDP_TRANSPORT_UDPTLSRTPSAVPF, |
| 191 | SDP_TRANSPORT_TCPDTLSRTPSAVP, |
| 192 | SDP_TRANSPORT_TCPDTLSRTPSAVPF, |
| 193 | SDP_TRANSPORT_UDPDTLSSCTP, |
| 194 | SDP_TRANSPORT_TCPDTLSSCTP, |
| 195 | SDP_MAX_TRANSPORT_TYPES, |
| 196 | SDP_TRANSPORT_UNSUPPORTED, |
| 197 | SDP_TRANSPORT_INVALID |
| 198 | } sdp_transport_e; |
| 199 | |
| 200 | |
| 201 | /* Encryption KeyType */ |
| 202 | typedef enum { |
| 203 | SDP_ENCRYPT_CLEAR, /* 0 -> Key given in the clear */ |
| 204 | SDP_ENCRYPT_BASE64, /* 1 -> Base64 encoded key */ |
| 205 | SDP_ENCRYPT_URI, /* 2 -> Ptr to URI */ |
| 206 | SDP_ENCRYPT_PROMPT, /* 3 -> No key included, prompt user */ |
| 207 | SDP_MAX_ENCRYPT_TYPES, |
| 208 | SDP_ENCRYPT_UNSUPPORTED, |
| 209 | SDP_ENCRYPT_INVALID |
| 210 | } sdp_encrypt_type_e; |
| 211 | |
| 212 | |
| 213 | /* Known string payload types */ |
| 214 | typedef enum { |
| 215 | SDP_PAYLOAD_T38, |
| 216 | SDP_PAYLOAD_XTMR, |
| 217 | SDP_PAYLOAD_T120, |
| 218 | SDP_MAX_STRING_PAYLOAD_TYPES, |
| 219 | SDP_PAYLOAD_UNSUPPORTED, |
| 220 | SDP_PAYLOAD_INVALID |
| 221 | } sdp_payload_e; |
| 222 | |
| 223 | |
| 224 | /* Payload type indicator */ |
| 225 | typedef enum { |
| 226 | SDP_PAYLOAD_NUMERIC, |
| 227 | SDP_PAYLOAD_ENUM |
| 228 | } sdp_payload_ind_e; |
| 229 | |
| 230 | |
| 231 | /* Image payload types */ |
| 232 | typedef enum { |
| 233 | SDP_PORT_NUM_ONLY, /* <port> or '$' */ |
| 234 | SDP_PORT_NUM_COUNT, /* <port>/<number of ports> */ |
| 235 | SDP_PORT_VPI_VCI, /* <vpi>/<vci> */ |
| 236 | SDP_PORT_VCCI, /* <vcci> */ |
| 237 | SDP_PORT_NUM_VPI_VCI, /* <port>/<vpi>/<vci> */ |
| 238 | SDP_PORT_VCCI_CID, /* <vcci>/<cid> or '$'/'$' */ |
| 239 | SDP_PORT_NUM_VPI_VCI_CID, /* <port>/<vpi>/<vci>/<cid> */ |
| 240 | SDP_MAX_PORT_FORMAT_TYPES, |
| 241 | SDP_PORT_FORMAT_INVALID |
| 242 | } sdp_port_format_e; |
| 243 | |
| 244 | |
| 245 | /* Fmtp attribute format Types */ |
| 246 | typedef enum { |
| 247 | SDP_FMTP_NTE, |
| 248 | SDP_FMTP_CODEC_INFO, |
| 249 | SDP_FMTP_MODE, |
| 250 | SDP_FMTP_DATACHANNEL, |
| 251 | SDP_FMTP_UNKNOWN_TYPE, |
| 252 | SDP_FMTP_MAX_TYPE |
| 253 | } sdp_fmtp_format_type_e; |
| 254 | |
| 255 | |
| 256 | /* T.38 Rate Mgmt Types */ |
| 257 | typedef enum { |
| 258 | SDP_T38_LOCAL_TCF, |
| 259 | SDP_T38_TRANSFERRED_TCF, |
| 260 | SDP_T38_UNKNOWN_RATE, |
| 261 | SDP_T38_MAX_RATES |
| 262 | } sdp_t38_ratemgmt_e; |
| 263 | |
| 264 | |
| 265 | /* T.38 udp EC Types */ |
| 266 | typedef enum { |
| 267 | SDP_T38_UDP_REDUNDANCY, |
| 268 | SDP_T38_UDP_FEC, |
| 269 | SDP_T38_UDPEC_UNKNOWN, |
| 270 | SDP_T38_MAX_UDPEC |
| 271 | } sdp_t38_udpec_e; |
| 272 | |
| 273 | /* Bitmaps for manipulating sdp_direction_e */ |
| 274 | typedef enum { |
| 275 | SDP_DIRECTION_FLAG_SEND=0x01, |
| 276 | SDP_DIRECTION_FLAG_RECV=0x02 |
| 277 | } sdp_direction_flag_e; |
| 278 | |
| 279 | /* Media flow direction */ |
| 280 | typedef enum { |
| 281 | SDP_DIRECTION_INACTIVE = 0, |
| 282 | SDP_DIRECTION_SENDONLY = SDP_DIRECTION_FLAG_SEND, |
| 283 | SDP_DIRECTION_RECVONLY = SDP_DIRECTION_FLAG_RECV, |
| 284 | SDP_DIRECTION_SENDRECV = SDP_DIRECTION_FLAG_SEND | SDP_DIRECTION_FLAG_RECV, |
| 285 | SDP_MAX_QOS_DIRECTIONS |
| 286 | } sdp_direction_e; |
| 287 | |
| 288 | #define SDP_DIRECTION_PRINT(arg)(((sdp_direction_e)(arg)) == SDP_DIRECTION_INACTIVE ? "SDP_DIRECTION_INACTIVE " : ((sdp_direction_e)(arg)) == SDP_DIRECTION_SENDONLY ? "SDP_DIRECTION_SENDONLY" : ((sdp_direction_e)(arg)) == SDP_DIRECTION_RECVONLY ? "SDP_DIRECTION_RECVONLY " : ((sdp_direction_e)(arg)) == SDP_DIRECTION_SENDRECV ? " SDP_DIRECTION_SENDRECV" : "SDP_MAX_QOS_DIRECTIONS") \ |
| 289 | (((sdp_direction_e)(arg)) == SDP_DIRECTION_INACTIVE ? "SDP_DIRECTION_INACTIVE " : \ |
| 290 | ((sdp_direction_e)(arg)) == SDP_DIRECTION_SENDONLY ? "SDP_DIRECTION_SENDONLY": \ |
| 291 | ((sdp_direction_e)(arg)) == SDP_DIRECTION_RECVONLY ? "SDP_DIRECTION_RECVONLY ": \ |
| 292 | ((sdp_direction_e)(arg)) == SDP_DIRECTION_SENDRECV ? " SDP_DIRECTION_SENDRECV": "SDP_MAX_QOS_DIRECTIONS") |
| 293 | |
| 294 | |
| 295 | /* QOS Strength tag */ |
| 296 | typedef enum { |
| 297 | SDP_QOS_STRENGTH_OPT, |
| 298 | SDP_QOS_STRENGTH_MAND, |
| 299 | SDP_QOS_STRENGTH_SUCC, |
| 300 | SDP_QOS_STRENGTH_FAIL, |
| 301 | SDP_QOS_STRENGTH_NONE, |
| 302 | SDP_MAX_QOS_STRENGTH, |
| 303 | SDP_QOS_STRENGTH_UNKNOWN |
| 304 | } sdp_qos_strength_e; |
| 305 | |
| 306 | |
| 307 | /* QOS direction */ |
| 308 | typedef enum { |
| 309 | SDP_QOS_DIR_SEND, |
| 310 | SDP_QOS_DIR_RECV, |
| 311 | SDP_QOS_DIR_SENDRECV, |
| 312 | SDP_QOS_DIR_NONE, |
| 313 | SDP_MAX_QOS_DIR, |
| 314 | SDP_QOS_DIR_UNKNOWN |
| 315 | } sdp_qos_dir_e; |
| 316 | |
| 317 | /* QoS Status types */ |
| 318 | typedef enum { |
| 319 | SDP_QOS_LOCAL, |
| 320 | SDP_QOS_REMOTE, |
| 321 | SDP_QOS_E2E, |
| 322 | SDP_MAX_QOS_STATUS_TYPES, |
| 323 | SDP_QOS_STATUS_TYPE_UNKNOWN |
| 324 | } sdp_qos_status_types_e; |
| 325 | |
| 326 | /* QoS Status types */ |
| 327 | typedef enum { |
| 328 | SDP_CURR_QOS_TYPE, |
| 329 | SDP_CURR_UNKNOWN_TYPE, |
| 330 | SDP_MAX_CURR_TYPES |
| 331 | } sdp_curr_type_e; |
| 332 | |
| 333 | /* QoS Status types */ |
| 334 | typedef enum { |
| 335 | SDP_DES_QOS_TYPE, |
| 336 | SDP_DES_UNKNOWN_TYPE, |
| 337 | SDP_MAX_DES_TYPES |
| 338 | } sdp_des_type_e; |
| 339 | |
| 340 | /* QoS Status types */ |
| 341 | typedef enum { |
| 342 | SDP_CONF_QOS_TYPE, |
| 343 | SDP_CONF_UNKNOWN_TYPE, |
| 344 | SDP_MAX_CONF_TYPES |
| 345 | } sdp_conf_type_e; |
| 346 | |
| 347 | |
| 348 | /* Named event range result values. */ |
| 349 | typedef enum { |
| 350 | SDP_NO_MATCH, |
| 351 | SDP_PARTIAL_MATCH, |
| 352 | SDP_FULL_MATCH |
| 353 | } sdp_ne_res_e; |
| 354 | |
| 355 | /* Fmtp attribute parameters for audio/video codec information */ |
| 356 | typedef enum { |
| 357 | |
| 358 | /* mainly for audio codecs */ |
| 359 | SDP_ANNEX_A, /* 0 */ |
| 360 | SDP_ANNEX_B, |
| 361 | SDP_BITRATE, |
| 362 | |
| 363 | /* for video codecs */ |
| 364 | SDP_QCIF, |
| 365 | SDP_CIF, |
| 366 | SDP_MAXBR, |
| 367 | SDP_SQCIF, |
| 368 | SDP_CIF4, |
| 369 | SDP_CIF16, |
| 370 | SDP_CUSTOM, |
| 371 | SDP_PAR, |
| 372 | SDP_CPCF, |
| 373 | SDP_BPP, |
| 374 | SDP_HRD, |
| 375 | SDP_PROFILE, |
| 376 | SDP_LEVEL, |
| 377 | SDP_INTERLACE, |
| 378 | |
| 379 | /* H.264 related */ |
| 380 | SDP_PROFILE_LEVEL_ID, /* 17 */ |
| 381 | SDP_PARAMETER_SETS, |
| 382 | SDP_PACKETIZATION_MODE, |
| 383 | SDP_INTERLEAVING_DEPTH, |
| 384 | SDP_DEINT_BUF_REQ, |
| 385 | SDP_MAX_DON_DIFF, |
| 386 | SDP_INIT_BUF_TIME, |
| 387 | |
| 388 | SDP_MAX_MBPS, |
| 389 | SDP_MAX_FS, |
| 390 | SDP_MAX_CPB, |
| 391 | SDP_MAX_DPB, |
| 392 | SDP_MAX_BR, |
| 393 | SDP_REDUNDANT_PIC_CAP, |
| 394 | SDP_DEINT_BUF_CAP, |
| 395 | SDP_MAX_RCMD_NALU_SIZE, |
| 396 | |
| 397 | SDP_PARAMETER_ADD, |
| 398 | |
| 399 | /* Annexes - begin */ |
| 400 | /* Some require special handling as they don't have token=token format*/ |
| 401 | SDP_ANNEX_D, |
| 402 | SDP_ANNEX_F, |
| 403 | SDP_ANNEX_I, |
| 404 | SDP_ANNEX_J, |
| 405 | SDP_ANNEX_T, |
| 406 | |
| 407 | /* These annexes have token=token format */ |
| 408 | SDP_ANNEX_K, |
| 409 | SDP_ANNEX_N, |
| 410 | SDP_ANNEX_P, |
| 411 | |
| 412 | SDP_MODE, |
| 413 | SDP_LEVEL_ASYMMETRY_ALLOWED, |
| 414 | SDP_MAX_AVERAGE_BIT_RATE, |
| 415 | SDP_USED_TX, |
| 416 | SDP_STEREO, |
| 417 | SDP_USE_IN_BAND_FEC, |
| 418 | SDP_MAX_CODED_AUDIO_BW, |
| 419 | SDP_CBR, |
| 420 | SDP_MAX_FR, |
| 421 | SDP_MAX_PLAYBACK_RATE, |
| 422 | SDP_APT, |
| 423 | SDP_RTX_TIME, |
| 424 | SDP_LEVEL_IDX, |
| 425 | SDP_TIER, |
| 426 | SDP_OPUS_PTIME, |
| 427 | SDP_OPUS_MINPTIME, |
| 428 | SDP_OPUS_MAXPTIME, |
| 429 | SDP_MAX_FMTP_PARAM, |
| 430 | SDP_FMTP_PARAM_UNKNOWN |
| 431 | } sdp_fmtp_codec_param_e; |
| 432 | |
| 433 | /* Fmtp attribute parameters values for |
| 434 | fmtp attribute parameters which convey codec |
| 435 | information */ |
| 436 | |
| 437 | typedef enum { |
| 438 | SDP_YES, |
| 439 | SDP_NO, |
| 440 | SDP_MAX_FMTP_PARAM_VAL, |
| 441 | SDP_FMTP_PARAM_UNKNOWN_VAL |
| 442 | } sdp_fmtp_codec_param_val_e; |
| 443 | |
| 444 | /* silenceSupp suppPref */ |
| 445 | typedef enum { |
| 446 | SDP_SILENCESUPP_PREF_STANDARD, |
| 447 | SDP_SILENCESUPP_PREF_CUSTOM, |
| 448 | SDP_SILENCESUPP_PREF_NULL, /* "-" */ |
| 449 | SDP_MAX_SILENCESUPP_PREF, |
| 450 | SDP_SILENCESUPP_PREF_UNKNOWN |
| 451 | } sdp_silencesupp_pref_e; |
| 452 | |
| 453 | /* silenceSupp sidUse */ |
| 454 | typedef enum { |
| 455 | SDP_SILENCESUPP_SIDUSE_NOSID, |
| 456 | SDP_SILENCESUPP_SIDUSE_FIXED, |
| 457 | SDP_SILENCESUPP_SIDUSE_SAMPLED, |
| 458 | SDP_SILENCESUPP_SIDUSE_NULL, /* "-" */ |
| 459 | SDP_MAX_SILENCESUPP_SIDUSE, |
| 460 | SDP_SILENCESUPP_SIDUSE_UNKNOWN |
| 461 | } sdp_silencesupp_siduse_e; |
| 462 | |
| 463 | typedef enum { |
| 464 | SDP_MEDIADIR_ROLE_PASSIVE, |
| 465 | SDP_MEDIADIR_ROLE_ACTIVE, |
| 466 | SDP_MEDIADIR_ROLE_BOTH, |
| 467 | SDP_MEDIADIR_ROLE_REUSE, |
| 468 | SDP_MEDIADIR_ROLE_UNKNOWN, |
| 469 | SDP_MAX_MEDIADIR_ROLES, |
| 470 | SDP_MEDIADIR_ROLE_UNSUPPORTED, |
| 471 | SDP_MEDIADIR_ROLE_INVALID |
| 472 | } sdp_mediadir_role_e; |
| 473 | |
| 474 | typedef enum { |
| 475 | SDP_GROUP_ATTR_FID, |
| 476 | SDP_GROUP_ATTR_LS, |
| 477 | SDP_GROUP_ATTR_ANAT, |
| 478 | SDP_GROUP_ATTR_BUNDLE, |
| 479 | SDP_MAX_GROUP_ATTR_VAL, |
| 480 | SDP_GROUP_ATTR_UNSUPPORTED |
| 481 | } sdp_group_attr_e; |
| 482 | |
| 483 | typedef enum { |
| 484 | SDP_SSRC_GROUP_ATTR_DUP, |
| 485 | SDP_SSRC_GROUP_ATTR_FEC, |
| 486 | SDP_SSRC_GROUP_ATTR_FECFR, |
| 487 | SDP_SSRC_GROUP_ATTR_FID, |
| 488 | SDP_SSRC_GROUP_ATTR_SIM, |
| 489 | SDP_MAX_SSRC_GROUP_ATTR_VAL, |
| 490 | SDP_SSRC_GROUP_ATTR_UNSUPPORTED |
| 491 | } sdp_ssrc_group_attr_e; |
| 492 | |
| 493 | typedef enum { |
| 494 | SDP_SRC_FILTER_INCL, |
| 495 | SDP_SRC_FILTER_EXCL, |
| 496 | SDP_MAX_FILTER_MODE, |
| 497 | SDP_FILTER_MODE_NOT_PRESENT |
| 498 | } sdp_src_filter_mode_e; |
| 499 | |
| 500 | typedef enum { |
| 501 | SDP_RTCP_UNICAST_MODE_REFLECTION, |
| 502 | SDP_RTCP_UNICAST_MODE_RSI, |
| 503 | SDP_RTCP_MAX_UNICAST_MODE, |
| 504 | SDP_RTCP_UNICAST_MODE_NOT_PRESENT |
| 505 | } sdp_rtcp_unicast_mode_e; |
| 506 | |
| 507 | typedef enum { |
| 508 | SDP_CONNECTION_NOT_FOUND = -1, |
| 509 | SDP_CONNECTION_NEW = 0, |
| 510 | SDP_CONNECTION_EXISTING, |
| 511 | SDP_MAX_CONNECTION, |
| 512 | SDP_CONNECTION_UNKNOWN |
| 513 | } sdp_connection_type_e; |
| 514 | |
| 515 | typedef enum { |
| 516 | SDP_SCTP_MEDIA_FMT_WEBRTC_DATACHANNEL, |
| 517 | SDP_SCTP_MEDIA_FMT_UNKNOWN |
| 518 | } sdp_sctp_media_fmt_type_e; |
| 519 | |
| 520 | /* |
| 521 | * sdp_srtp_fec_order_t |
| 522 | * This type defines the order in which to perform FEC |
| 523 | * (Forward Error Correction) and SRTP Encryption/Authentication. |
| 524 | */ |
| 525 | typedef enum sdp_srtp_fec_order_t_ { |
| 526 | SDP_SRTP_THEN_FEC, /* upon sending perform SRTP then FEC */ |
| 527 | SDP_FEC_THEN_SRTP, /* upon sending perform FEC then SRTP */ |
| 528 | SDP_SRTP_FEC_SPLIT /* upon sending perform SRTP Encryption, |
| 529 | * then FEC, the SRTP Authentication */ |
| 530 | } sdp_srtp_fec_order_t; |
| 531 | |
| 532 | |
| 533 | /* |
| 534 | * sdp_srtp_crypto_suite_t |
| 535 | * Enumeration of the crypto suites supported for MGCP SRTP |
| 536 | * package. |
| 537 | */ |
| 538 | typedef enum sdp_srtp_crypto_suite_t_ { |
| 539 | SDP_SRTP_UNKNOWN_CRYPTO_SUITE = 0, |
| 540 | SDP_SRTP_AES_CM_128_HMAC_SHA1_32, |
| 541 | SDP_SRTP_AES_CM_128_HMAC_SHA1_80, |
| 542 | SDP_SRTP_F8_128_HMAC_SHA1_80, |
| 543 | SDP_SRTP_MAX_NUM_CRYPTO_SUITES |
| 544 | } sdp_srtp_crypto_suite_t; |
| 545 | |
| 546 | /* |
| 547 | * SDP SRTP crypto suite definition parameters |
| 548 | * |
| 549 | * SDP_SRTP_<crypto_suite>_KEY_BYTES |
| 550 | * The size of a master key for <crypto_suite> in bytes. |
| 551 | * |
| 552 | * SDP_SRTP_<crypto_suite>_SALT_BYTES |
| 553 | * The size of a master salt for <crypto_suite> in bytes. |
| 554 | */ |
| 555 | #define SDP_SRTP_AES_CM_128_HMAC_SHA1_32_KEY_BYTES16 16 |
| 556 | #define SDP_SRTP_AES_CM_128_HMAC_SHA1_32_SALT_BYTES14 14 |
| 557 | #define SDP_SRTP_AES_CM_128_HMAC_SHA1_80_KEY_BYTES16 16 |
| 558 | #define SDP_SRTP_AES_CM_128_HMAC_SHA1_80_SALT_BYTES14 14 |
| 559 | #define SDP_SRTP_F8_128_HMAC_SHA1_80_KEY_BYTES16 16 |
| 560 | #define SDP_SRTP_F8_128_HMAC_SHA1_80_SALT_BYTES14 14 |
| 561 | |
| 562 | /* SDP Defines */ |
| 563 | |
| 564 | #define SDP_MAX_LONG_STRING_LEN4096 4096 /* Max len for long SDP strings */ |
| 565 | #define SDP_MAX_STRING_LEN256 256 /* Max len for SDP string */ |
| 566 | #define SDP_MAX_SHORT_STRING_LEN12 12 /* Max len for a short SDP string */ |
| 567 | #define SDP_MAX_PAYLOAD_TYPES30 30 /* Max payload types in m= line */ |
| 568 | #define SDP_TOKEN_LEN2 2 /* Len of <token>= */ |
| 569 | #define SDP_CURRENT_VERSION0 0 /* Current default SDP version */ |
| 570 | #define SDP_MAX_PORT_PARAMS4 4 /* Max m= port params - x/x/x/x */ |
| 571 | #define SDP_MIN_DYNAMIC_PAYLOAD96 96 /* Min dynamic payload */ |
| 572 | #define SDP_MAX_DYNAMIC_PAYLOAD127 127 /* Max dynamic payload */ |
| 573 | #define SDP_MIN_CIF_VALUE1 1 /* applies to all QCIF,CIF,CIF4,CIF16,SQCIF */ |
| 574 | #define SDP_MAX_CIF_VALUE32 32 /* applies to all QCIF,CIF,CIF4,CIF16,SQCIF */ |
| 575 | #define SDP_MAX_SRC_ADDR_LIST1 1 /* Max source addrs for which filter applies */ |
| 576 | |
| 577 | |
| 578 | #define SDP_DEFAULT_PACKETIZATION_MODE_VALUE0 0 /* max packetization mode for H.264 */ |
| 579 | #define SDP_MAX_PACKETIZATION_MODE_VALUE2 2 /* max packetization mode for H.264 */ |
| 580 | #define SDP_INVALID_PACKETIZATION_MODE_VALUE255 255 |
| 581 | |
| 582 | #define SDP_MAX_LEVEL_ASYMMETRY_ALLOWED_VALUE1 1 /* max level asymmetry allowed value for H.264 */ |
| 583 | #define SDP_DEFAULT_LEVEL_ASYMMETRY_ALLOWED_VALUE0 0 /* default level asymmetry allowed value for H.264 */ |
| 584 | #define SDP_INVALID_LEVEL_ASYMMETRY_ALLOWED_VALUE2 2 /* invalid value for level-asymmetry-allowed param for H.264 */ |
| 585 | |
| 586 | |
| 587 | /* Max number of stream ids that can be grouped together */ |
| 588 | #define SDP_MAX_MEDIA_STREAMS128 128 |
| 589 | |
| 590 | #define SDP_UNSUPPORTED"Unsupported" "Unsupported" |
| 591 | |
| 592 | #define SDP_MAX_PROFILE_VALUE10 10 |
| 593 | #define SDP_MAX_LEVEL_VALUE100 100 |
| 594 | #define SDP_MIN_PROFILE_LEVEL_VALUE0 0 |
| 595 | #define SDP_MAX_TTL_VALUE255 255 |
| 596 | #define SDP_MIN_MCAST_ADDR_HI_BIT_VAL224 224 |
| 597 | #define SDP_MAX_MCAST_ADDR_HI_BIT_VAL239 239 |
| 598 | |
| 599 | #define SDP_MAX_SSRC_GROUP_SSRCS32 32 /* max number of ssrcs allowed in a ssrc-group */ |
| 600 | |
| 601 | /* SDP Enum Types */ |
| 602 | |
| 603 | typedef enum { |
| 604 | SDP_ERR_INVALID_CONF_PTR, |
| 605 | SDP_ERR_INVALID_SDP_PTR, |
| 606 | SDP_ERR_INTERNAL, |
| 607 | SDP_MAX_ERR_TYPES |
| 608 | } sdp_errmsg_e; |
| 609 | |
| 610 | /* SDP Structure Definitions */ |
| 611 | |
| 612 | /* String names of varios tokens */ |
| 613 | typedef struct { |
| 614 | char *name; |
| 615 | uint8_t strlen; |
| 616 | } sdp_namearray_t; |
| 617 | |
| 618 | /* c= line info */ |
| 619 | typedef struct { |
| 620 | sdp_nettype_e nettype; |
| 621 | sdp_addrtype_e addrtype; |
| 622 | char conn_addr[SDP_MAX_STRING_LEN256+1]; |
| 623 | tinybool is_multicast; |
| 624 | uint16_t ttl; |
| 625 | uint16_t num_of_addresses; |
| 626 | } sdp_conn_t; |
| 627 | |
| 628 | /* t= line info */ |
| 629 | typedef struct sdp_timespec { |
| 630 | char start_time[SDP_MAX_STRING_LEN256+1]; |
| 631 | char stop_time[SDP_MAX_STRING_LEN256+1]; |
| 632 | struct sdp_timespec *next_p; |
| 633 | } sdp_timespec_t; |
| 634 | |
| 635 | |
| 636 | /* k= line info */ |
| 637 | typedef struct sdp_encryptspec { |
| 638 | sdp_encrypt_type_e encrypt_type; |
| 639 | char encrypt_key[SDP_MAX_STRING_LEN256+1]; |
| 640 | } sdp_encryptspec_t; |
| 641 | |
| 642 | |
| 643 | /* FMTP attribute deals with named events in the range of 0-255 as |
| 644 | * defined in RFC 2833 */ |
| 645 | #define SDP_MIN_NE_VALUE0 0 |
| 646 | #define SDP_MAX_NE_VALUES256 256 |
| 647 | #define SDP_NE_BITS_PER_WORD( sizeof(uint32_t) * 8 ) ( sizeof(uint32_t) * 8 ) |
| 648 | #define SDP_NE_NUM_BMAP_WORDS((256 + ( sizeof(uint32_t) * 8 ) - 1)/( sizeof(uint32_t) * 8 ) ) ((SDP_MAX_NE_VALUES256 + SDP_NE_BITS_PER_WORD( sizeof(uint32_t) * 8 ) - 1)/SDP_NE_BITS_PER_WORD( sizeof(uint32_t) * 8 ) ) |
| 649 | #define SDP_NE_BIT_0( 0x00000001 ) ( 0x00000001 ) |
| 650 | #define SDP_NE_ALL_BITS( 0xFFFFFFFF ) ( 0xFFFFFFFF ) |
| 651 | |
| 652 | #define SDP_DEINT_BUF_REQ_FLAG0x1 0x1 |
| 653 | #define SDP_INIT_BUF_TIME_FLAG0x2 0x2 |
| 654 | #define SDP_MAX_RCMD_NALU_SIZE_FLAG0x4 0x4 |
| 655 | #define SDP_DEINT_BUF_CAP_FLAG0x8 0x8 |
| 656 | |
| 657 | #define SDP_FMTP_UNUSED0xFFFF 0xFFFF |
| 658 | |
| 659 | typedef struct sdp_fmtp { |
| 660 | uint16_t payload_num; |
| 661 | uint32_t maxval; /* maxval optimizes bmap search */ |
| 662 | uint32_t bmap[ SDP_NE_NUM_BMAP_WORDS((256 + ( sizeof(uint32_t) * 8 ) - 1)/( sizeof(uint32_t) * 8 ) ) ]; |
| 663 | sdp_fmtp_format_type_e fmtp_format; /* Gives the format type |
| 664 | for FMTP attribute*/ |
| 665 | tinybool annexb_required; |
| 666 | tinybool annexa_required; |
| 667 | |
| 668 | tinybool annexa; |
| 669 | tinybool annexb; |
| 670 | uint32_t bitrate; |
| 671 | uint32_t mode; |
| 672 | |
| 673 | /* some OPUS specific fmtp params */ |
| 674 | uint32_t maxplaybackrate; |
| 675 | uint32_t maxaveragebitrate; |
| 676 | uint16_t usedtx; |
| 677 | uint16_t stereo; |
| 678 | uint16_t useinbandfec; |
| 679 | char maxcodedaudiobandwidth[SDP_MAX_STRING_LEN256+1]; |
| 680 | uint16_t cbr; |
| 681 | uint32_t opus_ptime; |
| 682 | uint32_t opus_minptime; |
| 683 | uint32_t opus_maxptime; |
| 684 | |
| 685 | /* BEGIN - All Video related FMTP parameters */ |
| 686 | uint16_t qcif; |
| 687 | uint16_t cif; |
| 688 | uint16_t maxbr; |
| 689 | uint16_t sqcif; |
| 690 | uint16_t cif4; |
| 691 | uint16_t cif16; |
| 692 | |
| 693 | uint16_t custom_x; |
| 694 | uint16_t custom_y; |
| 695 | uint16_t custom_mpi; |
| 696 | /* CUSTOM=360,240,4 implies X-AXIS=360, Y-AXIS=240; MPI=4 */ |
| 697 | uint16_t par_width; |
| 698 | uint16_t par_height; |
| 699 | /* PAR=12:11 implies par_width=12, par_height=11 */ |
| 700 | |
| 701 | /* CPCF should be a float. IOS does not support float and so it is uint16_t */ |
| 702 | /* For portable stack, CPCF should be defined as float and the parsing should |
| 703 | * be modified accordingly */ |
| 704 | uint16_t cpcf; |
| 705 | uint16_t bpp; |
| 706 | uint16_t hrd; |
| 707 | |
| 708 | int16_t profile; |
| 709 | int16_t level; |
| 710 | tinybool is_interlace; |
| 711 | |
| 712 | /* some more H.264 specific fmtp params */ |
| 713 | char profile_level_id[SDP_MAX_STRING_LEN256+1]; |
| 714 | char parameter_sets[SDP_MAX_STRING_LEN256+1]; |
| 715 | uint16_t packetization_mode; |
| 716 | uint16_t level_asymmetry_allowed; |
| 717 | uint16_t interleaving_depth; |
| 718 | uint32_t deint_buf_req; |
| 719 | uint32_t max_don_diff; |
| 720 | uint32_t init_buf_time; |
| 721 | |
| 722 | uint32_t max_mbps; |
| 723 | uint32_t max_fs; |
| 724 | uint32_t max_fr; |
| 725 | uint32_t max_cpb; |
| 726 | uint32_t max_dpb; |
| 727 | uint32_t max_br; |
| 728 | tinybool redundant_pic_cap; |
| 729 | uint32_t deint_buf_cap; |
| 730 | uint32_t max_rcmd_nalu_size; |
| 731 | uint16_t parameter_add; |
| 732 | |
| 733 | tinybool annex_d; |
| 734 | |
| 735 | tinybool annex_f; |
| 736 | tinybool annex_i; |
| 737 | tinybool annex_j; |
| 738 | tinybool annex_t; |
| 739 | |
| 740 | /* H.263 codec requires annex K,N and P to have values */ |
| 741 | uint16_t annex_k_val; |
| 742 | uint16_t annex_n_val; |
| 743 | |
| 744 | /* RFC 5109 Section 4.2 for specifying redundant encodings */ |
| 745 | uint8_t redundant_encodings[SDP_FMTP_MAX_REDUNDANT_ENCODINGS128]; |
| 746 | |
| 747 | /* av1 */ |
| 748 | uint8_t av1_profile; |
| 749 | tinybool av1_has_profile; |
| 750 | uint8_t av1_level_idx; |
| 751 | tinybool av1_has_level_idx; |
| 752 | uint8_t av1_tier; |
| 753 | tinybool av1_has_tier; |
| 754 | |
| 755 | /* RFC 2833 Section 3.9 (4733) for specifying support DTMF tones: |
| 756 | The list of values consists of comma-separated elements, which |
| 757 | can be either a single decimal number or two decimal numbers |
| 758 | separated by a hyphen (dash), where the second number is larger |
| 759 | than the first. No whitespace is allowed between numbers or |
| 760 | hyphens. The list does not have to be sorted. |
| 761 | */ |
| 762 | char dtmf_tones[SDP_MAX_STRING_LEN256+1]; |
| 763 | |
| 764 | /* Annex P can take one or more values in the range 1-4 . e.g P=1,3 */ |
| 765 | uint16_t annex_p_val_picture_resize; /* 1 = four; 2 = sixteenth */ |
| 766 | uint16_t annex_p_val_warp; /* 3 = half; 4=sixteenth */ |
| 767 | |
| 768 | uint8_t flag; |
| 769 | |
| 770 | /* RTX parameters */ |
| 771 | uint8_t apt; |
| 772 | tinybool has_rtx_time; |
| 773 | uint32_t rtx_time; |
| 774 | |
| 775 | /* END - All Video related FMTP parameters */ |
| 776 | |
| 777 | } sdp_fmtp_t; |
| 778 | |
| 779 | /* a=sctpmap line used for Datachannels */ |
| 780 | typedef struct sdp_sctpmap { |
| 781 | uint16_t port; |
| 782 | uint32_t streams; /* Num streams per Datachannel */ |
| 783 | char protocol[SDP_MAX_STRING_LEN256+1]; |
| 784 | } sdp_sctpmap_t; |
| 785 | |
| 786 | #define SDP_MAX_MSID_LEN64 64 |
| 787 | |
| 788 | typedef struct sdp_msid { |
| 789 | char identifier[SDP_MAX_MSID_LEN64+1]; |
| 790 | char appdata[SDP_MAX_MSID_LEN64+1]; |
| 791 | } sdp_msid_t; |
| 792 | |
| 793 | /* a=qos|secure|X-pc-qos|X-qos info */ |
| 794 | typedef struct sdp_qos { |
| 795 | sdp_qos_strength_e strength; |
| 796 | sdp_qos_dir_e direction; |
| 797 | tinybool confirm; |
| 798 | sdp_qos_status_types_e status_type; |
| 799 | } sdp_qos_t; |
| 800 | |
| 801 | /* a=curr:qos status_type direction */ |
| 802 | typedef struct sdp_curr { |
| 803 | sdp_curr_type_e type; |
| 804 | sdp_qos_status_types_e status_type; |
| 805 | sdp_qos_dir_e direction; |
| 806 | } sdp_curr_t; |
| 807 | |
| 808 | /* a=des:qos strength status_type direction */ |
| 809 | typedef struct sdp_des { |
| 810 | sdp_des_type_e type; |
| 811 | sdp_qos_strength_e strength; |
| 812 | sdp_qos_status_types_e status_type; |
| 813 | sdp_qos_dir_e direction; |
| 814 | } sdp_des_t; |
| 815 | |
| 816 | /* a=conf:qos status_type direction */ |
| 817 | typedef struct sdp_conf { |
| 818 | sdp_conf_type_e type; |
| 819 | sdp_qos_status_types_e status_type; |
| 820 | sdp_qos_dir_e direction; |
| 821 | } sdp_conf_t; |
| 822 | |
| 823 | |
| 824 | /* a=rtpmap or a=sprtmap info */ |
| 825 | typedef struct sdp_transport_map { |
| 826 | uint16_t payload_num; |
| 827 | char encname[SDP_MAX_STRING_LEN256+1]; |
| 828 | uint32_t clockrate; |
| 829 | uint16_t num_chan; |
| 830 | } sdp_transport_map_t; |
| 831 | |
| 832 | |
| 833 | /* a=rtr info */ |
| 834 | typedef struct sdp_rtr { |
| 835 | tinybool confirm; |
| 836 | } sdp_rtr_t; |
| 837 | |
| 838 | /* a=subnet info */ |
| 839 | typedef struct sdp_subnet { |
| 840 | sdp_nettype_e nettype; |
| 841 | sdp_addrtype_e addrtype; |
| 842 | char addr[SDP_MAX_STRING_LEN256+1]; |
| 843 | int32_t prefix; |
| 844 | } sdp_subnet_t; |
| 845 | |
| 846 | |
| 847 | /* a=X-pc-codec info */ |
| 848 | typedef struct sdp_pccodec { |
| 849 | uint16_t num_payloads; |
| 850 | ushort payload_type[SDP_MAX_PAYLOAD_TYPES30]; |
| 851 | } sdp_pccodec_t; |
| 852 | |
| 853 | /* a=direction info */ |
| 854 | typedef struct sdp_comediadir { |
| 855 | sdp_mediadir_role_e role; |
| 856 | tinybool conn_info_present; |
| 857 | sdp_conn_t conn_info; |
| 858 | uint32_t src_port; |
| 859 | } sdp_comediadir_t; |
| 860 | |
| 861 | |
| 862 | |
| 863 | /* a=silenceSupp info */ |
| 864 | typedef struct sdp_silencesupp { |
| 865 | tinybool enabled; |
| 866 | tinybool timer_null; |
| 867 | uint16_t timer; |
| 868 | sdp_silencesupp_pref_e pref; |
| 869 | sdp_silencesupp_siduse_e siduse; |
| 870 | tinybool fxnslevel_null; |
| 871 | uint8_t fxnslevel; |
| 872 | } sdp_silencesupp_t; |
| 873 | |
| 874 | |
| 875 | /* |
| 876 | * a=mptime info */ |
| 877 | /* Note that an interval value of zero corresponds to |
| 878 | * the "-" syntax on the a= line. |
| 879 | */ |
| 880 | typedef struct sdp_mptime { |
| 881 | uint16_t num_intervals; |
| 882 | ushort intervals[SDP_MAX_PAYLOAD_TYPES30]; |
| 883 | } sdp_mptime_t; |
| 884 | |
| 885 | /* |
| 886 | * a=X-sidin:<val>, a=X-sidout:< val> and a=X-confid: <val> |
| 887 | * Stream Id,ConfID related attributes to be used for audio/video conferencing |
| 888 | * |
| 889 | */ |
| 890 | |
| 891 | typedef struct sdp_stream_data { |
| 892 | char x_sidin[SDP_MAX_STRING_LEN256+1]; |
| 893 | char x_sidout[SDP_MAX_STRING_LEN256+1]; |
| 894 | char x_confid[SDP_MAX_STRING_LEN256+1]; |
| 895 | sdp_group_attr_e group_attr; /* FID or LS */ |
| 896 | uint16_t num_group_id; |
| 897 | char * group_ids[SDP_MAX_MEDIA_STREAMS128]; |
| 898 | } sdp_stream_data_t; |
| 899 | |
| 900 | typedef struct sdp_msid_semantic { |
| 901 | char semantic[SDP_MAX_STRING_LEN256+1]; |
| 902 | char * msids[SDP_MAX_MEDIA_STREAMS128]; |
| 903 | } sdp_msid_semantic_t; |
| 904 | |
| 905 | /* |
| 906 | * a=source-filter:<filter-mode> <filter-spec> |
| 907 | * <filter-spec> = <nettype> <addrtype> <dest-addr> <src_addr><src_addr>... |
| 908 | * One or more source addresses to apply filter, for one or more connection |
| 909 | * address in unicast/multicast environments |
| 910 | */ |
| 911 | typedef struct sdp_source_filter { |
| 912 | sdp_src_filter_mode_e mode; |
| 913 | sdp_nettype_e nettype; |
| 914 | sdp_addrtype_e addrtype; |
| 915 | char dest_addr[SDP_MAX_STRING_LEN256+1]; |
| 916 | uint16_t num_src_addr; |
| 917 | char src_list[SDP_MAX_SRC_ADDR_LIST1+1][SDP_MAX_STRING_LEN256+1]; |
| 918 | } sdp_source_filter_t; |
| 919 | |
| 920 | /* |
| 921 | * a=rtcp-fb:<payload-type> <feedback-type> [<feedback-parameters>] |
| 922 | * Defines RTCP feedback parameters |
| 923 | */ |
| 924 | #define SDP_ALL_PAYLOADS0xFFFF 0xFFFF |
| 925 | typedef struct sdp_fmtp_fb { |
| 926 | uint16_t payload_num; /* can be SDP_ALL_PAYLOADS */ |
| 927 | sdp_rtcp_fb_type_e feedback_type; |
| 928 | union { |
| 929 | sdp_rtcp_fb_ack_type_e ack; |
| 930 | sdp_rtcp_fb_ccm_type_e ccm; |
| 931 | sdp_rtcp_fb_nack_type_e nack; |
| 932 | uint32_t trr_int; |
| 933 | } param; |
| 934 | char extra[SDP_MAX_STRING_LEN256 + 1]; /* Holds any trailing information that |
| 935 | cannot be represented by preceding |
| 936 | fields. */ |
| 937 | } sdp_fmtp_fb_t; |
| 938 | |
| 939 | typedef struct sdp_rtcp { |
| 940 | sdp_nettype_e nettype; |
| 941 | sdp_addrtype_e addrtype; |
| 942 | char addr[SDP_MAX_STRING_LEN256+1]; |
| 943 | uint16_t port; |
| 944 | } sdp_rtcp_t; |
| 945 | |
| 946 | /* |
| 947 | * b=<bw-modifier>:<val> |
| 948 | * |
| 949 | */ |
| 950 | typedef struct sdp_bw_data { |
| 951 | struct sdp_bw_data *next_p; |
| 952 | sdp_bw_modifier_e bw_modifier; |
| 953 | int bw_val; |
| 954 | } sdp_bw_data_t; |
| 955 | |
| 956 | /* |
| 957 | * This structure houses a linked list of sdp_bw_data_t instances. Each |
| 958 | * sdp_bw_data_t instance represents one b= line. |
| 959 | */ |
| 960 | typedef struct sdp_bw { |
| 961 | uint16_t bw_data_count; |
| 962 | sdp_bw_data_t *bw_data_list; |
| 963 | } sdp_bw_t; |
| 964 | |
| 965 | /* Media lines for AAL2 may have more than one transport type defined |
| 966 | * each with its own payload type list. These are referred to as |
| 967 | * profile types instead of transport types. This structure is used |
| 968 | * to handle these multiple profile types. Note: One additional profile |
| 969 | * field is needed because of the way parsing is done. This is not an |
| 970 | * error. */ |
| 971 | typedef struct sdp_media_profiles { |
| 972 | uint16_t num_profiles; |
| 973 | sdp_transport_e profile[SDP_MAX_PROFILES3+1]; |
| 974 | uint16_t num_payloads[SDP_MAX_PROFILES3]; |
| 975 | sdp_payload_ind_e payload_indicator[SDP_MAX_PROFILES3][SDP_MAX_PAYLOAD_TYPES30]; |
| 976 | uint16_t payload_type[SDP_MAX_PROFILES3][SDP_MAX_PAYLOAD_TYPES30]; |
| 977 | } sdp_media_profiles_t; |
| 978 | /* |
| 979 | * a=extmap:<value>["/"<direction>] <URI> <extensionattributes> |
| 980 | * |
| 981 | */ |
| 982 | typedef struct sdp_extmap { |
| 983 | uint16_t id; |
| 984 | sdp_direction_e media_direction; |
| 985 | tinybool media_direction_specified; |
| 986 | char uri[SDP_MAX_STRING_LEN256+1]; |
| 987 | char extension_attributes[SDP_MAX_STRING_LEN256+1]; |
| 988 | } sdp_extmap_t; |
| 989 | |
| 990 | typedef struct sdp_ssrc { |
| 991 | uint32_t ssrc; |
| 992 | char attribute[SDP_MAX_STRING_LEN256 + 1]; |
| 993 | } sdp_ssrc_t; |
| 994 | |
| 995 | typedef struct sdp_ssrc_group { |
| 996 | sdp_ssrc_group_attr_e semantic; |
| 997 | uint16_t num_ssrcs; |
| 998 | uint32_t ssrcs[SDP_MAX_SSRC_GROUP_SSRCS32]; |
| 999 | } sdp_ssrc_group_t; |
| 1000 | |
| 1001 | /* |
| 1002 | * sdp_srtp_crypto_context_t |
| 1003 | * This type is used to hold cryptographic context information. |
| 1004 | * |
| 1005 | */ |
| 1006 | typedef struct sdp_srtp_crypto_context_t_ { |
| 1007 | int32_t tag; |
| 1008 | unsigned long selection_flags; |
| 1009 | sdp_srtp_crypto_suite_t suite; |
| 1010 | unsigned char master_key[SDP_SRTP_MAX_KEY_SIZE_BYTES16]; |
| 1011 | unsigned char master_salt[SDP_SRTP_MAX_SALT_SIZE_BYTES14]; |
| 1012 | unsigned char master_key_size_bytes; |
| 1013 | unsigned char master_salt_size_bytes; |
| 1014 | unsigned long ssrc; /* not used */ |
| 1015 | unsigned long roc; /* not used */ |
| 1016 | unsigned long kdr; /* not used */ |
| 1017 | unsigned short seq; /* not used */ |
| 1018 | sdp_srtp_fec_order_t fec_order; /* not used */ |
| 1019 | unsigned char master_key_lifetime[SDP_SRTP_MAX_LIFETIME_BYTES16]; |
| 1020 | unsigned char mki[SDP_SRTP_MAX_MKI_SIZE_BYTES4]; |
| 1021 | uint16_t mki_size_bytes; |
| 1022 | char* session_parameters; |
| 1023 | } sdp_srtp_crypto_context_t; |
| 1024 | |
| 1025 | |
| 1026 | /* m= line info and associated attribute list */ |
| 1027 | /* Note: Most of the port parameter values are 16-bit values. We set |
| 1028 | * the type to int32_t so we can return either a 16-bit value or the |
| 1029 | * choose value. */ |
| 1030 | typedef struct sdp_mca { |
| 1031 | sdp_media_e media; |
| 1032 | sdp_conn_t conn; |
| 1033 | sdp_transport_e transport; |
| 1034 | sdp_port_format_e port_format; |
| 1035 | int32_t port; |
| 1036 | int32_t sctpport; |
| 1037 | sdp_sctp_media_fmt_type_e sctp_fmt; |
| 1038 | int32_t num_ports; |
| 1039 | int32_t vpi; |
| 1040 | uint32_t vci; /* VCI needs to be 32-bit */ |
| 1041 | int32_t vcci; |
| 1042 | int32_t cid; |
| 1043 | uint16_t num_payloads; |
| 1044 | sdp_payload_ind_e payload_indicator[SDP_MAX_PAYLOAD_TYPES30]; |
| 1045 | uint16_t payload_type[SDP_MAX_PAYLOAD_TYPES30]; |
| 1046 | sdp_media_profiles_t *media_profiles_p; |
| 1047 | tinybool sessinfo_found; |
| 1048 | sdp_encryptspec_t encrypt; |
| 1049 | sdp_bw_t bw; |
| 1050 | sdp_attr_e media_direction; /* Either INACTIVE, SENDONLY, |
| 1051 | RECVONLY, or SENDRECV */ |
| 1052 | uint32_t mid; |
| 1053 | uint32_t line_number; |
| 1054 | struct sdp_attr *media_attrs_p; |
| 1055 | struct sdp_mca *next_p; |
| 1056 | } sdp_mca_t; |
| 1057 | |
| 1058 | |
| 1059 | /* generic a= line info */ |
| 1060 | typedef struct sdp_attr { |
| 1061 | sdp_attr_e type; |
| 1062 | uint32_t line_number; |
| 1063 | union { |
| 1064 | tinybool boolean_val; |
| 1065 | uint32_t u32_val; |
| 1066 | char string_val[SDP_MAX_STRING_LEN256+1]; |
| 1067 | char *stringp; |
| 1068 | char ice_attr[SDP_MAX_STRING_LEN256+1]; |
| 1069 | sdp_fmtp_t fmtp; |
| 1070 | sdp_sctpmap_t sctpmap; |
| 1071 | sdp_msid_t msid; |
| 1072 | sdp_qos_t qos; |
| 1073 | sdp_curr_t curr; |
| 1074 | sdp_des_t des; |
| 1075 | sdp_conf_t conf; |
| 1076 | sdp_transport_map_t transport_map; /* A rtpmap or sprtmap */ |
| 1077 | sdp_subnet_t subnet; |
| 1078 | sdp_t38_ratemgmt_e t38ratemgmt; |
| 1079 | sdp_t38_udpec_e t38udpec; |
| 1080 | sdp_pccodec_t pccodec; |
| 1081 | sdp_silencesupp_t silencesupp; |
| 1082 | sdp_mca_t *cap_p; /* A X-CAP or CDSC attribute */ |
| 1083 | sdp_rtr_t rtr; |
| 1084 | sdp_comediadir_t comediadir; |
| 1085 | sdp_srtp_crypto_context_t srtp_context; |
| 1086 | sdp_mptime_t mptime; |
| 1087 | sdp_stream_data_t stream_data; |
| 1088 | sdp_msid_semantic_t msid_semantic; |
| 1089 | char unknown[SDP_MAX_STRING_LEN256+1]; |
| 1090 | sdp_source_filter_t source_filter; |
| 1091 | sdp_fmtp_fb_t rtcp_fb; |
| 1092 | sdp_rtcp_t rtcp; |
| 1093 | sdp_setup_type_e setup; |
| 1094 | sdp_connection_type_e connection; |
| 1095 | sdp_extmap_t extmap; |
| 1096 | sdp_ssrc_t ssrc; |
| 1097 | sdp_ssrc_group_t ssrc_group; |
| 1098 | } attr; |
| 1099 | struct sdp_attr *next_p; |
| 1100 | } sdp_attr_t; |
| 1101 | typedef struct sdp_srtp_crypto_suite_list_ { |
Excessive padding in 'struct sdp_srtp_crypto_suite_list_' (10 padding bytes, where 2 is optimal). Optimal fields order: crypto_suite_str, crypto_suite_val, key_size_bytes, salt_size_bytes, consider reordering the fields or adding explicit padding members | |
| 1102 | sdp_srtp_crypto_suite_t crypto_suite_val; |
| 1103 | char * crypto_suite_str; |
| 1104 | unsigned char key_size_bytes; |
| 1105 | unsigned char salt_size_bytes; |
| 1106 | } sdp_srtp_crypto_suite_list; |
| 1107 | |
| 1108 | typedef void (*sdp_parse_error_handler)(void *context, |
| 1109 | uint32_t line, |
| 1110 | const char *message); |
| 1111 | |
| 1112 | /* Application configuration options */ |
| 1113 | typedef struct sdp_conf_options { |
| 1114 | tinybool debug_flag[SDP_MAX_DEBUG_TYPES]; |
| 1115 | tinybool version_reqd; |
| 1116 | tinybool owner_reqd; |
| 1117 | tinybool session_name_reqd; |
| 1118 | tinybool timespec_reqd; |
| 1119 | tinybool media_supported[SDP_MAX_MEDIA_TYPES]; |
| 1120 | tinybool nettype_supported[SDP_MAX_NETWORK_TYPES]; |
| 1121 | tinybool addrtype_supported[SDP_MAX_ADDR_TYPES]; |
| 1122 | tinybool transport_supported[SDP_MAX_TRANSPORT_TYPES]; |
| 1123 | tinybool allow_choose[SDP_MAX_CHOOSE_PARAMS]; |
| 1124 | /* Statistics counts */ |
| 1125 | uint32_t num_builds; |
| 1126 | uint32_t num_parses; |
| 1127 | uint32_t num_not_sdp_desc; |
| 1128 | uint32_t num_invalid_token_order; |
| 1129 | uint32_t num_invalid_param; |
| 1130 | uint32_t num_no_resource; |
| 1131 | struct sdp_conf_options *next_p; |
| 1132 | sdp_parse_error_handler error_handler; |
| 1133 | void *error_handler_context; |
| 1134 | } sdp_conf_options_t; |
| 1135 | |
| 1136 | |
| 1137 | /* Session level SDP info with pointers to media line info. */ |
| 1138 | /* Elements here that can only be one of are included directly. Elements */ |
| 1139 | /* that can be more than one are pointers. */ |
| 1140 | typedef struct { |
| 1141 | sdp_conf_options_t *conf_p; |
| 1142 | tinybool debug_flag[SDP_MAX_DEBUG_TYPES]; |
| 1143 | char debug_str[SDP_MAX_STRING_LEN256+1]; |
| 1144 | uint32_t debug_id; |
| 1145 | int32_t version; /* version is really a uint16_t */ |
| 1146 | char owner_name[SDP_MAX_STRING_LEN256+1]; |
| 1147 | char owner_sessid[SDP_MAX_STRING_LEN256+1]; |
| 1148 | char owner_version[SDP_MAX_STRING_LEN256+1]; |
| 1149 | sdp_nettype_e owner_network_type; |
| 1150 | sdp_addrtype_e owner_addr_type; |
| 1151 | char owner_addr[SDP_MAX_STRING_LEN256+1]; |
| 1152 | char sessname[SDP_MAX_STRING_LEN256+1]; |
| 1153 | tinybool sessinfo_found; |
| 1154 | tinybool uri_found; |
| 1155 | sdp_conn_t default_conn; |
| 1156 | sdp_timespec_t *timespec_p; |
| 1157 | sdp_encryptspec_t encrypt; |
| 1158 | sdp_bw_t bw; |
| 1159 | sdp_attr_t *sess_attrs_p; |
| 1160 | |
| 1161 | /* Info to help with building capability attributes. */ |
| 1162 | uint16_t cur_cap_num; |
| 1163 | sdp_mca_t *cur_cap_p; |
| 1164 | /* Info to help parsing X-cpar attrs. */ |
| 1165 | uint16_t cap_valid; |
| 1166 | uint16_t last_cap_inst; |
| 1167 | /* Info to help building X-cpar/cpar attrs. */ |
| 1168 | sdp_attr_e last_cap_type; |
| 1169 | |
| 1170 | /* Facilitates reporting line number for SDP errors */ |
| 1171 | uint32_t parse_line; |
| 1172 | |
| 1173 | /* MCA - Media, connection, and attributes */ |
| 1174 | sdp_mca_t *mca_p; |
| 1175 | ushort mca_count; |
| 1176 | } sdp_t; |
| 1177 | |
| 1178 | |
| 1179 | /* Token processing table. */ |
| 1180 | typedef struct { |
| 1181 | char *name; |
| 1182 | sdp_result_e (*parse_func)(sdp_t *sdp_p, uint16_t level, const char *ptr); |
| 1183 | sdp_result_e (*build_func)(sdp_t *sdp_p, uint16_t level, flex_string *fs); |
| 1184 | } sdp_tokenarray_t; |
| 1185 | |
| 1186 | /* Attribute processing table. */ |
| 1187 | typedef struct { |
| 1188 | char *name; |
| 1189 | uint16_t strlen; |
| 1190 | sdp_result_e (*parse_func)(sdp_t *sdp_p, sdp_attr_t *attr_p, |
| 1191 | const char *ptr); |
| 1192 | sdp_result_e (*build_func)(sdp_t *sdp_p, sdp_attr_t *attr_p, |
| 1193 | flex_string *fs); |
| 1194 | } sdp_attrarray_t; |
| 1195 | |
| 1196 | |
| 1197 | /* Prototypes */ |
| 1198 | |
| 1199 | /* sdp_config.c */ |
| 1200 | extern sdp_conf_options_t *sdp_init_config(void); |
| 1201 | extern void sdp_free_config(sdp_conf_options_t *config_p); |
| 1202 | extern void sdp_appl_debug(sdp_conf_options_t *config_p, sdp_debug_e debug_type, |
| 1203 | tinybool debug_flag); |
| 1204 | extern void sdp_require_version(sdp_conf_options_t *config_p, tinybool version_required); |
| 1205 | extern void sdp_require_owner(sdp_conf_options_t *config_p, tinybool owner_required); |
| 1206 | extern void sdp_require_session_name(sdp_conf_options_t *config_p, |
| 1207 | tinybool sess_name_required); |
| 1208 | extern void sdp_require_timespec(sdp_conf_options_t *config_p, tinybool timespec_required); |
| 1209 | extern void sdp_media_supported(sdp_conf_options_t *config_p, sdp_media_e media_type, |
| 1210 | tinybool media_supported); |
| 1211 | extern void sdp_nettype_supported(sdp_conf_options_t *config_p, sdp_nettype_e nettype, |
| 1212 | tinybool nettype_supported); |
| 1213 | extern void sdp_addrtype_supported(sdp_conf_options_t *config_p, sdp_addrtype_e addrtype, |
| 1214 | tinybool addrtype_supported); |
| 1215 | extern void sdp_transport_supported(sdp_conf_options_t *config_p, sdp_transport_e transport, |
| 1216 | tinybool transport_supported); |
| 1217 | extern void sdp_allow_choose(sdp_conf_options_t *config_p, sdp_choose_param_e param, |
| 1218 | tinybool choose_allowed); |
| 1219 | extern void sdp_config_set_error_handler(sdp_conf_options_t *config_p, |
| 1220 | sdp_parse_error_handler handler, |
| 1221 | void *context); |
| 1222 | |
| 1223 | /* sdp_main.c */ |
| 1224 | extern sdp_t *sdp_init_description(sdp_conf_options_t *config_p); |
| 1225 | extern void sdp_debug(sdp_t *sdp_ptr, sdp_debug_e debug_type, tinybool debug_flag); |
| 1226 | extern void sdp_set_string_debug(sdp_t *sdp_ptr, const char *debug_str); |
| 1227 | extern sdp_result_e sdp_parse(sdp_t *sdp_ptr, const char *buf, size_t len); |
| 1228 | extern sdp_result_e sdp_build(sdp_t *sdp_ptr, flex_string *fs); |
| 1229 | extern sdp_result_e sdp_free_description(sdp_t *sdp_ptr); |
| 1230 | extern void sdp_parse_error(sdp_t *sdp, const char *format, ...); |
| 1231 | |
| 1232 | extern const char *sdp_get_result_name(sdp_result_e rc); |
| 1233 | |
| 1234 | |
| 1235 | /* sdp_access.c */ |
| 1236 | extern tinybool sdp_version_valid(sdp_t *sdp_p); |
| 1237 | extern int32_t sdp_get_version(sdp_t *sdp_p); |
| 1238 | extern sdp_result_e sdp_set_version(sdp_t *sdp_p, int32_t version); |
| 1239 | |
| 1240 | extern tinybool sdp_owner_valid(sdp_t *sdp_p); |
| 1241 | extern const char *sdp_get_owner_username(sdp_t *sdp_p); |
| 1242 | extern const char *sdp_get_owner_sessionid(sdp_t *sdp_p); |
| 1243 | extern const char *sdp_get_owner_version(sdp_t *sdp_p); |
| 1244 | extern sdp_nettype_e sdp_get_owner_network_type(sdp_t *sdp_p); |
| 1245 | extern sdp_addrtype_e sdp_get_owner_address_type(sdp_t *sdp_p); |
| 1246 | extern const char *sdp_get_owner_address(sdp_t *sdp_p); |
| 1247 | extern sdp_result_e sdp_set_owner_username(sdp_t *sdp_p, const char *username); |
| 1248 | extern sdp_result_e sdp_set_owner_sessionid(sdp_t *sdp_p, const char *sessid); |
| 1249 | extern sdp_result_e sdp_set_owner_version(sdp_t *sdp_p, const char *version); |
| 1250 | extern sdp_result_e sdp_set_owner_network_type(sdp_t *sdp_p, |
| 1251 | sdp_nettype_e network_type); |
| 1252 | extern sdp_result_e sdp_set_owner_address_type(sdp_t *sdp_p, |
| 1253 | sdp_addrtype_e address_type); |
| 1254 | extern sdp_result_e sdp_set_owner_address(sdp_t *sdp_p, const char *address); |
| 1255 | |
| 1256 | extern tinybool sdp_session_name_valid(sdp_t *sdp_p); |
| 1257 | extern const char *sdp_get_session_name(sdp_t *sdp_p); |
| 1258 | extern sdp_result_e sdp_set_session_name(sdp_t *sdp_p, const char *sessname); |
| 1259 | |
| 1260 | extern tinybool sdp_timespec_valid(sdp_t *sdp_ptr); |
| 1261 | extern const char *sdp_get_time_start(sdp_t *sdp_ptr); |
| 1262 | extern const char *sdp_get_time_stop(sdp_t *sdp_ptr); |
| 1263 | sdp_result_e sdp_set_time_start(sdp_t *sdp_p, const char *start_time); |
| 1264 | sdp_result_e sdp_set_time_stop(sdp_t *sdp_p, const char *stop_time); |
| 1265 | |
| 1266 | extern tinybool sdp_encryption_valid(sdp_t *sdp_p, uint16_t level); |
| 1267 | extern sdp_encrypt_type_e sdp_get_encryption_method(sdp_t *sdp_p, uint16_t level); |
| 1268 | extern const char *sdp_get_encryption_key(sdp_t *sdp_p, uint16_t level); |
| 1269 | |
| 1270 | extern tinybool sdp_connection_valid(sdp_t *sdp_p, uint16_t level); |
| 1271 | extern tinybool sdp_bw_line_exists(sdp_t *sdp_p, uint16_t level, uint16_t inst_num); |
| 1272 | extern tinybool sdp_bandwidth_valid(sdp_t *sdp_p, uint16_t level, uint16_t inst_num); |
| 1273 | extern sdp_nettype_e sdp_get_conn_nettype(sdp_t *sdp_p, uint16_t level); |
| 1274 | extern sdp_addrtype_e sdp_get_conn_addrtype(sdp_t *sdp_p, uint16_t level); |
| 1275 | extern const char *sdp_get_conn_address(sdp_t *sdp_p, uint16_t level); |
| 1276 | |
| 1277 | extern tinybool sdp_is_mcast_addr (sdp_t *sdp_p, uint16_t level); |
| 1278 | extern int32_t sdp_get_mcast_ttl(sdp_t *sdp_p, uint16_t level); |
| 1279 | extern int32_t sdp_get_mcast_num_of_addresses(sdp_t *sdp_p, uint16_t level); |
| 1280 | |
| 1281 | extern sdp_result_e sdp_set_conn_nettype(sdp_t *sdp_p, uint16_t level, |
| 1282 | sdp_nettype_e nettype); |
| 1283 | extern sdp_result_e sdp_set_conn_addrtype(sdp_t *sdp_p, uint16_t level, |
| 1284 | sdp_addrtype_e addrtype); |
| 1285 | extern sdp_result_e sdp_set_conn_address(sdp_t *sdp_p, uint16_t level, |
| 1286 | const char *address); |
| 1287 | |
| 1288 | extern tinybool sdp_media_line_valid(sdp_t *sdp_p, uint16_t level); |
| 1289 | extern uint16_t sdp_get_num_media_lines(sdp_t *sdp_ptr); |
| 1290 | extern sdp_media_e sdp_get_media_type(sdp_t *sdp_p, uint16_t level); |
| 1291 | extern uint32_t sdp_get_media_line_number(sdp_t *sdp_p, uint16_t level); |
| 1292 | extern sdp_port_format_e sdp_get_media_port_format(sdp_t *sdp_p, uint16_t level); |
| 1293 | extern int32_t sdp_get_media_portnum(sdp_t *sdp_p, uint16_t level); |
| 1294 | extern int32_t sdp_get_media_portcount(sdp_t *sdp_p, uint16_t level); |
| 1295 | extern int32_t sdp_get_media_vpi(sdp_t *sdp_p, uint16_t level); |
| 1296 | extern uint32_t sdp_get_media_vci(sdp_t *sdp_p, uint16_t level); |
| 1297 | extern int32_t sdp_get_media_vcci(sdp_t *sdp_p, uint16_t level); |
| 1298 | extern int32_t sdp_get_media_cid(sdp_t *sdp_p, uint16_t level); |
| 1299 | extern sdp_transport_e sdp_get_media_transport(sdp_t *sdp_p, uint16_t level); |
| 1300 | extern uint16_t sdp_get_media_num_profiles(sdp_t *sdp_p, uint16_t level); |
| 1301 | extern sdp_transport_e sdp_get_media_profile(sdp_t *sdp_p, uint16_t level, |
| 1302 | uint16_t profile_num); |
| 1303 | extern uint16_t sdp_get_media_num_payload_types(sdp_t *sdp_p, uint16_t level); |
| 1304 | extern uint16_t sdp_get_media_profile_num_payload_types(sdp_t *sdp_p, uint16_t level, |
| 1305 | uint16_t profile_num); |
| 1306 | extern rtp_ptype sdp_get_known_payload_type(sdp_t *sdp_p, |
| 1307 | uint16_t level, |
| 1308 | uint16_t payload_type_raw); |
| 1309 | extern uint32_t sdp_get_media_payload_type(sdp_t *sdp_p, uint16_t level, |
| 1310 | uint16_t payload_num, sdp_payload_ind_e *indicator); |
| 1311 | extern uint32_t sdp_get_media_profile_payload_type(sdp_t *sdp_p, uint16_t level, |
| 1312 | uint16_t prof_num, uint16_t payload_num, sdp_payload_ind_e *indicator); |
| 1313 | extern sdp_result_e sdp_insert_media_line(sdp_t *sdp_p, uint16_t level); |
| 1314 | extern sdp_result_e sdp_set_media_type(sdp_t *sdp_p, uint16_t level, |
| 1315 | sdp_media_e media); |
| 1316 | extern sdp_result_e sdp_set_media_portnum(sdp_t *sdp_p, uint16_t level, |
| 1317 | int32_t portnum, int32_t sctpport); |
| 1318 | extern int32_t sdp_get_media_sctp_port(sdp_t *sdp_p, uint16_t level); |
| 1319 | extern sdp_sctp_media_fmt_type_e sdp_get_media_sctp_fmt(sdp_t *sdp_p, uint16_t level); |
| 1320 | extern sdp_result_e sdp_set_media_transport(sdp_t *sdp_p, uint16_t level, |
| 1321 | sdp_transport_e transport); |
| 1322 | extern sdp_result_e sdp_add_media_profile(sdp_t *sdp_p, uint16_t level, |
| 1323 | sdp_transport_e profile); |
| 1324 | extern sdp_result_e sdp_add_media_payload_type(sdp_t *sdp_p, uint16_t level, |
| 1325 | uint16_t payload_type, sdp_payload_ind_e indicator); |
| 1326 | extern sdp_result_e sdp_add_media_profile_payload_type(sdp_t *sdp_p, |
| 1327 | uint16_t level, uint16_t prof_num, uint16_t payload_type, |
| 1328 | sdp_payload_ind_e indicator); |
| 1329 | |
| 1330 | /* sdp_attr_access.c */ |
| 1331 | extern sdp_attr_t *sdp_find_attr (sdp_t *sdp_p, uint16_t level, uint8_t cap_num, |
| 1332 | sdp_attr_e attr_type, uint16_t inst_num); |
| 1333 | |
| 1334 | extern int sdp_find_fmtp_inst(sdp_t *sdp_ptr, uint16_t level, uint16_t payload_num); |
| 1335 | extern sdp_result_e sdp_add_new_attr(sdp_t *sdp_p, uint16_t level, uint8_t cap_num, |
| 1336 | sdp_attr_e attr_type, uint16_t *inst_num); |
| 1337 | extern sdp_result_e sdp_attr_num_instances(sdp_t *sdp_p, uint16_t level, |
| 1338 | uint8_t cap_num, sdp_attr_e attr_type, uint16_t *num_attr_inst); |
| 1339 | extern tinybool sdp_attr_valid(sdp_t *sdp_p, sdp_attr_e attr_type, |
| 1340 | uint16_t level, uint8_t cap_num, uint16_t inst_num); |
| 1341 | extern uint32_t sdp_attr_line_number(sdp_t *sdp_p, sdp_attr_e attr_type, |
| 1342 | uint16_t level, uint8_t cap_num, uint16_t inst_num); |
| 1343 | extern const char *sdp_attr_get_simple_string(sdp_t *sdp_p, |
| 1344 | sdp_attr_e attr_type, uint16_t level, uint8_t cap_num, uint16_t inst_num); |
| 1345 | extern const char *sdp_attr_get_long_string(sdp_t *sdp_p, |
| 1346 | sdp_attr_e attr_type, uint16_t level, uint8_t cap_num, uint16_t inst_num); |
| 1347 | extern uint32_t sdp_attr_get_simple_u32(sdp_t *sdp_p, sdp_attr_e attr_type, |
| 1348 | uint16_t level, uint8_t cap_num, uint16_t inst_num); |
| 1349 | extern tinybool sdp_attr_get_simple_boolean(sdp_t *sdp_p, |
| 1350 | sdp_attr_e attr_type, uint16_t level, uint8_t cap_num, uint16_t inst_num); |
| 1351 | extern tinybool sdp_attr_is_present (sdp_t *sdp_p, sdp_attr_e attr_type, |
| 1352 | uint16_t level, uint8_t cap_num); |
| 1353 | extern const char* sdp_attr_get_maxprate(sdp_t *sdp_p, uint16_t level, |
| 1354 | uint16_t inst_num); |
| 1355 | extern sdp_t38_ratemgmt_e sdp_attr_get_t38ratemgmt(sdp_t *sdp_p, uint16_t level, |
| 1356 | uint8_t cap_num, uint16_t inst_num); |
| 1357 | extern sdp_t38_udpec_e sdp_attr_get_t38udpec(sdp_t *sdp_p, uint16_t level, |
| 1358 | uint8_t cap_num, uint16_t inst_num); |
| 1359 | extern sdp_direction_e sdp_get_media_direction(sdp_t *sdp_p, uint16_t level, |
| 1360 | uint8_t cap_num); |
| 1361 | extern sdp_qos_strength_e sdp_attr_get_qos_strength(sdp_t *sdp_p, uint16_t level, |
| 1362 | uint8_t cap_num, sdp_attr_e qos_attr, uint16_t inst_num); |
| 1363 | extern sdp_qos_status_types_e sdp_attr_get_qos_status_type (sdp_t *sdp_p, uint16_t level, |
| 1364 | uint8_t cap_num, sdp_attr_e qos_attr, uint16_t inst_num); |
| 1365 | extern sdp_qos_dir_e sdp_attr_get_qos_direction(sdp_t *sdp_p, uint16_t level, |
| 1366 | uint8_t cap_num, sdp_attr_e qos_attr, uint16_t inst_num); |
| 1367 | extern tinybool sdp_attr_get_qos_confirm(sdp_t *sdp_p, uint16_t level, |
| 1368 | uint8_t cap_num, sdp_attr_e qos_attr, uint16_t inst_num); |
| 1369 | extern sdp_curr_type_e sdp_attr_get_curr_type (sdp_t *sdp_p, uint16_t level, |
| 1370 | uint8_t cap_num, sdp_attr_e qos_attr, uint16_t inst_num); |
| 1371 | extern sdp_des_type_e sdp_attr_get_des_type (sdp_t *sdp_p, uint16_t level, |
| 1372 | uint8_t cap_num, sdp_attr_e qos_attr, uint16_t inst_num); |
| 1373 | extern sdp_conf_type_e sdp_attr_get_conf_type (sdp_t *sdp_p, uint16_t level, |
| 1374 | uint8_t cap_num, sdp_attr_e qos_attr, uint16_t inst_num); |
| 1375 | extern sdp_nettype_e sdp_attr_get_subnet_nettype(sdp_t *sdp_p, uint16_t level, |
| 1376 | uint8_t cap_num, uint16_t inst_num); |
| 1377 | extern sdp_addrtype_e sdp_attr_get_subnet_addrtype(sdp_t *sdp_p, uint16_t level, |
| 1378 | uint8_t cap_num, uint16_t inst_num); |
| 1379 | extern const char *sdp_attr_get_subnet_addr(sdp_t *sdp_p, uint16_t level, |
| 1380 | uint8_t cap_num, uint16_t inst_num); |
| 1381 | extern int32_t sdp_attr_get_subnet_prefix(sdp_t *sdp_p, uint16_t level, |
| 1382 | uint8_t cap_num, uint16_t inst_num); |
| 1383 | extern rtp_ptype sdp_attr_get_rtpmap_known_codec(sdp_t *sdp_p, uint16_t level, |
| 1384 | uint8_t cap_num, uint16_t inst_num); |
| 1385 | extern tinybool sdp_attr_rtpmap_payload_valid(sdp_t *sdp_p, uint16_t level, |
| 1386 | uint8_t cap_num, uint16_t *inst_num, uint16_t payload_type); |
| 1387 | extern uint16_t sdp_attr_get_rtpmap_payload_type(sdp_t *sdp_p, uint16_t level, |
| 1388 | uint8_t cap_num, uint16_t inst_num); |
| 1389 | extern const char *sdp_attr_get_rtpmap_encname(sdp_t *sdp_p, uint16_t level, |
| 1390 | uint8_t cap_num, uint16_t inst_num); |
| 1391 | extern uint32_t sdp_attr_get_rtpmap_clockrate(sdp_t *sdp_p, uint16_t level, |
| 1392 | uint8_t cap_num, uint16_t inst_num); |
| 1393 | extern uint16_t sdp_attr_get_rtpmap_num_chan(sdp_t *sdp_p, uint16_t level, |
| 1394 | uint8_t cap_num, uint16_t inst_num); |
| 1395 | extern tinybool sdp_attr_sprtmap_payload_valid(sdp_t *sdp_p, uint16_t level, |
| 1396 | uint8_t cap_num, uint16_t *inst_num, uint16_t payload_type); |
| 1397 | extern uint16_t sdp_attr_get_sprtmap_payload_type(sdp_t *sdp_p, uint16_t level, |
| 1398 | uint8_t cap_num, uint16_t inst_num); |
| 1399 | extern const char *sdp_attr_get_sprtmap_encname(sdp_t *sdp_p, uint16_t level, |
| 1400 | uint8_t cap_num, uint16_t inst_num); |
| 1401 | extern uint32_t sdp_attr_get_sprtmap_clockrate(sdp_t *sdp_p, uint16_t level, |
| 1402 | uint8_t cap_num, uint16_t inst_num); |
| 1403 | extern uint16_t sdp_attr_get_sprtmap_num_chan(sdp_t *sdp_p, uint16_t level, |
| 1404 | uint8_t cap_num, uint16_t inst_num); |
| 1405 | extern tinybool sdp_attr_fmtp_payload_valid(sdp_t *sdp_p, uint16_t level, |
| 1406 | uint8_t cap_num, uint16_t *inst_num, uint16_t payload_type); |
| 1407 | extern uint16_t sdp_attr_get_fmtp_payload_type(sdp_t *sdp_p, uint16_t level, |
| 1408 | uint8_t cap_num, uint16_t inst_num); |
| 1409 | extern sdp_ne_res_e sdp_attr_fmtp_is_range_set(sdp_t *sdp_p, uint16_t level, |
| 1410 | uint8_t cap_num, uint16_t inst_num, uint8_t low_val, uint8_t high_val); |
| 1411 | extern tinybool sdp_attr_fmtp_valid(sdp_t *sdp_p, uint16_t level, uint8_t cap_num, |
| 1412 | uint16_t inst_num, uint16_t appl_maxval, uint32_t* evt_array); |
| 1413 | extern sdp_result_e sdp_attr_set_fmtp_payload_type(sdp_t *sdp_p, uint16_t level, |
| 1414 | uint8_t cap_num, uint16_t inst_num, |
| 1415 | uint16_t payload_num); |
| 1416 | extern sdp_result_e sdp_attr_get_fmtp_range(sdp_t *sdp_p, uint16_t level, |
| 1417 | uint8_t cap_num, uint16_t inst_num, uint32_t *bmap); |
| 1418 | extern sdp_result_e sdp_attr_clear_fmtp_range(sdp_t *sdp_p, uint16_t level, |
| 1419 | uint8_t cap_num, uint16_t inst_num, uint8_t low_val, uint8_t high_val); |
| 1420 | extern sdp_ne_res_e sdp_attr_compare_fmtp_ranges(sdp_t *src_sdp_ptr, |
| 1421 | sdp_t *dst_sdp_ptr, uint16_t src_level, uint16_t dst_level, |
| 1422 | uint8_t src_cap_num, uint8_t dst_cap_num, uint16_t src_inst_num, |
| 1423 | uint16_t dst_inst_num); |
| 1424 | extern sdp_result_e sdp_attr_copy_fmtp_ranges(sdp_t *src_sdp_ptr, |
| 1425 | sdp_t *dst_sdp_ptr, uint16_t src_level, uint16_t dst_level, |
| 1426 | uint8_t src_cap_num, uint8_t dst_cap_num, uint16_t src_inst_num, |
| 1427 | uint16_t dst_inst_num); |
| 1428 | extern uint32_t sdp_attr_get_fmtp_mode_for_payload_type (sdp_t *sdp_p, uint16_t level, |
| 1429 | uint8_t cap_num, uint32_t payload_type); |
| 1430 | |
| 1431 | extern sdp_result_e sdp_attr_set_fmtp_max_fs (sdp_t *sdp_p, |
| 1432 | uint16_t level, |
| 1433 | uint8_t cap_num, |
| 1434 | uint16_t inst_num, |
| 1435 | uint32_t max_fs); |
| 1436 | |
| 1437 | extern sdp_result_e sdp_attr_set_fmtp_max_fr (sdp_t *sdp_p, |
| 1438 | uint16_t level, |
| 1439 | uint8_t cap_num, |
| 1440 | uint16_t inst_num, |
| 1441 | uint32_t max_fr); |
| 1442 | |
| 1443 | /* get routines */ |
| 1444 | extern int32_t sdp_attr_get_fmtp_bitrate_type (sdp_t *sdp_p, uint16_t level, |
| 1445 | uint8_t cap_num, uint16_t inst_num); |
| 1446 | |
| 1447 | extern int32_t sdp_attr_get_fmtp_cif (sdp_t *sdp_p, uint16_t level, |
| 1448 | uint8_t cap_num, uint16_t inst_num); |
| 1449 | extern int32_t sdp_attr_get_fmtp_qcif (sdp_t *sdp_p, uint16_t level, |
| 1450 | uint8_t cap_num, uint16_t inst_num); |
| 1451 | extern int32_t sdp_attr_get_fmtp_sqcif (sdp_t *sdp_p, uint16_t level, |
| 1452 | uint8_t cap_num, uint16_t inst_num); |
| 1453 | extern int32_t sdp_attr_get_fmtp_cif4 (sdp_t *sdp_p, uint16_t level, |
| 1454 | uint8_t cap_num, uint16_t inst_num); |
| 1455 | extern int32_t sdp_attr_get_fmtp_cif16 (sdp_t *sdp_p, uint16_t level, |
| 1456 | uint8_t cap_num, uint16_t inst_num); |
| 1457 | extern int32_t sdp_attr_get_fmtp_maxbr (sdp_t *sdp_p, uint16_t level, |
| 1458 | uint8_t cap_num, uint16_t inst_num); |
| 1459 | extern sdp_result_e sdp_attr_get_fmtp_max_average_bitrate (sdp_t *sdp_p, uint16_t level, |
| 1460 | uint8_t cap_num, uint16_t inst_num, uint32_t* val); |
| 1461 | extern sdp_result_e sdp_attr_get_fmtp_usedtx (sdp_t *sdp_p, uint16_t level, |
| 1462 | uint8_t cap_num, uint16_t inst_num, tinybool* val); |
| 1463 | extern sdp_result_e sdp_attr_get_fmtp_stereo (sdp_t *sdp_p, uint16_t level, |
| 1464 | uint8_t cap_num, uint16_t inst_num, tinybool* val); |
| 1465 | extern sdp_result_e sdp_attr_get_fmtp_useinbandfec (sdp_t *sdp_p, uint16_t level, |
| 1466 | uint8_t cap_num, uint16_t inst_num, tinybool* val); |
| 1467 | extern char* sdp_attr_get_fmtp_maxcodedaudiobandwidth (sdp_t *sdp_p, uint16_t level, |
| 1468 | uint8_t cap_num, uint16_t inst_num); |
| 1469 | extern sdp_result_e sdp_attr_get_fmtp_cbr (sdp_t *sdp_p, uint16_t level, |
| 1470 | uint8_t cap_num, uint16_t inst_num, tinybool* val); |
| 1471 | extern int32_t sdp_attr_get_fmtp_custom_x (sdp_t *sdp_p, uint16_t level, |
| 1472 | uint8_t cap_num, uint16_t inst_num); |
| 1473 | extern int32_t sdp_attr_get_fmtp_custom_y (sdp_t *sdp_p, uint16_t level, |
| 1474 | uint8_t cap_num, uint16_t inst_num); |
| 1475 | extern int32_t sdp_attr_get_fmtp_custom_mpi (sdp_t *sdp_p, uint16_t level, |
| 1476 | uint8_t cap_num, uint16_t inst_num); |
| 1477 | extern int32_t sdp_attr_get_fmtp_par_width (sdp_t *sdp_p, uint16_t level, |
| 1478 | uint8_t cap_num, uint16_t inst_num); |
| 1479 | extern int32_t sdp_attr_get_fmtp_par_height (sdp_t *sdp_p, uint16_t level, |
| 1480 | uint8_t cap_num, uint16_t inst_num); |
| 1481 | extern int32_t sdp_attr_get_fmtp_bpp (sdp_t *sdp_p, uint16_t level, |
| 1482 | uint8_t cap_num, uint16_t inst_num); |
| 1483 | extern int32_t sdp_attr_get_fmtp_hrd (sdp_t *sdp_p, uint16_t level, |
| 1484 | uint8_t cap_num, uint16_t inst_num); |
| 1485 | extern int32_t sdp_attr_get_fmtp_profile (sdp_t *sdp_p, uint16_t level, |
| 1486 | uint8_t cap_num, uint16_t inst_num); |
| 1487 | extern int32_t sdp_attr_get_fmtp_level (sdp_t *sdp_p, uint16_t level, |
| 1488 | uint8_t cap_num, uint16_t inst_num); |
| 1489 | extern tinybool sdp_attr_get_fmtp_interlace (sdp_t *sdp_p, uint16_t level, |
| 1490 | uint8_t cap_num, uint16_t inst_num); |
| 1491 | extern tinybool sdp_attr_get_fmtp_annex_d (sdp_t *sdp_p, uint16_t level, |
| 1492 | uint8_t cap_num, uint16_t inst_num); |
| 1493 | extern tinybool sdp_attr_get_fmtp_annex_f (sdp_t *sdp_p, uint16_t level, |
| 1494 | uint8_t cap_num, uint16_t inst_num); |
| 1495 | extern tinybool sdp_attr_get_fmtp_annex_i (sdp_t *sdp_p, uint16_t level, |
| 1496 | uint8_t cap_num, uint16_t inst_num); |
| 1497 | extern tinybool sdp_attr_get_fmtp_annex_j (sdp_t *sdp_p, uint16_t level, |
| 1498 | uint8_t cap_num, uint16_t inst_num); |
| 1499 | extern tinybool sdp_attr_get_fmtp_annex_t (sdp_t *sdp_p, uint16_t level, |
| 1500 | uint8_t cap_num, uint16_t inst_num); |
| 1501 | extern int32_t sdp_attr_get_fmtp_annex_k_val (sdp_t *sdp_p, uint16_t level, |
| 1502 | uint8_t cap_num, uint16_t inst_num); |
| 1503 | extern int32_t sdp_attr_get_fmtp_annex_n_val (sdp_t *sdp_p, uint16_t level, |
| 1504 | uint8_t cap_num, uint16_t inst_num); |
| 1505 | |
| 1506 | extern int32_t sdp_attr_get_fmtp_annex_p_picture_resize (sdp_t *sdp_p, uint16_t level, |
| 1507 | uint8_t cap_num, uint16_t inst_num); |
| 1508 | extern int32_t sdp_attr_get_fmtp_annex_p_warp (sdp_t *sdp_p, uint16_t level, |
| 1509 | uint8_t cap_num, uint16_t inst_num); |
| 1510 | |
| 1511 | /* sctpmap params */ |
| 1512 | extern uint16_t sdp_attr_get_sctpmap_port(sdp_t *sdp_p, uint16_t level, |
| 1513 | uint8_t cap_num, uint16_t inst_num); |
| 1514 | extern sdp_result_e sdp_attr_get_sctpmap_protocol (sdp_t *sdp_p, uint16_t level, |
| 1515 | uint8_t cap_num, uint16_t inst_num, char* protocol); |
| 1516 | extern sdp_result_e sdp_attr_get_sctpmap_streams (sdp_t *sdp_p, uint16_t level, |
| 1517 | uint8_t cap_num, uint16_t inst_num, uint32_t* val); |
| 1518 | |
| 1519 | extern const char *sdp_attr_get_msid_identifier(sdp_t *sdp_p, uint16_t level, |
| 1520 | uint8_t cap_num, uint16_t inst_num); |
| 1521 | extern const char *sdp_attr_get_msid_appdata(sdp_t *sdp_p, uint16_t level, |
| 1522 | uint8_t cap_num, uint16_t inst_num); |
| 1523 | |
| 1524 | /* H.264 codec specific params */ |
| 1525 | |
| 1526 | extern const char *sdp_attr_get_fmtp_profile_id(sdp_t *sdp_p, uint16_t level, |
| 1527 | uint8_t cap_num, uint16_t inst_num); |
| 1528 | extern const char *sdp_attr_get_fmtp_param_sets(sdp_t *sdp_p, uint16_t level, |
| 1529 | uint8_t cap_num, uint16_t inst_num); |
| 1530 | extern sdp_result_e sdp_attr_get_fmtp_pack_mode (sdp_t *sdp_p, uint16_t level, |
| 1531 | uint8_t cap_num, uint16_t inst_num, uint16_t *val); |
| 1532 | |
| 1533 | extern sdp_result_e sdp_attr_get_fmtp_level_asymmetry_allowed (sdp_t *sdp_p, uint16_t level, |
| 1534 | uint8_t cap_num, uint16_t inst_num, uint16_t *val); |
| 1535 | |
| 1536 | extern sdp_result_e sdp_attr_get_fmtp_interleaving_depth (sdp_t *sdp_p, uint16_t level, |
| 1537 | uint8_t cap_num, uint16_t inst_num, |
| 1538 | uint16_t *val); |
| 1539 | extern sdp_result_e sdp_attr_get_fmtp_max_don_diff (sdp_t *sdp_p, uint16_t level, |
| 1540 | uint8_t cap_num, uint16_t inst_num, |
| 1541 | uint32_t *val); |
| 1542 | |
| 1543 | /* The following four H.264 parameters that require special handling as |
| 1544 | * the values range from 0 - 4294967295 |
| 1545 | */ |
| 1546 | extern sdp_result_e sdp_attr_get_fmtp_deint_buf_req (sdp_t *sdp_p, uint16_t level, |
| 1547 | uint8_t cap_num, uint16_t inst_num, |
| 1548 | uint32_t *val); |
| 1549 | extern sdp_result_e sdp_attr_get_fmtp_deint_buf_cap (sdp_t *sdp_p, uint16_t level, |
| 1550 | uint8_t cap_num, uint16_t inst_num, |
| 1551 | uint32_t *val); |
| 1552 | extern sdp_result_e sdp_attr_get_fmtp_init_buf_time (sdp_t *sdp_p, uint16_t level, |
| 1553 | uint8_t cap_num, uint16_t inst_num, |
| 1554 | uint32_t *val); |
| 1555 | extern sdp_result_e sdp_attr_get_fmtp_max_rcmd_nalu_size (sdp_t *sdp_p, |
| 1556 | uint16_t level, uint8_t cap_num, |
| 1557 | uint16_t inst_num, uint32_t *val); |
| 1558 | |
| 1559 | |
| 1560 | extern sdp_result_e sdp_attr_get_fmtp_max_mbps (sdp_t *sdp_p, uint16_t level, |
| 1561 | uint8_t cap_num, uint16_t inst_num, uint32_t *val); |
| 1562 | extern sdp_result_e sdp_attr_get_fmtp_max_fs (sdp_t *sdp_p, uint16_t level, |
| 1563 | uint8_t cap_num, uint16_t inst_num, uint32_t *val); |
| 1564 | extern sdp_result_e sdp_attr_get_fmtp_max_fr (sdp_t *sdp_p, uint16_t level, |
| 1565 | uint8_t cap_num, uint16_t inst_num, uint32_t *val); |
| 1566 | extern sdp_result_e sdp_attr_get_fmtp_max_cpb (sdp_t *sdp_p, uint16_t level, |
| 1567 | uint8_t cap_num, uint16_t inst_num, uint32_t *val); |
| 1568 | extern sdp_result_e sdp_attr_get_fmtp_max_dpb (sdp_t *sdp_p, uint16_t level, |
| 1569 | uint8_t cap_num, uint16_t inst_num, uint32_t *val); |
| 1570 | extern sdp_result_e sdp_attr_get_fmtp_max_br (sdp_t *sdp_p, uint16_t level, |
| 1571 | uint8_t cap_num, uint16_t inst_num, uint32_t *val); |
| 1572 | extern tinybool sdp_attr_fmtp_is_redundant_pic_cap (sdp_t *sdp_p, uint16_t level, |
| 1573 | uint8_t cap_num, |
| 1574 | uint16_t inst_num); |
| 1575 | extern tinybool sdp_attr_fmtp_is_parameter_add (sdp_t *sdp_p, uint16_t level, |
| 1576 | uint8_t cap_num, |
| 1577 | uint16_t inst_num); |
| 1578 | extern tinybool sdp_attr_fmtp_is_annexa_set (sdp_t *sdp_p, uint16_t level, |
| 1579 | uint8_t cap_num, |
| 1580 | uint16_t inst_num); |
| 1581 | |
| 1582 | extern tinybool sdp_attr_fmtp_is_annexb_set (sdp_t *sdp_p, uint16_t level, |
| 1583 | uint8_t cap_num, |
| 1584 | uint16_t inst_num); |
| 1585 | |
| 1586 | extern sdp_fmtp_format_type_e sdp_attr_fmtp_get_fmtp_format (sdp_t *sdp_p, uint16_t level, uint8_t cap_num, |
| 1587 | uint16_t inst_num); |
| 1588 | |
| 1589 | extern uint16_t sdp_attr_get_pccodec_num_payload_types(sdp_t *sdp_p, uint16_t level, |
| 1590 | uint8_t cap_num, uint16_t inst_num); |
| 1591 | extern uint16_t sdp_attr_get_pccodec_payload_type(sdp_t *sdp_p, uint16_t level, |
| 1592 | uint8_t cap_num, uint16_t inst_num, uint16_t payload_num); |
| 1593 | extern sdp_result_e sdp_attr_add_pccodec_payload_type(sdp_t *sdp_p, |
| 1594 | uint16_t level, uint8_t cap_num, |
| 1595 | uint16_t inst_num, uint16_t payload_type); |
| 1596 | extern uint16_t sdp_attr_get_xcap_first_cap_num(sdp_t *sdp_p, uint16_t level, |
| 1597 | uint16_t inst_num); |
| 1598 | extern sdp_media_e sdp_attr_get_xcap_media_type(sdp_t *sdp_p, uint16_t level, |
| 1599 | uint16_t inst_num); |
| 1600 | extern sdp_transport_e sdp_attr_get_xcap_transport_type(sdp_t *sdp_p, |
| 1601 | uint16_t level, uint16_t inst_num); |
| 1602 | extern uint16_t sdp_attr_get_xcap_num_payload_types(sdp_t *sdp_p, uint16_t level, |
| 1603 | uint16_t inst_num); |
| 1604 | extern uint16_t sdp_attr_get_xcap_payload_type(sdp_t *sdp_p, uint16_t level, |
| 1605 | uint16_t inst_num, uint16_t payload_num, |
| 1606 | sdp_payload_ind_e *indicator); |
| 1607 | extern sdp_result_e sdp_attr_add_xcap_payload_type(sdp_t *sdp_p, uint16_t level, |
| 1608 | uint16_t inst_num, uint16_t payload_type, |
| 1609 | sdp_payload_ind_e indicator); |
| 1610 | extern uint16_t sdp_attr_get_cdsc_first_cap_num(sdp_t *sdp_p, uint16_t level, |
| 1611 | uint16_t inst_num); |
| 1612 | extern sdp_media_e sdp_attr_get_cdsc_media_type(sdp_t *sdp_p, uint16_t level, |
| 1613 | uint16_t inst_num); |
| 1614 | extern sdp_transport_e sdp_attr_get_cdsc_transport_type(sdp_t *sdp_p, |
| 1615 | uint16_t level, uint16_t inst_num); |
| 1616 | extern uint16_t sdp_attr_get_cdsc_num_payload_types(sdp_t *sdp_p, uint16_t level, |
| 1617 | uint16_t inst_num); |
| 1618 | extern uint16_t sdp_attr_get_cdsc_payload_type(sdp_t *sdp_p, uint16_t level, |
| 1619 | uint16_t inst_num, uint16_t payload_num, |
| 1620 | sdp_payload_ind_e *indicator); |
| 1621 | extern sdp_result_e sdp_attr_add_cdsc_payload_type(sdp_t *sdp_p, uint16_t level, |
| 1622 | uint16_t inst_num, uint16_t payload_type, |
| 1623 | sdp_payload_ind_e indicator); |
| 1624 | extern tinybool sdp_media_dynamic_payload_valid (sdp_t *sdp_p, uint16_t payload_type, |
| 1625 | uint16_t m_line); |
| 1626 | |
| 1627 | extern tinybool sdp_attr_get_rtr_confirm (sdp_t *, uint16_t, uint8_t, uint16_t); |
| 1628 | |
| 1629 | extern tinybool sdp_attr_get_silencesupp_enabled(sdp_t *sdp_p, uint16_t level, |
| 1630 | uint8_t cap_num, uint16_t inst_num); |
| 1631 | extern uint16_t sdp_attr_get_silencesupp_timer(sdp_t *sdp_p, uint16_t level, |
| 1632 | uint8_t cap_num, uint16_t inst_num, |
| 1633 | tinybool *null_ind); |
| 1634 | extern sdp_silencesupp_pref_e sdp_attr_get_silencesupp_pref(sdp_t *sdp_p, |
| 1635 | uint16_t level, |
| 1636 | uint8_t cap_num, |
| 1637 | uint16_t inst_num); |
| 1638 | extern sdp_silencesupp_siduse_e sdp_attr_get_silencesupp_siduse(sdp_t *sdp_p, |
| 1639 | uint16_t level, |
| 1640 | uint8_t cap_num, |
| 1641 | uint16_t inst_num); |
| 1642 | extern uint8_t sdp_attr_get_silencesupp_fxnslevel(sdp_t *sdp_p, uint16_t level, |
| 1643 | uint8_t cap_num, uint16_t inst_num, |
| 1644 | tinybool *null_ind); |
| 1645 | extern sdp_mediadir_role_e sdp_attr_get_comediadir_role(sdp_t *sdp_p, |
| 1646 | uint16_t level, uint8_t cap_num, |
| 1647 | uint16_t inst_num); |
| 1648 | |
| 1649 | extern uint16_t sdp_attr_get_mptime_num_intervals( |
| 1650 | sdp_t *sdp_p, uint16_t level, uint8_t cap_num, uint16_t inst_num); |
| 1651 | extern uint16_t sdp_attr_get_mptime_interval( |
| 1652 | sdp_t *sdp_p, uint16_t level, uint8_t cap_num, uint16_t inst_num, uint16_t interval_num); |
| 1653 | extern sdp_result_e sdp_attr_add_mptime_interval( |
| 1654 | sdp_t *sdp_p, uint16_t level, uint8_t cap_num, uint16_t inst_num, uint16_t interval); |
| 1655 | |
| 1656 | |
| 1657 | extern sdp_result_e sdp_copy_all_bw_lines(sdp_t *src_sdp_ptr, sdp_t *dst_sdp_ptr, |
| 1658 | uint16_t src_level, uint16_t dst_level); |
| 1659 | extern sdp_bw_modifier_e sdp_get_bw_modifier(sdp_t *sdp_p, uint16_t level, |
| 1660 | uint16_t inst_num); |
| 1661 | extern const char *sdp_get_bw_modifier_name(sdp_bw_modifier_e bw_modifier); |
| 1662 | extern int32_t sdp_get_bw_value(sdp_t *sdp_p, uint16_t level, uint16_t inst_num); |
| 1663 | extern int32_t sdp_get_num_bw_lines (sdp_t *sdp_p, uint16_t level); |
| 1664 | |
| 1665 | extern sdp_result_e sdp_add_new_bw_line(sdp_t *sdp_p, uint16_t level, |
| 1666 | sdp_bw_modifier_e bw_modifier, uint16_t *inst_num); |
| 1667 | |
| 1668 | extern sdp_group_attr_e sdp_get_group_attr(sdp_t *sdp_p, uint16_t level, |
| 1669 | uint8_t cap_num, uint16_t inst_num); |
| 1670 | |
| 1671 | extern const char* sdp_attr_get_x_sidout (sdp_t *sdp_p, uint16_t level, |
| 1672 | uint8_t cap_num, uint16_t inst_num); |
| 1673 | |
| 1674 | |
| 1675 | extern const char* sdp_attr_get_x_sidin (sdp_t *sdp_p, uint16_t level, |
| 1676 | uint8_t cap_num, uint16_t inst_num); |
| 1677 | |
| 1678 | extern const char* sdp_attr_get_x_confid (sdp_t *sdp_p, uint16_t level, |
| 1679 | uint8_t cap_num, uint16_t inst_num); |
| 1680 | |
| 1681 | extern uint16_t sdp_get_group_num_id(sdp_t *sdp_p, uint16_t level, |
| 1682 | uint8_t cap_num, uint16_t inst_num); |
| 1683 | |
| 1684 | extern const char* sdp_get_group_id(sdp_t *sdp_p, uint16_t level, |
| 1685 | uint8_t cap_num, uint16_t inst_num, uint16_t id_num); |
| 1686 | |
| 1687 | extern int32_t sdp_get_mid_value(sdp_t *sdp_p, uint16_t level); |
| 1688 | extern sdp_result_e sdp_include_new_filter_src_addr(sdp_t *sdp_p, uint16_t level, |
| 1689 | uint8_t cap_num, uint16_t inst_num, |
| 1690 | const char *src_addr); |
| 1691 | extern sdp_src_filter_mode_e sdp_get_source_filter_mode(sdp_t *sdp_p, |
| 1692 | uint16_t level, uint8_t cap_num, |
| 1693 | uint16_t inst_num); |
| 1694 | extern sdp_result_e sdp_get_filter_destination_attributes(sdp_t *sdp_p, |
| 1695 | uint16_t level, uint8_t cap_num, |
| 1696 | uint16_t inst_num, |
| 1697 | sdp_nettype_e *nettype, |
| 1698 | sdp_addrtype_e *addrtype, |
| 1699 | char *dest_addr); |
| 1700 | extern int32_t sdp_get_filter_source_address_count(sdp_t *sdp_p, uint16_t level, |
| 1701 | uint8_t cap_num, uint16_t inst_num); |
| 1702 | extern sdp_result_e sdp_get_filter_source_address (sdp_t *sdp_p, uint16_t level, |
| 1703 | uint8_t cap_num, uint16_t inst_num, |
| 1704 | uint16_t src_addr_id, |
| 1705 | char *src_addr); |
| 1706 | |
| 1707 | extern sdp_rtcp_unicast_mode_e sdp_get_rtcp_unicast_mode(sdp_t *sdp_p, |
| 1708 | uint16_t level, uint8_t cap_num, |
| 1709 | uint16_t inst_num); |
| 1710 | |
| 1711 | void sdp_crypto_debug(char *buffer, ulong length_bytes); |
| 1712 | char * sdp_debug_msg_filter(char *buffer, ulong length_bytes); |
| 1713 | |
| 1714 | extern int32_t |
| 1715 | sdp_attr_get_sdescriptions_tag(sdp_t *sdp_p, |
| 1716 | uint16_t level, |
| 1717 | uint8_t cap_num, |
| 1718 | uint16_t inst_num); |
| 1719 | |
| 1720 | extern sdp_srtp_crypto_suite_t |
| 1721 | sdp_attr_get_sdescriptions_crypto_suite(sdp_t *sdp_p, |
| 1722 | uint16_t level, |
| 1723 | uint8_t cap_num, |
| 1724 | uint16_t inst_num); |
| 1725 | |
| 1726 | extern const char* |
| 1727 | sdp_attr_get_sdescriptions_key(sdp_t *sdp_p, |
| 1728 | uint16_t level, |
| 1729 | uint8_t cap_num, |
| 1730 | uint16_t inst_num); |
| 1731 | |
| 1732 | extern const char* |
| 1733 | sdp_attr_get_sdescriptions_salt(sdp_t *sdp_p, |
| 1734 | uint16_t level, |
| 1735 | uint8_t cap_num, |
| 1736 | uint16_t inst_num); |
| 1737 | |
| 1738 | extern const char* |
| 1739 | sdp_attr_get_sdescriptions_lifetime(sdp_t *sdp_p, |
| 1740 | uint16_t level, |
| 1741 | uint8_t cap_num, |
| 1742 | uint16_t inst_num); |
| 1743 | |
| 1744 | extern sdp_result_e |
| 1745 | sdp_attr_get_sdescriptions_mki(sdp_t *sdp_p, |
| 1746 | uint16_t level, |
| 1747 | uint8_t cap_num, |
| 1748 | uint16_t inst_num, |
| 1749 | const char **mki_value, |
| 1750 | uint16_t *mki_length); |
| 1751 | |
| 1752 | extern const char* |
| 1753 | sdp_attr_get_sdescriptions_session_params(sdp_t *sdp_p, |
| 1754 | uint16_t level, |
| 1755 | uint8_t cap_num, |
| 1756 | uint16_t inst_num); |
| 1757 | |
| 1758 | extern unsigned char |
| 1759 | sdp_attr_get_sdescriptions_key_size(sdp_t *sdp_p, |
| 1760 | uint16_t level, |
| 1761 | uint8_t cap_num, |
| 1762 | uint16_t inst_num); |
| 1763 | |
| 1764 | extern unsigned char |
| 1765 | sdp_attr_get_sdescriptions_salt_size(sdp_t *sdp_p, |
| 1766 | uint16_t level, |
| 1767 | uint8_t cap_num, |
| 1768 | uint16_t inst_num); |
| 1769 | |
| 1770 | extern unsigned long |
| 1771 | sdp_attr_get_srtp_crypto_selection_flags(sdp_t *sdp_p, |
| 1772 | uint16_t level, |
| 1773 | uint8_t cap_num, |
| 1774 | uint16_t inst_num); |
| 1775 | |
| 1776 | sdp_result_e |
| 1777 | sdp_attr_get_ice_attribute (sdp_t *sdp_p, uint16_t level, |
| 1778 | uint8_t cap_num, sdp_attr_e sdp_attr, uint16_t inst_num, |
| 1779 | char **out); |
| 1780 | |
| 1781 | sdp_result_e |
| 1782 | sdp_attr_get_rtcp_mux_attribute (sdp_t *sdp_p, uint16_t level, |
| 1783 | uint8_t cap_num, sdp_attr_e sdp_attr, uint16_t inst_num, |
| 1784 | tinybool *rtcp_mux); |
| 1785 | |
| 1786 | sdp_result_e |
| 1787 | sdp_attr_get_setup_attribute (sdp_t *sdp_p, uint16_t level, |
| 1788 | uint8_t cap_num, uint16_t inst_num, sdp_setup_type_e *setup_type); |
| 1789 | |
| 1790 | sdp_result_e |
| 1791 | sdp_attr_get_connection_attribute (sdp_t *sdp_p, uint16_t level, |
| 1792 | uint8_t cap_num, uint16_t inst_num, sdp_connection_type_e *connection_type); |
| 1793 | |
| 1794 | sdp_result_e |
| 1795 | sdp_attr_get_dtls_fingerprint_attribute (sdp_t *sdp_p, uint16_t level, |
| 1796 | uint8_t cap_num, sdp_attr_e sdp_attr, uint16_t inst_num, |
| 1797 | char **out); |
| 1798 | |
| 1799 | sdp_rtcp_fb_ack_type_e |
| 1800 | sdp_attr_get_rtcp_fb_ack(sdp_t *sdp_p, uint16_t level, uint16_t payload_type, uint16_t inst); |
| 1801 | |
| 1802 | sdp_rtcp_fb_nack_type_e |
| 1803 | sdp_attr_get_rtcp_fb_nack(sdp_t *sdp_p, uint16_t level, uint16_t payload_type, uint16_t inst); |
| 1804 | |
| 1805 | uint32_t |
| 1806 | sdp_attr_get_rtcp_fb_trr_int(sdp_t *sdp_p, uint16_t level, uint16_t payload_type, |
| 1807 | uint16_t inst); |
| 1808 | |
| 1809 | tinybool |
| 1810 | sdp_attr_get_rtcp_fb_remb_enabled(sdp_t *sdp_p, uint16_t level, |
| 1811 | uint16_t payload_type); |
| 1812 | |
| 1813 | tinybool |
| 1814 | sdp_attr_get_rtcp_fb_transport_cc_enabled(sdp_t *sdp_p, uint16_t level, |
| 1815 | uint16_t payload_type); |
| 1816 | |
| 1817 | sdp_rtcp_fb_ccm_type_e |
| 1818 | sdp_attr_get_rtcp_fb_ccm(sdp_t *sdp_p, uint16_t level, uint16_t payload_type, uint16_t inst); |
| 1819 | |
| 1820 | sdp_result_e |
| 1821 | sdp_attr_set_rtcp_fb_ack(sdp_t *sdp_p, uint16_t level, uint16_t payload_type, uint16_t inst, |
| 1822 | sdp_rtcp_fb_ack_type_e type); |
| 1823 | |
| 1824 | sdp_result_e |
| 1825 | sdp_attr_set_rtcp_fb_nack(sdp_t *sdp_p, uint16_t level, uint16_t payload_type, uint16_t inst, |
| 1826 | sdp_rtcp_fb_nack_type_e); |
| 1827 | |
| 1828 | sdp_result_e |
| 1829 | sdp_attr_set_rtcp_fb_trr_int(sdp_t *sdp_p, uint16_t level, uint16_t payload_type, |
| 1830 | uint16_t inst, uint32_t interval); |
| 1831 | |
| 1832 | sdp_result_e |
| 1833 | sdp_attr_set_rtcp_fb_remb(sdp_t *sdp_p, uint16_t level, uint16_t payload_type, |
| 1834 | uint16_t inst); |
| 1835 | sdp_result_e |
| 1836 | sdp_attr_set_rtcp_fb_transport_cc(sdp_t *sdp_p, uint16_t level, uint16_t payload_type, |
| 1837 | uint16_t inst); |
| 1838 | |
| 1839 | sdp_result_e |
| 1840 | sdp_attr_set_rtcp_fb_ccm(sdp_t *sdp_p, uint16_t level, uint16_t payload_type, uint16_t inst, |
| 1841 | sdp_rtcp_fb_ccm_type_e); |
| 1842 | const char * |
| 1843 | sdp_attr_get_extmap_uri(sdp_t *sdp_p, uint16_t level, uint16_t inst); |
| 1844 | |
| 1845 | uint16_t |
| 1846 | sdp_attr_get_extmap_id(sdp_t *sdp_p, uint16_t level, uint16_t inst); |
| 1847 | |
| 1848 | sdp_result_e |
| 1849 | sdp_attr_set_extmap(sdp_t *sdp_p, uint16_t level, uint16_t id, const char* uri, uint16_t inst); |
| 1850 | |
| 1851 | #endif /* SDP_H_ */ |