mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 02:37:10 +00:00 
			
		
		
		
	Merge "res_agi: Allow configuration of audio format of EAGI pipe"
This commit is contained in:
		| @@ -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