mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 02:37:10 +00:00 
			
		
		
		
	Merged revisions 330051 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/10 ................ r330051 | rmudgett | 2011-07-28 12:10:37 -0500 (Thu, 28 Jul 2011) | 29 lines Merged revisions 330050 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.8 ................ r330050 | rmudgett | 2011-07-28 12:04:24 -0500 (Thu, 28 Jul 2011) | 22 lines Merged revisions 330033 from https://origsvn.digium.com/svn/asterisk/be/branches/C.3-bier .......... r330033 | rmudgett | 2011-07-28 11:26:38 -0500 (Thu, 28 Jul 2011) | 15 lines Datacalls with B410P fail. Incoming and outgoing call legs of a data call are using different formats: a-law, u-law. When the call is bridged, the media stream is run through translation to convert the media formats. The translation is bad for data calls. * Make incoming call that does not explicitly specify u-law or a-law use the DAHDI channel's default law. The outgoing call always uses the default law from the DAHDI channel. (closes issue ABE-2800) Patches: jira_abe_2800_companding.patch (license #5621) patch uploaded by rmudgett .......... ................ ................ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@330052 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
		| @@ -5334,6 +5334,7 @@ static void *pri_dchannel(void *vpri) | ||||
| 	int res; | ||||
| 	int chanpos = 0; | ||||
| 	int x; | ||||
| 	int law; | ||||
| 	struct ast_channel *c; | ||||
| 	struct timeval tv, lowest, *next; | ||||
| 	int doidling=0; | ||||
| @@ -5962,7 +5963,20 @@ static void *pri_dchannel(void *vpri) | ||||
| 				/* Make sure extension exists (or in overlap dial mode, can exist) */ | ||||
| 				if (((pri->overlapdial & DAHDI_OVERLAPDIAL_INCOMING) && ast_canmatch_extension(NULL, pri->pvts[chanpos]->context, pri->pvts[chanpos]->exten, 1, pri->pvts[chanpos]->cid_num)) || | ||||
| 					ast_exists_extension(NULL, pri->pvts[chanpos]->context, pri->pvts[chanpos]->exten, 1, pri->pvts[chanpos]->cid_num)) { | ||||
| 					/* Setup law */ | ||||
| 					/* Select audio companding mode. */ | ||||
| 					switch (e->ring.layer1) { | ||||
| 					case PRI_LAYER_1_ALAW: | ||||
| 						law = SIG_PRI_ALAW; | ||||
| 						break; | ||||
| 					case PRI_LAYER_1_ULAW: | ||||
| 						law = SIG_PRI_ULAW; | ||||
| 						break; | ||||
| 					default: | ||||
| 						/* This is a data call to us. */ | ||||
| 						law = SIG_PRI_DEFLAW; | ||||
| 						break; | ||||
| 					} | ||||
|  | ||||
| 					if (e->ring.complete || !(pri->overlapdial & DAHDI_OVERLAPDIAL_INCOMING)) { | ||||
| 						/* Just announce proceeding */ | ||||
| 						pri->pvts[chanpos]->call_level = SIG_PRI_CALL_LEVEL_PROCEEDING; | ||||
| @@ -5988,10 +6002,8 @@ static void *pri_dchannel(void *vpri) | ||||
| 						sig_pri_unlock_private(pri->pvts[chanpos]); | ||||
| 						ast_mutex_unlock(&pri->lock); | ||||
| 						c = sig_pri_new_ast_channel(pri->pvts[chanpos], | ||||
| 							AST_STATE_RESERVED, | ||||
| 							(e->ring.layer1 == PRI_LAYER_1_ALAW) | ||||
| 								? SIG_PRI_ALAW : SIG_PRI_ULAW, | ||||
| 							e->ring.ctype, pri->pvts[chanpos]->exten, NULL); | ||||
| 							AST_STATE_RESERVED, law, e->ring.ctype, | ||||
| 							pri->pvts[chanpos]->exten, NULL); | ||||
| 						ast_mutex_lock(&pri->lock); | ||||
| 						sig_pri_lock_private(pri->pvts[chanpos]); | ||||
| 						if (c) { | ||||
| @@ -6107,9 +6119,7 @@ static void *pri_dchannel(void *vpri) | ||||
| 						sig_pri_unlock_private(pri->pvts[chanpos]); | ||||
| 						ast_mutex_unlock(&pri->lock); | ||||
| 						c = sig_pri_new_ast_channel(pri->pvts[chanpos], | ||||
| 							AST_STATE_RING, | ||||
| 							(e->ring.layer1 == PRI_LAYER_1_ALAW) | ||||
| 								? SIG_PRI_ALAW : SIG_PRI_ULAW, e->ring.ctype, | ||||
| 							AST_STATE_RING, law, e->ring.ctype, | ||||
| 							pri->pvts[chanpos]->exten, NULL); | ||||
| 						ast_mutex_lock(&pri->lock); | ||||
| 						sig_pri_lock_private(pri->pvts[chanpos]); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user