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 |  * PAUSEALL/UNPAUSEALL now sets the pause reason in the queue_log if it has | ||||||
|    been defined. |    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 ------------ | --- 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; | 	int res; | ||||||
| 	struct ast_format *readformat; | 	struct ast_format *readformat; | ||||||
|  | 	struct ast_format *requested_format = NULL; | ||||||
|  | 	const char *requested_format_name; | ||||||
|  |  | ||||||
| 	if (ast_check_hangup(chan)) { | 	if (ast_check_hangup(chan)) { | ||||||
| 		ast_log(LOG_ERROR, "EAGI cannot be run on a dead/hungup channel, please use AGI.\n"); | 		ast_log(LOG_ERROR, "EAGI cannot be run on a dead/hungup channel, please use AGI.\n"); | ||||||
| 		return 0; | 		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)); | 	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)); | 		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; | 		return -1; | ||||||
| 	} | 	} | ||||||
| 	res = agi_exec_full(chan, data, 1, 0); | 	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)); | 				ast_format_get_name(readformat)); | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	ao2_ref(readformat, -1); | 	ao2_cleanup(requested_format); | ||||||
|  | 	ao2_cleanup(readformat); | ||||||
| 	return res; | 	return res; | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user