FS-5136 set ringback and bridge_early_media=true and it should fall to playing the ringback when the 180 hits
This commit is contained in:
parent
a7577d7ee1
commit
86c1dbee2f
|
@ -1273,6 +1273,11 @@ static switch_status_t setup_ringback(originate_global_t *oglobals, originate_st
|
||||||
|
|
||||||
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(oglobals->session), SWITCH_LOG_DEBUG, "Play Ringback File [%s]\n", ringback_data);
|
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(oglobals->session), SWITCH_LOG_DEBUG, "Play Ringback File [%s]\n", ringback_data);
|
||||||
|
|
||||||
|
if (switch_test_flag((&ringback->fhb), SWITCH_FILE_OPEN)) {
|
||||||
|
switch_core_file_close(&ringback->fhb);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
ringback->fhb.channels = read_codec->implementation->number_of_channels;
|
ringback->fhb.channels = read_codec->implementation->number_of_channels;
|
||||||
ringback->fhb.samplerate = read_codec->implementation->actual_samples_per_second;
|
ringback->fhb.samplerate = read_codec->implementation->actual_samples_per_second;
|
||||||
if (switch_core_file_open(&ringback->fhb,
|
if (switch_core_file_open(&ringback->fhb,
|
||||||
|
@ -1690,12 +1695,13 @@ static void *SWITCH_THREAD_FUNC early_thread_run(switch_thread_t *thread, void *
|
||||||
int32_t sample;
|
int32_t sample;
|
||||||
switch_core_session_t *session;
|
switch_core_session_t *session;
|
||||||
switch_codec_t *read_codec, read_codecs[MAX_PEERS] = { {0} };
|
switch_codec_t *read_codec, read_codecs[MAX_PEERS] = { {0} };
|
||||||
int i, x, ready = 0, answered = 0;
|
int i, x, ready = 0, answered = 0, ring_ready = 0;
|
||||||
int16_t *data;
|
int16_t *data;
|
||||||
uint32_t datalen = 0;
|
uint32_t datalen = 0;
|
||||||
switch_status_t status;
|
switch_status_t status;
|
||||||
switch_frame_t *read_frame = NULL;
|
switch_frame_t *read_frame = NULL;
|
||||||
|
|
||||||
|
|
||||||
for (i = 0; i < MAX_PEERS && (session = state->originate_status[i].peer_session); i++) {
|
for (i = 0; i < MAX_PEERS && (session = state->originate_status[i].peer_session); i++) {
|
||||||
originate_status[i].peer_session = session;
|
originate_status[i].peer_session = session;
|
||||||
switch_core_session_read_lock(session);
|
switch_core_session_read_lock(session);
|
||||||
|
@ -1712,6 +1718,12 @@ static void *SWITCH_THREAD_FUNC early_thread_run(switch_thread_t *thread, void *
|
||||||
if (switch_channel_media_ready(channel)) {
|
if (switch_channel_media_ready(channel)) {
|
||||||
ready++;
|
ready++;
|
||||||
|
|
||||||
|
if (switch_channel_test_flag(channel, CF_RING_READY)) {
|
||||||
|
ring_ready = 1;
|
||||||
|
state->oglobals->bridge_early_media = -1;
|
||||||
|
state->oglobals->ignore_early_media = 1;
|
||||||
|
}
|
||||||
|
|
||||||
if (switch_channel_test_flag(channel, CF_ANSWERED)) {
|
if (switch_channel_test_flag(channel, CF_ANSWERED)) {
|
||||||
answered++;
|
answered++;
|
||||||
}
|
}
|
||||||
|
@ -1766,7 +1778,7 @@ static void *SWITCH_THREAD_FUNC early_thread_run(switch_thread_t *thread, void *
|
||||||
switch_mutex_unlock(state->mutex);
|
switch_mutex_unlock(state->mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!ready || answered) {
|
if (!ready || answered || ring_ready) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1780,7 +1792,9 @@ static void *SWITCH_THREAD_FUNC early_thread_run(switch_thread_t *thread, void *
|
||||||
switch_core_session_rwunlock(session);
|
switch_core_session_rwunlock(session);
|
||||||
}
|
}
|
||||||
|
|
||||||
state->oglobals->early_ok = 1;
|
if (!ring_ready) {
|
||||||
|
state->oglobals->early_ok = 1;
|
||||||
|
}
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -3084,7 +3098,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
write_frame.datalen = (uint32_t) (ringback.asis ? olen : olen * 2);
|
write_frame.datalen = (uint32_t) (ringback.asis ? olen : olen * 2);
|
||||||
write_frame.samples = (uint32_t) olen;
|
write_frame.samples = (uint32_t) olen;
|
||||||
|
|
||||||
} else if (ringback.audio_buffer) {
|
} else if (ringback.audio_buffer) {
|
||||||
if ((write_frame.datalen = (uint32_t) switch_buffer_read_loop(ringback.audio_buffer,
|
if ((write_frame.datalen = (uint32_t) switch_buffer_read_loop(ringback.audio_buffer,
|
||||||
|
|
Loading…
Reference in New Issue