Changeset 5222
Changed the boolean SDP entries for T.38 to comply withe the T.38 spec.
Committed by:
coppice
Date:
Nov 29 2008 * 05:26 (about 1 month ago)
Affected files:
callweaver/branches/rel/1.2/channels/chan_sip.c (unified diff)
| r5181 | r5222 | |
|---|---|---|
| 5095 | 5095 | break; |
| 5096 | 5096 | old = iterator; |
| 5097 | 5097 | |
| 5098 | if ((sscanf(a, "T38FaxMaxBuffer:%d", &x) == 1)) | |
| 5098 | if (sscanf(a, "T38FaxMaxBuffer:%d", &x) == 1) | |
| 5099 | 5099 | { |
| 5100 | 5100 | found = 1; |
| 5101 | 5101 | cw_log(LOG_DEBUG,"MaxBufferSize:%d\n",x); |
| 5102 | 5102 | } |
| 5103 | else if ((sscanf(a, "T38MaxBitRate:%d", &x) == 1)) | |
| 5103 | else if (sscanf(a, "T38MaxBitRate:%d", &x) == 1) | |
| 5104 | 5104 | { |
| 5105 | 5105 | found = 1; |
| 5106 | cw_log(LOG_DEBUG,"T38MaxBitRate: %d\n",x); | |
| 5106 | cw_log(LOG_DEBUG,"T38MaxBitRate: %d\n", x); | |
| 5107 | 5107 | switch (x) |
| 5108 | 5108 | { |
| 5109 | 5109 | case 33600: |
| --- | --- | |
| 5129 | 5129 | break; |
| 5130 | 5130 | } |
| 5131 | 5131 | } |
| 5132 | else if ((sscanf(a, "T38FaxVersion:%d", &x) == 1)) | |
| 5132 | else if (sscanf(a, "T38FaxVersion:%d", &x) == 1) | |
| 5133 | 5133 | { |
| 5134 | 5134 | found = 1; |
| 5135 | 5135 | cw_log(LOG_DEBUG,"FaxVersion: %d\n",x); |
| --- | --- | |
| 5138 | 5138 | else if (x == 1) |
| 5139 | 5139 | peert38capability |= T38FAX_VERSION_1; |
| 5140 | 5140 | } |
| 5141 | else if ((sscanf(a, "T38FaxMaxDatagram:%d", &x) == 1)) | |
| 5141 | else if (sscanf(a, "T38FaxMaxDatagram:%d", &x) == 1) | |
| 5142 | 5142 | { |
| 5143 | 5143 | found = 1; |
| 5144 | 5144 | cw_log(LOG_DEBUG,"FaxMaxDatagram: %d\n",x); |
| 5145 | 5145 | cw_udptl_set_far_max_datagram(p->udptl, x); |
| 5146 | 5146 | cw_udptl_set_local_max_datagram(p->udptl, x); |
| 5147 | 5147 | } |
| 5148 | else if ((sscanf(a, "T38FaxFillBitRemoval:%d", &x) == 1)) | |
| 5148 | else if ((sscanf(a, "T38FaxFillBitRemoval:%d", &x) == 1 && x == 1) | |
| 5149 | || | |
| 5150 | strcmp(a, "T38FaxFillBitRemoval") == 0) | |
| 5149 | 5151 | { |
| 5150 | 5152 | found = 1; |
| 5151 | 5153 | cw_log(LOG_DEBUG,"FillBitRemoval: %d\n",x); |
| 5152 | if (x == 1) | |
| 5153 | peert38capability |= T38FAX_FILL_BIT_REMOVAL; | |
| 5154 | peert38capability |= T38FAX_FILL_BIT_REMOVAL; | |
| 5154 | 5155 | } |
| 5155 | else if ((sscanf(a, "T38FaxTranscodingMMR:%d", &x) == 1)) | |
| 5156 | else if ((sscanf(a, "T38FaxTranscodingMMR:%d", &x) == 1 && x == 1) | |
| 5157 | || | |
| 5158 | strcmp(a, "T38FaxTranscodingMMR") == 0) | |
| 5156 | 5159 | { |
| 5157 | 5160 | found = 1; |
| 5158 | 5161 | cw_log(LOG_DEBUG,"Transcoding MMR: %d\n",x); |
| 5159 | if (x == 1) | |
| 5160 | peert38capability |= T38FAX_TRANSCODING_MMR; | |
| 5162 | peert38capability |= T38FAX_TRANSCODING_MMR; | |
| 5161 | 5163 | } |
| 5162 | else if ((sscanf(a, "T38FaxTranscodingJBIG:%d", &x) == 1)) | |
| 5164 | else if ((sscanf(a, "T38FaxTranscodingJBIG:%d", &x) == 1 && x == 1) | |
| 5165 | || | |
| 5166 | strcmp(a, "T38FaxTranscodingJBIG") == 0) | |
| 5163 | 5167 | { |
| 5164 | 5168 | found = 1; |
| 5165 | 5169 | cw_log(LOG_DEBUG,"Transcoding JBIG: %d\n",x); |
| 5166 | if (x == 1) | |
| 5167 | peert38capability |= T38FAX_TRANSCODING_JBIG; | |
| 5170 | peert38capability |= T38FAX_TRANSCODING_JBIG; | |
| 5168 | 5171 | } |
| 5169 | else if ((sscanf(a, "T38FaxRateManagement:%255s", s) == 1)) | |
| 5172 | else if (sscanf(a, "T38FaxRateManagement:%255s", s) == 1) | |
| 5170 | 5173 | { |
| 5171 | 5174 | found = 1; |
| 5172 | 5175 | cw_log(LOG_DEBUG,"RateMangement: %s\n", s); |
| --- | --- | |
| 5175 | 5178 | else if (!strcasecmp(s, "transferredTCF")) |
| 5176 | 5179 | peert38capability |= T38FAX_RATE_MANAGEMENT_TRANSFERED_TCF; |
| 5177 | 5180 | } |
| 5178 | else if ((sscanf(a, "T38FaxUdpEC:%255s", s) == 1)) | |
| 5181 | else if (sscanf(a, "T38FaxUdpEC:%255s", s) == 1) | |
| 5179 | 5182 | { |
| 5180 | 5183 | found = 1; |
| 5181 | 5184 | cw_log(LOG_DEBUG,"UDP EC: %s\n", s); |
| --- | --- | |
| 5194 | 5197 | ec_found = UDPTL_ERROR_CORRECTION_NONE; |
| 5195 | 5198 | } |
| 5196 | 5199 | } |
| 5197 | else if ((sscanf(a, "T38VendorInfo:%255s", s) == 1)) | |
| 5200 | else if (sscanf(a, "T38VendorInfo:%d %d %d", &x, &x, &x) == 3) | |
| 5198 | 5201 | { |
| 5199 | 5202 | found = 1; |
| 5200 | 5203 | } |
| --- | --- | |
| 6316 | 6319 | snprintf(a_modem, sizeof(a_modem), "a=T38MaxBitRate:%d",x); |
| 6317 | 6320 | add_line(resp, a_modem, SIP_DL_DONTCARE); |
| 6318 | 6321 | } |
| 6319 | snprintf(a_modem, sizeof(a_modem), "a=T38FaxFillBitRemoval:%d", (p->t38jointcapability & T38FAX_FILL_BIT_REMOVAL) ? 1 : 0); | |
| 6320 | add_line(resp, a_modem, SIP_DL_DONTCARE); | |
| 6321 | snprintf(a_modem, sizeof(a_modem), "a=T38FaxTranscodingMMR:%d", (p->t38jointcapability & T38FAX_TRANSCODING_MMR) ? 1 : 0); | |
| 6322 | add_line(resp, a_modem, SIP_DL_DONTCARE); | |
| 6323 | snprintf(a_modem, sizeof(a_modem), "a=T38FaxTranscodingJBIG:%d", (p->t38jointcapability & T38FAX_TRANSCODING_JBIG) ? 1 : 0); | |
| 6324 | add_line(resp, a_modem, SIP_DL_DONTCARE); | |
| 6322 | if (p->t38jointcapability & T38FAX_FILL_BIT_REMOVAL) | |
| 6323 | { | |
| 6324 | snprintf(a_modem, sizeof(a_modem), "a=T38FaxFillBitRemoval"); | |
| 6325 | add_line(resp, a_modem, SIP_DL_DONTCARE); | |
| 6326 | } | |
| 6327 | if (p->t38jointcapability & T38FAX_TRANSCODING_MMR) | |
| 6328 | { | |
| 6329 | snprintf(a_modem, sizeof(a_modem), "a=T38FaxTranscodingMMR"); | |
| 6330 | add_line(resp, a_modem, SIP_DL_DONTCARE); | |
| 6331 | } | |
| 6332 | if (p->t38jointcapability & T38FAX_TRANSCODING_JBIG) | |
| 6333 | { | |
| 6334 | snprintf(a_modem, sizeof(a_modem), "a=T38FaxTranscodingJBIG"); | |
| 6335 | add_line(resp, a_modem, SIP_DL_DONTCARE); | |
| 6336 | } | |
| 6325 | 6337 | snprintf(a_modem, sizeof(a_modem), "a=T38FaxRateManagement:%s", (p->t38jointcapability & T38FAX_RATE_MANAGEMENT_LOCAL_TCF) ? "localTCF" : "transferredTCF"); |
| 6326 | 6338 | add_line(resp, a_modem, SIP_DL_DONTCARE); |
| 6327 | 6339 | |
| --- | --- | |
| 6337 | 6349 | add_line(resp, a_modem, SIP_DL_DONTCARE); |
| 6338 | 6350 | } |
| 6339 | 6351 | #if 0 |
| 6340 | snprintf(a_modem, sizeof(a_modem), "a=T38VendorInfo:spandsp"); | |
| 6352 | snprintf(a_modem, sizeof(a_modem), "a=T38VendorInfo:0 0 0"); | |
| 6341 | 6353 | add_line(resp, a_modem, SIP_DL_DONTCARE); |
| 6342 | 6354 | #endif |
| 6343 | 6355 | /* Update lastrtprx when we send our SDP */ |
![Home changeset 5222 [home]](/images/logo.png?1180520111)
RSS Feeds