mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 10:47:18 +00:00 
			
		
		
		
	Merge "res_agi: Allow configuration of audio format of EAGI pipe"
This commit is contained in:
		
							
								
								
									
										11
									
								
								CHANGES
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								CHANGES
									
									
									
									
									
								
							| @@ -17,6 +17,17 @@ app_queue | ||||
|  * PAUSEALL/UNPAUSEALL now sets the pause reason in the queue_log if it has | ||||
|    been defined. | ||||
|  | ||||
| ------------------------------------------------------------------------------ | ||||
| --- Functionality changes from Asterisk 14.5.0 to Asterisk 14.6.0 ------------ | ||||
| ------------------------------------------------------------------------------ | ||||
|  | ||||
| res_agi | ||||
| ------------------ | ||||
|  * The EAGI() application will now look for a dialplan variable named | ||||
|    EAGI_AUDIO_FORMAT and use that format with the 'enhanced' audio pipe that | ||||
|    EAGI provides. If not specified, it will continue to use the default signed | ||||
|    linear (slin). | ||||
|  | ||||
| ------------------------------------------------------------------------------ | ||||
| --- Functionality changes from Asterisk 14.4.0 to Asterisk 14.5.0 ------------ | ||||
| ------------------------------------------------------------------------------ | ||||
|   | ||||
| @@ -4575,15 +4575,30 @@ static int eagi_exec(struct ast_channel *chan, const char *data) | ||||
| { | ||||
| 	int res; | ||||
| 	struct ast_format *readformat; | ||||
| 	struct ast_format *requested_format = NULL; | ||||
| 	const char *requested_format_name; | ||||
|  | ||||
| 	if (ast_check_hangup(chan)) { | ||||
| 		ast_log(LOG_ERROR, "EAGI cannot be run on a dead/hungup channel, please use AGI.\n"); | ||||
| 		return 0; | ||||
| 	} | ||||
|  | ||||
| 	requested_format_name = pbx_builtin_getvar_helper(chan, "EAGI_AUDIO_FORMAT"); | ||||
| 	if (requested_format_name) { | ||||
| 		requested_format = ast_format_cache_get(requested_format_name); | ||||
| 		if (requested_format) { | ||||
| 			ast_verb(3, "<%s> Setting EAGI audio pipe format to %s\n", | ||||
| 					 ast_channel_name(chan), ast_format_get_name(requested_format)); | ||||
| 		} else { | ||||
| 			ast_log(LOG_ERROR, "Could not find requested format: %s\n", requested_format_name); | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	readformat = ao2_bump(ast_channel_readformat(chan)); | ||||
| 	if (ast_set_read_format(chan, ast_format_slin)) { | ||||
| 	if (ast_set_read_format(chan, requested_format ?: ast_format_slin)) { | ||||
| 		ast_log(LOG_WARNING, "Unable to set channel '%s' to linear mode\n", ast_channel_name(chan)); | ||||
| 		ao2_ref(readformat, -1); | ||||
| 		ao2_cleanup(requested_format); | ||||
| 		ao2_cleanup(readformat); | ||||
| 		return -1; | ||||
| 	} | ||||
| 	res = agi_exec_full(chan, data, 1, 0); | ||||
| @@ -4593,7 +4608,8 @@ static int eagi_exec(struct ast_channel *chan, const char *data) | ||||
| 				ast_format_get_name(readformat)); | ||||
| 		} | ||||
| 	} | ||||
| 	ao2_ref(readformat, -1); | ||||
| 	ao2_cleanup(requested_format); | ||||
| 	ao2_cleanup(readformat); | ||||
| 	return res; | ||||
| } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user