From 82db5e011212a68ce6c2b46209a63b63709a28f8 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 2 Feb 2007 20:28:34 +0000 Subject: [PATCH] fix sample calc git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@4108 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- src/include/switch_utils.h | 1 + src/mod/applications/mod_conference/mod_conference.c | 9 +++------ 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/include/switch_utils.h b/src/include/switch_utils.h index 9242b8ef59..32780e6cd6 100644 --- a/src/include/switch_utils.h +++ b/src/include/switch_utils.h @@ -50,6 +50,7 @@ SWITCH_BEGIN_EXTERN_C #define vsnprintf apr_vsnprintf #endif +#define switch_bytes_per_frame(rate, interval) (uint32_t)((float)rate / (1000.0f / (float)interval)); #define SWITCH_SMAX 32767 #define SWITCH_SMIN -32768 diff --git a/src/mod/applications/mod_conference/mod_conference.c b/src/mod/applications/mod_conference/mod_conference.c index a8d54d6ddb..58276ea1a3 100644 --- a/src/mod/applications/mod_conference/mod_conference.c +++ b/src/mod/applications/mod_conference/mod_conference.c @@ -634,8 +634,7 @@ static void *SWITCH_THREAD_FUNC conference_thread_run(switch_thread_t *thread, v { conference_obj_t *conference = (conference_obj_t *) obj; conference_member_t *imember, *omember; - uint32_t divider = 1000 / conference->interval; - uint32_t samples = (conference->rate / divider); + uint32_t samples = switch_bytes_per_frame(conference->rate, conference->interval); uint32_t bytes = samples * 2; uint8_t ready = 0; switch_timer_t timer = {0}; @@ -1419,8 +1418,7 @@ static void conference_loop_output(conference_member_t *member) switch_frame_t write_frame = {0}; uint8_t data[SWITCH_RECCOMMENDED_BUFFER_SIZE]; switch_timer_t timer = {0}; - uint32_t divider = 1000 / member->conference->interval; - uint32_t samples = (member->conference->rate / divider); + uint32_t samples = switch_bytes_per_frame(member->conference->rate, member->conference->interval); uint32_t bytes = samples * 2; channel = switch_core_session_get_channel(member->session); @@ -1666,8 +1664,7 @@ static void *SWITCH_THREAD_FUNC conference_record_thread_run(switch_thread_t *th switch_file_handle_t fh = {0}; conference_member_t smember = {0}, *member; conference_record_t *rec = (conference_record_t *) obj; - uint32_t divider = 1000 / rec->conference->interval; - uint32_t samples = (rec->conference->rate / divider); + uint32_t samples = switch_bytes_per_frame(rec->conference->rate, rec->conference->interval); uint32_t bytes = samples * 2; uint32_t mux_used; char *vval;