mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-05-31 10:46:27 +00:00
bump
This commit is contained in:
commit
8167bc7bc2
@ -3,10 +3,10 @@
|
|||||||
|
|
||||||
# Must change all of the below together
|
# Must change all of the below together
|
||||||
# For a release, set revision for that tagged release as well and uncomment
|
# For a release, set revision for that tagged release as well and uncomment
|
||||||
AC_INIT([freeswitch], [1.2.7], bugs@freeswitch.org)
|
AC_INIT([freeswitch], [1.2.8], bugs@freeswitch.org)
|
||||||
AC_SUBST(SWITCH_VERSION_MAJOR, [1])
|
AC_SUBST(SWITCH_VERSION_MAJOR, [1])
|
||||||
AC_SUBST(SWITCH_VERSION_MINOR, [2])
|
AC_SUBST(SWITCH_VERSION_MINOR, [2])
|
||||||
AC_SUBST(SWITCH_VERSION_MICRO, [7])
|
AC_SUBST(SWITCH_VERSION_MICRO, [8])
|
||||||
AC_SUBST(SWITCH_VERSION_REVISION, [])
|
AC_SUBST(SWITCH_VERSION_REVISION, [])
|
||||||
AC_SUBST(SWITCH_VERSION_REVISION_HUMAN, [])
|
AC_SUBST(SWITCH_VERSION_REVISION_HUMAN, [])
|
||||||
|
|
||||||
|
4
debian/README.source
vendored
4
debian/README.source
vendored
@ -77,7 +77,7 @@ To build for a stable branch, do this:
|
|||||||
Alternatively, you can build using our automated tools. To build the
|
Alternatively, you can build using our automated tools. To build the
|
||||||
source packages and all supported binary packages for sid, wheezy,
|
source packages and all supported binary packages for sid, wheezy,
|
||||||
squeeze on i386 and amd64, run the following as root from a clean
|
squeeze on i386 and amd64, run the following as root from a clean
|
||||||
Debian 'buildd' image:
|
Debian sid 'buildd' image:
|
||||||
|
|
||||||
aptitude update && aptitude upgrade
|
aptitude update && aptitude upgrade
|
||||||
aptitude install -y \
|
aptitude install -y \
|
||||||
@ -104,4 +104,4 @@ freeswitch-music-*:
|
|||||||
git clone https://github.com/traviscross/freeswitch-sounds.git
|
git clone https://github.com/traviscross/freeswitch-sounds.git
|
||||||
cd freeswitch-sounds && cat debian/README.source
|
cd freeswitch-sounds && cat debian/README.source
|
||||||
|
|
||||||
-- Travis Cross <tc@traviscross.com>, Mon, 11 Mar 2013 17:09:33 +0000
|
-- Travis Cross <tc@traviscross.com>, Fri, 29 Mar 2013 22:07:26 +0000
|
||||||
|
@ -201,8 +201,8 @@ SWITCH_DECLARE(switch_caller_profile_t *) switch_channel_get_caller_profile(swit
|
|||||||
\param channel channel to assign the profile to
|
\param channel channel to assign the profile to
|
||||||
\param caller_profile the profile to assign
|
\param caller_profile the profile to assign
|
||||||
*/
|
*/
|
||||||
SWITCH_DECLARE(void) _switch_channel_set_originator_caller_profile(switch_channel_t *channel, switch_caller_profile_t *caller_profile);
|
SWITCH_DECLARE(void) switch_channel_set_originator_caller_profile(switch_channel_t *channel, switch_caller_profile_t *caller_profile);
|
||||||
#define switch_channel_set_originator_caller_profile(_c, _cp) switch_log_printf(SWITCH_CHANNEL_CHANNEL_LOG(_c), SWITCH_LOG_CRIT, "%s SET ORIGINATOR\n", switch_channel_get_name(_c)); _switch_channel_set_originator_caller_profile(_c, _cp)
|
|
||||||
|
|
||||||
SWITCH_DECLARE(void) switch_channel_set_hunt_caller_profile(switch_channel_t *channel, switch_caller_profile_t *caller_profile);
|
SWITCH_DECLARE(void) switch_channel_set_hunt_caller_profile(switch_channel_t *channel, switch_caller_profile_t *caller_profile);
|
||||||
|
|
||||||
@ -218,8 +218,8 @@ SWITCH_DECLARE(switch_caller_profile_t *) switch_channel_get_originator_caller_p
|
|||||||
\param channel channel to assign the profile to
|
\param channel channel to assign the profile to
|
||||||
\param caller_profile the profile to assign
|
\param caller_profile the profile to assign
|
||||||
*/
|
*/
|
||||||
SWITCH_DECLARE(void) _switch_channel_set_originatee_caller_profile(switch_channel_t *channel, switch_caller_profile_t *caller_profile);
|
SWITCH_DECLARE(void) switch_channel_set_originatee_caller_profile(switch_channel_t *channel, switch_caller_profile_t *caller_profile);
|
||||||
#define switch_channel_set_originatee_caller_profile(_c, _cp) switch_log_printf(SWITCH_CHANNEL_CHANNEL_LOG(_c), SWITCH_LOG_CRIT, "%s SET ORIGINATEE\n", switch_channel_get_name(_c)); _switch_channel_set_originatee_caller_profile(_c, _cp)
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\brief Retrieve the given channel's originatee caller profile
|
\brief Retrieve the given channel's originatee caller profile
|
||||||
|
@ -172,7 +172,7 @@ static switch_xml_config_item_t instructions[] = {
|
|||||||
"EMERGENCY|ALERT|CRITICAL|ERROR|WARNING|NOTICE|INFO|DEBUG", "Logging level for UniMRCP"),
|
"EMERGENCY|ALERT|CRITICAL|ERROR|WARNING|NOTICE|INFO|DEBUG", "Logging level for UniMRCP"),
|
||||||
SWITCH_CONFIG_ITEM_STRING_STRDUP("enable-profile-events", CONFIG_REQUIRED, &globals.enable_profile_events_param, "false", "",
|
SWITCH_CONFIG_ITEM_STRING_STRDUP("enable-profile-events", CONFIG_REQUIRED, &globals.enable_profile_events_param, "false", "",
|
||||||
"Fire profile events (true|false)"),
|
"Fire profile events (true|false)"),
|
||||||
SWITCH_CONFIG_ITEM_STRING_STRDUP("request-timeout", CONFIG_REQUIRED, &globals.unimrcp_request_timeout, "10000", "",
|
SWITCH_CONFIG_ITEM_STRING_STRDUP("request-timeout", CONFIG_REQUIRED, &globals.unimrcp_request_timeout, "10000", "",
|
||||||
"Maximum time to wait for server response to a request"),
|
"Maximum time to wait for server response to a request"),
|
||||||
SWITCH_CONFIG_ITEM_END()
|
SWITCH_CONFIG_ITEM_END()
|
||||||
};
|
};
|
||||||
@ -273,7 +273,8 @@ static switch_status_t audio_queue_destroy(audio_queue_t *queue);
|
|||||||
* SPEECH_CHANNEL : speech functions common to recognizer and synthesizer
|
* SPEECH_CHANNEL : speech functions common to recognizer and synthesizer
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define SPEECH_CHANNEL_TIMEOUT_USEC (5 * 1000000)
|
#define SPEECH_CHANNEL_TIMEOUT_USEC (5000 * 1000)
|
||||||
|
#define AUDIO_TIMEOUT_USEC (SWITCH_MAX_INTERVAL * 1000)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Type of MRCP channel
|
* Type of MRCP channel
|
||||||
@ -725,11 +726,18 @@ static switch_status_t audio_queue_read(audio_queue_t *queue, void *data, switch
|
|||||||
#endif
|
#endif
|
||||||
switch_mutex_lock(queue->mutex);
|
switch_mutex_lock(queue->mutex);
|
||||||
|
|
||||||
|
/* allow the initial frame to buffer */
|
||||||
|
if (!queue->read_bytes && switch_buffer_inuse(queue->buffer) < requested) {
|
||||||
|
*data_len = 0;
|
||||||
|
status = SWITCH_STATUS_SUCCESS;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
/* wait for data, if allowed */
|
/* wait for data, if allowed */
|
||||||
if (block) {
|
if (block) {
|
||||||
while (switch_buffer_inuse(queue->buffer) < requested) {
|
while (switch_buffer_inuse(queue->buffer) < requested) {
|
||||||
queue->waiting = requested;
|
queue->waiting = requested;
|
||||||
if (switch_thread_cond_timedwait(queue->cond, queue->mutex, SPEECH_CHANNEL_TIMEOUT_USEC) == SWITCH_STATUS_TIMEOUT) {
|
if (switch_thread_cond_timedwait(queue->cond, queue->mutex, AUDIO_TIMEOUT_USEC) == SWITCH_STATUS_TIMEOUT) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -774,6 +782,9 @@ static switch_status_t audio_queue_clear(audio_queue_t *queue)
|
|||||||
switch_buffer_zero(queue->buffer);
|
switch_buffer_zero(queue->buffer);
|
||||||
switch_thread_cond_signal(queue->cond);
|
switch_thread_cond_signal(queue->cond);
|
||||||
switch_mutex_unlock(queue->mutex);
|
switch_mutex_unlock(queue->mutex);
|
||||||
|
queue->read_bytes = 0;
|
||||||
|
queue->write_bytes = 0;
|
||||||
|
queue->waiting = 0;
|
||||||
return SWITCH_STATUS_SUCCESS;
|
return SWITCH_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3222,7 +3233,7 @@ static switch_status_t recog_asr_feed(switch_asr_handle_t *ah, void *data, unsig
|
|||||||
* Process asr_feed_dtmf request from FreeSWITCH
|
* Process asr_feed_dtmf request from FreeSWITCH
|
||||||
*
|
*
|
||||||
* @param ah the FreeSWITCH speech recognition handle
|
* @param ah the FreeSWITCH speech recognition handle
|
||||||
* @return SWITCH_STATUS_SUCCESS if successful
|
* @return SWITCH_STATUS_SUCCESS if successful
|
||||||
*/
|
*/
|
||||||
static switch_status_t recog_asr_feed_dtmf(switch_asr_handle_t *ah, const switch_dtmf_t *dtmf, switch_asr_flag_t *flags)
|
static switch_status_t recog_asr_feed_dtmf(switch_asr_handle_t *ah, const switch_dtmf_t *dtmf, switch_asr_flag_t *flags)
|
||||||
{
|
{
|
||||||
@ -3507,9 +3518,9 @@ static apt_bool_t recog_stream_open(mpf_audio_stream_t *stream, mpf_codec_t *cod
|
|||||||
{
|
{
|
||||||
speech_channel_t *schannel = (speech_channel_t *) stream->obj;
|
speech_channel_t *schannel = (speech_channel_t *) stream->obj;
|
||||||
recognizer_data_t *r = (recognizer_data_t *) schannel->data;
|
recognizer_data_t *r = (recognizer_data_t *) schannel->data;
|
||||||
|
|
||||||
r->unimrcp_stream = stream;
|
r->unimrcp_stream = stream;
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3534,7 +3545,7 @@ static apt_bool_t recog_stream_read(mpf_audio_stream_t *stream, mpf_frame_t *fra
|
|||||||
frame->type |= MEDIA_FRAME_TYPE_AUDIO;
|
frame->type |= MEDIA_FRAME_TYPE_AUDIO;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch_mutex_lock(schannel->mutex);
|
switch_mutex_lock(schannel->mutex);
|
||||||
if (r->dtmf_generator_active) {
|
if (r->dtmf_generator_active) {
|
||||||
if (!mpf_dtmf_generator_put_frame(r->dtmf_generator, frame)) {
|
if (!mpf_dtmf_generator_put_frame(r->dtmf_generator, frame)) {
|
||||||
if (!mpf_dtmf_generator_sending(r->dtmf_generator))
|
if (!mpf_dtmf_generator_sending(r->dtmf_generator))
|
||||||
|
@ -833,13 +833,26 @@ void sofia_update_callee_id(switch_core_session_t *session, sofia_profile_t *pro
|
|||||||
switch_event_t *event;
|
switch_event_t *event;
|
||||||
const char *val;
|
const char *val;
|
||||||
int fs = 0, lazy = 0, att = 0;
|
int fs = 0, lazy = 0, att = 0;
|
||||||
|
const char *name_var = "callee_id_name";
|
||||||
|
const char *num_var = "callee_id_number";
|
||||||
|
const char *ename_var = "effective_callee_id_name";
|
||||||
|
const char *enum_var = "effective_callee_id_number";
|
||||||
|
|
||||||
if (switch_true(switch_channel_get_variable(channel, SWITCH_IGNORE_DISPLAY_UPDATES_VARIABLE))) {
|
if (switch_true(switch_channel_get_variable(channel, SWITCH_IGNORE_DISPLAY_UPDATES_VARIABLE))) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
number = (char *) switch_channel_get_variable(channel, "callee_id_number");
|
|
||||||
name = (char *) switch_channel_get_variable(channel, "callee_id_name");
|
if (switch_channel_direction(channel) == SWITCH_CALL_DIRECTION_INBOUND) {
|
||||||
|
name_var = "caller_id_name";
|
||||||
|
num_var = "caller_id_number";
|
||||||
|
ename_var = "effective_caller_id_name";
|
||||||
|
enum_var = "effective_caller_id_number";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
number = (char *) switch_channel_get_variable(channel, num_var);
|
||||||
|
name = (char *) switch_channel_get_variable(channel, name_var);
|
||||||
|
|
||||||
|
|
||||||
if (zstr(number) && sip->sip_to) {
|
if (zstr(number) && sip->sip_to) {
|
||||||
@ -886,18 +899,18 @@ void sofia_update_callee_id(switch_core_session_t *session, sofia_profile_t *pro
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (((tmp = switch_channel_get_variable(channel, "effective_callee_id_name")) ||
|
if (((tmp = switch_channel_get_variable(channel, ename_var)) ||
|
||||||
(tmp = switch_channel_get_variable(channel, "sip_callee_id_name"))) && !zstr(tmp)) {
|
(tmp = switch_channel_get_variable(channel, "sip_callee_id_name"))) && !zstr(tmp)) {
|
||||||
name = (char *) tmp;
|
name = (char *) tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (((tmp = switch_channel_get_variable(channel, "effective_callee_id_number")) ||
|
if (((tmp = switch_channel_get_variable(channel, enum_var)) ||
|
||||||
(tmp = switch_channel_get_variable(channel, "sip_callee_id_number"))) && !zstr(tmp)) {
|
(tmp = switch_channel_get_variable(channel, "sip_callee_id_number"))) && !zstr(tmp)) {
|
||||||
number = tmp;
|
number = tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (zstr(number)) {
|
if (zstr(number)) {
|
||||||
if ((tmp = switch_channel_get_variable(channel, "callee_id_number")) && !zstr(tmp)) {
|
if ((tmp = switch_channel_get_variable(channel, num_var)) && !zstr(tmp)) {
|
||||||
number = (char *) tmp;
|
number = (char *) tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -907,7 +920,7 @@ void sofia_update_callee_id(switch_core_session_t *session, sofia_profile_t *pro
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (zstr(name)) {
|
if (zstr(name)) {
|
||||||
if ((tmp = switch_channel_get_variable(channel, "callee_id_name")) && !zstr(tmp)) {
|
if ((tmp = switch_channel_get_variable(channel, name_var)) && !zstr(tmp)) {
|
||||||
name = (char *) tmp;
|
name = (char *) tmp;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -922,16 +935,30 @@ void sofia_update_callee_id(switch_core_session_t *session, sofia_profile_t *pro
|
|||||||
|
|
||||||
caller_profile = switch_channel_get_caller_profile(channel);
|
caller_profile = switch_channel_get_caller_profile(channel);
|
||||||
|
|
||||||
if (!strcmp(caller_profile->callee_id_name, name) && !strcmp(caller_profile->callee_id_number, number)) {
|
if (switch_channel_direction(channel) == SWITCH_CALL_DIRECTION_INBOUND) {
|
||||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "%s Same Callee ID \"%s\" <%s>\n", switch_channel_get_name(channel), name, number);
|
|
||||||
send = 0;
|
|
||||||
} else {
|
|
||||||
caller_profile->callee_id_name = switch_sanitize_number(switch_core_strdup(caller_profile->pool, name));
|
|
||||||
caller_profile->callee_id_number = switch_sanitize_number(switch_core_strdup(caller_profile->pool, number));
|
|
||||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "%s Update Callee ID to \"%s\" <%s>\n", switch_channel_get_name(channel), name, number);
|
|
||||||
|
|
||||||
if (lazy || (att && !switch_channel_get_partner_uuid(channel))) {
|
if (!strcmp(caller_profile->caller_id_name, name) && !strcmp(caller_profile->caller_id_number, number)) {
|
||||||
switch_channel_flip_cid(channel);
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "%s Same Caller ID \"%s\" <%s>\n", switch_channel_get_name(channel), name, number);
|
||||||
|
send = 0;
|
||||||
|
} else {
|
||||||
|
caller_profile->caller_id_name = switch_sanitize_number(switch_core_strdup(caller_profile->pool, name));
|
||||||
|
caller_profile->caller_id_number = switch_sanitize_number(switch_core_strdup(caller_profile->pool, number));
|
||||||
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "%s Update Caller ID to \"%s\" <%s>\n", switch_channel_get_name(channel), name, number);
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
if (!strcmp(caller_profile->callee_id_name, name) && !strcmp(caller_profile->callee_id_number, number)) {
|
||||||
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "%s Same Callee ID \"%s\" <%s>\n", switch_channel_get_name(channel), name, number);
|
||||||
|
send = 0;
|
||||||
|
} else {
|
||||||
|
caller_profile->callee_id_name = switch_sanitize_number(switch_core_strdup(caller_profile->pool, name));
|
||||||
|
caller_profile->callee_id_number = switch_sanitize_number(switch_core_strdup(caller_profile->pool, number));
|
||||||
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "%s Update Callee ID to \"%s\" <%s>\n", switch_channel_get_name(channel), name, number);
|
||||||
|
|
||||||
|
if (lazy || (att && !switch_channel_get_partner_uuid(channel))) {
|
||||||
|
switch_channel_flip_cid(channel);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3468,10 +3495,9 @@ switch_status_t config_sofia(sofia_config_t reload, char *profile_name)
|
|||||||
} else {
|
} else {
|
||||||
mod_sofia_globals.rewrite_multicasted_fs_path = SWITCH_FALSE;
|
mod_sofia_globals.rewrite_multicasted_fs_path = SWITCH_FALSE;
|
||||||
}
|
}
|
||||||
|
} else if (!strcasecmp(var, "capture-server")) {
|
||||||
|
mod_sofia_globals.capture_server = switch_core_strdup(mod_sofia_globals.pool, val);
|
||||||
}
|
}
|
||||||
else if (!strcasecmp(var, "capture-server")) {
|
|
||||||
mod_sofia_globals.capture_server = switch_core_strdup(mod_sofia_globals.pool, val);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -882,7 +882,7 @@ static switch_status_t shout_file_close(switch_file_handle_t *handle)
|
|||||||
static switch_status_t shout_file_seek(switch_file_handle_t *handle, unsigned int *cur_sample, int64_t samples, int whence)
|
static switch_status_t shout_file_seek(switch_file_handle_t *handle, unsigned int *cur_sample, int64_t samples, int whence)
|
||||||
{
|
{
|
||||||
shout_context_t *context = handle->private_info;
|
shout_context_t *context = handle->private_info;
|
||||||
|
|
||||||
if (handle->handler || switch_test_flag(handle, SWITCH_FILE_FLAG_WRITE)) {
|
if (handle->handler || switch_test_flag(handle, SWITCH_FILE_FLAG_WRITE)) {
|
||||||
return SWITCH_STATUS_FALSE;
|
return SWITCH_STATUS_FALSE;
|
||||||
} else {
|
} else {
|
||||||
@ -893,7 +893,12 @@ static switch_status_t shout_file_seek(switch_file_handle_t *handle, unsigned in
|
|||||||
switch_buffer_zero(context->audio_buffer);
|
switch_buffer_zero(context->audio_buffer);
|
||||||
*cur_sample = mpg123_seek(context->mh, (off_t) samples, whence);
|
*cur_sample = mpg123_seek(context->mh, (off_t) samples, whence);
|
||||||
|
|
||||||
return *cur_sample >= 0 ? SWITCH_STATUS_SUCCESS : SWITCH_STATUS_FALSE;
|
if (*cur_sample >= 0) {
|
||||||
|
handle->pos = *cur_sample;
|
||||||
|
return SWITCH_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
return SWITCH_STATUS_FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1217,7 +1217,7 @@ static switch_status_t js_stream_input_callback(switch_core_session_t *session,
|
|||||||
switch_status_t status;
|
switch_status_t status;
|
||||||
struct input_callback_state *cb_state = buf;
|
struct input_callback_state *cb_state = buf;
|
||||||
switch_file_handle_t *fh = cb_state->extra;
|
switch_file_handle_t *fh = cb_state->extra;
|
||||||
struct js_session *jss = cb_state->session_state;
|
//struct js_session *jss = cb_state->session_state;
|
||||||
|
|
||||||
if (!switch_test_flag(fh, SWITCH_FILE_OPEN)) {
|
if (!switch_test_flag(fh, SWITCH_FILE_OPEN)) {
|
||||||
return SWITCH_STATUS_FALSE;
|
return SWITCH_STATUS_FALSE;
|
||||||
@ -1285,11 +1285,11 @@ static switch_status_t js_stream_input_callback(switch_core_session_t *session,
|
|||||||
switch_core_file_seek(fh, &pos, 0, SEEK_SET);
|
switch_core_file_seek(fh, &pos, 0, SEEK_SET);
|
||||||
return SWITCH_STATUS_SUCCESS;
|
return SWITCH_STATUS_SUCCESS;
|
||||||
} else if (!strncasecmp(ret, "seek", 4)) {
|
} else if (!strncasecmp(ret, "seek", 4)) {
|
||||||
switch_codec_t *codec;
|
//switch_codec_t *codec;
|
||||||
uint32_t samps = 0;
|
uint32_t samps = 0;
|
||||||
uint32_t pos = 0;
|
uint32_t pos = 0;
|
||||||
char *p;
|
char *p;
|
||||||
codec = switch_core_session_get_read_codec(jss->session);
|
//codec = switch_core_session_get_read_codec(jss->session);
|
||||||
|
|
||||||
if ((p = strchr(ret, ':'))) {
|
if ((p = strchr(ret, ':'))) {
|
||||||
p++;
|
p++;
|
||||||
@ -1299,14 +1299,14 @@ static switch_status_t js_stream_input_callback(switch_core_session_t *session,
|
|||||||
step = 1000;
|
step = 1000;
|
||||||
}
|
}
|
||||||
if (step > 0) {
|
if (step > 0) {
|
||||||
samps = step * (codec->implementation->actual_samples_per_second / 1000);
|
samps = step * (fh->samplerate / 1000);
|
||||||
switch_core_file_seek(fh, &pos, samps, SEEK_CUR);
|
switch_core_file_seek(fh, &pos, samps, SEEK_CUR);
|
||||||
} else {
|
} else {
|
||||||
samps = abs(step) * (codec->implementation->actual_samples_per_second / 1000);
|
samps = abs(step) * (fh->samplerate / 1000);
|
||||||
switch_core_file_seek(fh, &pos, fh->pos - samps, SEEK_SET);
|
switch_core_file_seek(fh, &pos, fh->pos - samps, SEEK_SET);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
samps = atoi(p) * (codec->implementation->actual_samples_per_second / 1000);
|
samps = atoi(p) * (fh->samplerate / 1000);
|
||||||
switch_core_file_seek(fh, &pos, samps, SEEK_SET);
|
switch_core_file_seek(fh, &pos, samps, SEEK_SET);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2008,7 +2008,9 @@ static JSBool session_speak(JSContext * cx, JSObject * obj, uintN argc, jsval *
|
|||||||
args.buflen = len;
|
args.buflen = len;
|
||||||
|
|
||||||
switch_core_speech_flush_tts(&jss->speech->sh);
|
switch_core_speech_flush_tts(&jss->speech->sh);
|
||||||
switch_ivr_speak_text_handle(jss->session, &jss->speech->sh, &jss->speech->codec, NULL, text, &args);
|
if (switch_core_codec_ready(&jss->speech->codec)) {
|
||||||
|
switch_ivr_speak_text_handle(jss->session, &jss->speech->sh, &jss->speech->codec, NULL, text, &args);
|
||||||
|
}
|
||||||
JS_ResumeRequest(cx, cb_state.saveDepth);
|
JS_ResumeRequest(cx, cb_state.saveDepth);
|
||||||
check_hangup_hook(jss, &ret);
|
check_hangup_hook(jss, &ret);
|
||||||
*rval = cb_state.ret;
|
*rval = cb_state.ret;
|
||||||
|
@ -2571,7 +2571,7 @@ SWITCH_DECLARE(switch_caller_profile_t *) switch_channel_get_caller_profile(swit
|
|||||||
return profile;
|
return profile;
|
||||||
}
|
}
|
||||||
|
|
||||||
SWITCH_DECLARE(void) _switch_channel_set_originator_caller_profile(switch_channel_t *channel, switch_caller_profile_t *caller_profile)
|
SWITCH_DECLARE(void) switch_channel_set_originator_caller_profile(switch_channel_t *channel, switch_caller_profile_t *caller_profile)
|
||||||
{
|
{
|
||||||
switch_assert(channel != NULL);
|
switch_assert(channel != NULL);
|
||||||
switch_assert(channel->caller_profile != NULL);
|
switch_assert(channel->caller_profile != NULL);
|
||||||
@ -2635,7 +2635,7 @@ SWITCH_DECLARE(switch_caller_profile_t *) switch_channel_get_origination_caller_
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SWITCH_DECLARE(void) _switch_channel_set_originatee_caller_profile(switch_channel_t *channel, switch_caller_profile_t *caller_profile)
|
SWITCH_DECLARE(void) switch_channel_set_originatee_caller_profile(switch_channel_t *channel, switch_caller_profile_t *caller_profile)
|
||||||
{
|
{
|
||||||
switch_assert(channel != NULL);
|
switch_assert(channel != NULL);
|
||||||
switch_assert(channel->caller_profile != NULL);
|
switch_assert(channel->caller_profile != NULL);
|
||||||
|
@ -3366,11 +3366,11 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_process_fh(switch_core_session_t *ses
|
|||||||
switch_core_file_seek(fhp, &pos, 0, SEEK_SET);
|
switch_core_file_seek(fhp, &pos, 0, SEEK_SET);
|
||||||
return SWITCH_STATUS_SUCCESS;
|
return SWITCH_STATUS_SUCCESS;
|
||||||
} else if (!strncasecmp(cmd, "seek", 4)) {
|
} else if (!strncasecmp(cmd, "seek", 4)) {
|
||||||
switch_codec_t *codec;
|
//switch_codec_t *codec;
|
||||||
unsigned int samps = 0;
|
unsigned int samps = 0;
|
||||||
unsigned int pos = 0;
|
unsigned int pos = 0;
|
||||||
char *p;
|
char *p;
|
||||||
codec = switch_core_session_get_read_codec(session);
|
//codec = switch_core_session_get_read_codec(session);
|
||||||
|
|
||||||
if ((p = strchr(cmd, ':'))) {
|
if ((p = strchr(cmd, ':'))) {
|
||||||
p++;
|
p++;
|
||||||
@ -3381,7 +3381,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_process_fh(switch_core_session_t *ses
|
|||||||
step = 1000;
|
step = 1000;
|
||||||
}
|
}
|
||||||
|
|
||||||
samps = step * (codec->implementation->samples_per_second / 1000);
|
samps = step * (fhp->samplerate / 1000);
|
||||||
target = (int32_t)fhp->pos + samps;
|
target = (int32_t)fhp->pos + samps;
|
||||||
|
|
||||||
if (target < 0) {
|
if (target < 0) {
|
||||||
@ -3392,7 +3392,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_process_fh(switch_core_session_t *ses
|
|||||||
switch_core_file_seek(fhp, &pos, target, SEEK_SET);
|
switch_core_file_seek(fhp, &pos, target, SEEK_SET);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
samps = switch_atoui(p) * (codec->implementation->samples_per_second / 1000);
|
samps = switch_atoui(p) * (fhp->samplerate / 1000);
|
||||||
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "seek to position %d\n", samps);
|
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "seek to position %d\n", samps);
|
||||||
switch_core_file_seek(fhp, &pos, samps, SEEK_SET);
|
switch_core_file_seek(fhp, &pos, samps, SEEK_SET);
|
||||||
}
|
}
|
||||||
|
@ -797,8 +797,8 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_record_file(switch_core_session_t *se
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (read_impl.actual_samples_per_second) {
|
if (read_impl.actual_samples_per_second) {
|
||||||
switch_channel_set_variable_printf(channel, "record_seconds", "%d", fh->samples_out / read_impl.actual_samples_per_second);
|
switch_channel_set_variable_printf(channel, "record_seconds", "%d", fh->samples_out / fh->samplerate);
|
||||||
switch_channel_set_variable_printf(channel, "record_ms", "%d", fh->samples_out / (read_impl.actual_samples_per_second / 1000));
|
switch_channel_set_variable_printf(channel, "record_ms", "%d", fh->samples_out / (fh->samplerate/ 1000));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1693,8 +1693,8 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_play_file(switch_core_session_t *sess
|
|||||||
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "done playing file %s\n", file);
|
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "done playing file %s\n", file);
|
||||||
|
|
||||||
if (read_impl.samples_per_second) {
|
if (read_impl.samples_per_second) {
|
||||||
switch_channel_set_variable_printf(channel, "playback_seconds", "%d", fh->samples_in / read_impl.samples_per_second);
|
switch_channel_set_variable_printf(channel, "playback_seconds", "%d", fh->samples_in / fh->samplerate);
|
||||||
switch_channel_set_variable_printf(channel, "playback_ms", "%d", fh->samples_in / (read_impl.samples_per_second / 1000));
|
switch_channel_set_variable_printf(channel, "playback_ms", "%d", fh->samples_in / fh->samplerate);
|
||||||
}
|
}
|
||||||
switch_channel_set_variable_printf(channel, "playback_samples", "%d", fh->samples_in);
|
switch_channel_set_variable_printf(channel, "playback_samples", "%d", fh->samples_in);
|
||||||
|
|
||||||
@ -2141,6 +2141,10 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_speak_text_handle(switch_core_session
|
|||||||
return SWITCH_STATUS_FALSE;
|
return SWITCH_STATUS_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!switch_core_codec_ready(codec)) {
|
||||||
|
return SWITCH_STATUS_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
arg_recursion_check_start(args);
|
arg_recursion_check_start(args);
|
||||||
|
|
||||||
write_frame.data = abuf;
|
write_frame.data = abuf;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user