[commit] r4056 - in freeswitch/trunk/src/mod: applications/mod_conference endpoints/mod_sofia
Author: anthm Date: Thu Jan 25 12:26:23 2007 New Revision: 4056 Modified: freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c Log: make conference_local_play_file honor the sound-prefix param Modified: freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c ============================================================================== --- freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c (original) +++ freeswitch/trunk/src/mod/applications/mod_conference/mod_conference.c Thu Jan 25 12:26:23 2007 @@ -287,7 +287,8 @@ static void conference_function(switch_core_session_t *session, char *data); static void launch_conference_thread(conference_obj_t *conference); static void *SWITCH_THREAD_FUNC conference_loop_input(switch_thread_t *thread, void *obj); -static switch_status_t conference_local_play_file(switch_core_session_t *session, char *path, uint32_t leadin, char *buf, switch_size_t len); +static switch_status_t conference_local_play_file(conference_obj_t *conference, + switch_core_session_t *session, char *path, uint32_t leadin, char *buf, switch_size_t len); static switch_status_t conference_member_play_file(conference_member_t *member, char *file, uint32_t leadin); static switch_status_t conference_member_say(conference_member_t *member, char *text, uint32_t leadin); static uint32_t conference_member_stop_file(conference_member_t *member, file_stop_t stop); @@ -3415,7 +3416,8 @@ } /* Play a file */ -static switch_status_t conference_local_play_file(switch_core_session_t *session, char *path, uint32_t leadin, char *buf, switch_size_t len) +static switch_status_t conference_local_play_file(conference_obj_t *conference, + switch_core_session_t *session, char *path, uint32_t leadin, char *buf, switch_size_t len) { uint32_t x = 0; switch_status_t status = SWITCH_STATUS_SUCCESS; @@ -3432,7 +3434,17 @@ /* if all is well, really play the file */ if (status == SWITCH_STATUS_SUCCESS) { + char *dpath = NULL; + + if (conference->sound_prefix) { + if (!(dpath = switch_mprintf("%s/%s", conference->sound_prefix, path))) { + return SWITCH_STATUS_MEMERR; + } + path = dpath; + } + status = switch_ivr_play_file(session, NULL, path, NULL); + switch_safe_free(dpath); } return status; @@ -3610,7 +3622,7 @@ /* be friendly */ if (conference->pin_sound) { - conference_local_play_file(session, conference->pin_sound, 20, pin_buf, sizeof(pin_buf)); + conference_local_play_file(conference, session, conference->pin_sound, 20, pin_buf, sizeof(pin_buf)); } /* wait for them if neccessary */ if (strlen(pin_buf) < strlen(conference->pin)) { @@ -3631,7 +3643,7 @@ /* more friendliness */ if (conference->bad_pin_sound) { - conference_local_play_file(session, conference->bad_pin_sound, 20, pin_buf, sizeof(pin_buf)); + conference_local_play_file(conference, session, conference->bad_pin_sound, 20, pin_buf, sizeof(pin_buf)); } } pin_retries --; @@ -3648,7 +3660,7 @@ if (conference->locked_sound) { /* Answer the channel */ switch_channel_answer(channel); - conference_local_play_file(session, conference->locked_sound, 20, NULL, 0); + conference_local_play_file(conference, session, conference->locked_sound, 20, NULL, 0); } goto done; } Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c (original) +++ freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c Thu Jan 25 12:26:23 2007 @@ -2223,6 +2223,7 @@ sdp_media_t *m; sdp_attribute_t *a; switch_channel_t *channel; + int ptime = 0, dptime = 0; tech_pvt = switch_core_session_get_private(session); assert(tech_pvt != NULL); @@ -2246,10 +2247,19 @@ switch_set_flag_locked(tech_pvt, TFLAG_SIP_HOLD); } else if (!strcasecmp(a->a_name, "sendrecv")) { switch_clear_flag_locked(tech_pvt, TFLAG_SIP_HOLD); + } else if (!strcasecmp(a->a_name, "ptime")) { + dptime = atoi(a->a_value); } } for (m = sdp->sdp_media; m ; m = m->m_next) { + ptime = dptime; + for (a = m->m_attributes; a; a = a->a_next) { + if (!strcasecmp(a->a_name, "ptime")) { + ptime = atoi(a->a_value); + } + } + if (m->m_type == sdp_media_audio) { sdp_rtpmap_t *map;
participants (1)
-
Freeswitch SVN