From 1fd13eeb5e20b3e5b4cfc2a4f2a06186e8d94bb1 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 13 Oct 2009 22:29:20 +0000 Subject: [PATCH] fix playback_ms and record_ms to work right and add playback_seconds and record_seconds git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@15155 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- src/mod/endpoints/mod_sofia/sofia.c | 4 +++- src/switch_core_file.c | 2 ++ src/switch_ivr_play_say.c | 19 +++++++++++++++---- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 0c9c0386e5..e1c8f48137 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -402,7 +402,7 @@ void sofia_send_callee_id(switch_core_session_t *session, const char *name, cons if ((uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE)) && (session_b = switch_core_session_locate(uuid))) { switch_core_session_message_t *msg; - + msg = switch_core_session_alloc(session_b, sizeof(*msg)); MESSAGE_STAMP_FFL(msg); msg->message_id = SWITCH_MESSAGE_INDICATE_DISPLAY; @@ -468,6 +468,8 @@ void sofia_update_callee_id(switch_core_session_t *session, sofia_profile_t *pro caller_profile = switch_channel_get_caller_profile(channel); caller_profile->callee_id_name = switch_core_strdup(caller_profile->pool, name); caller_profile->callee_id_number = switch_core_strdup(caller_profile->pool, number); + + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Update Callee ID to \"%s\" <%s>\n", name, number); if (send) { sofia_send_callee_id(session, NULL, NULL); diff --git a/src/switch_core_file.c b/src/switch_core_file.c index da63956bbd..b8e86e31ba 100644 --- a/src/switch_core_file.c +++ b/src/switch_core_file.c @@ -498,9 +498,11 @@ SWITCH_DECLARE(switch_status_t) switch_core_file_close(switch_file_handle_t *fh) if ((blen = switch_buffer_read(fh->pre_buffer, fh->pre_buffer_data, fh->pre_buffer_datalen))) { if (!asis) blen /= 2; if (fh->channels > 1) blen /= fh->channels; + if (fh->file_interface->file_write(fh, fh->pre_buffer_data, &blen) != SWITCH_STATUS_SUCCESS) { break; } + fh->samples_out += blen; } } } diff --git a/src/switch_ivr_play_say.c b/src/switch_ivr_play_say.c index bfc3dc8df1..3a0450eeff 100644 --- a/src/switch_ivr_play_say.c +++ b/src/switch_ivr_play_say.c @@ -715,10 +715,16 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_record_file(switch_core_session_t *se switch_core_codec_destroy(&write_codec); } - switch_channel_set_variable_printf(channel, "record_ms", "%d", fh->samples_in / read_impl.samples_per_second); - switch_channel_set_variable_printf(channel, "record_samples", "%d", fh->samples_in); - switch_core_file_close(fh); + + if (read_impl.samples_per_second) { + switch_channel_set_variable_printf(channel, "record_seconds", "%d", fh->samples_out / read_impl.samples_per_second); + switch_channel_set_variable_printf(channel, "record_ms", "%d", fh->samples_out / (read_impl.samples_per_second / 1000)); + + } + + switch_channel_set_variable_printf(channel, "record_samples", "%d", fh->samples_out); + switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE); return status; } @@ -1425,7 +1431,12 @@ 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\n"); - if (read_impl.samples_per_second) switch_channel_set_variable_printf(channel, "playback_ms", "%d", fh->samples_out / read_impl.samples_per_second); + if (read_impl.samples_per_second) { + switch_channel_set_variable_printf(channel, "playback_seconds", + "%d", fh->samples_out / read_impl.samples_per_second); + switch_channel_set_variable_printf(channel, "playback_ms", + "%d", fh->samples_out / (read_impl.samples_per_second / 1000) ); + } switch_channel_set_variable_printf(channel, "playback_samples", "%d", fh->samples_out); switch_core_file_close(fh);