#define switch_channel_media_ready(_channel) ((switch_channel_test_flag(_channel, CF_ANSWERED) || switch_channel_test_flag(_channel, CF_EARLY_MEDIA)) && !switch_channel_test_flag(_channel, CF_PROXY_MODE))
+SWITCH_DECLARE(void) switch_channel_audio_sync(switch_channel_t *channel);
+
/** @} */
SWITCH_END_EXTERN_C
return channel->hangup_cause;
}
+
+SWITCH_DECLARE(void) switch_channel_audio_sync(switch_channel_t *channel)
+{
+ if (switch_channel_media_ready(channel)) {
+ switch_core_session_message_t msg;
+ msg.message_id = SWITCH_MESSAGE_INDICATE_AUDIO_SYNC;
+ msg.from = channel->name;
+ switch_core_session_receive_message(channel->session, &msg);
+ }
+}
+
+
+
SWITCH_DECLARE(switch_call_cause_t) switch_channel_cause_q850(switch_call_cause_t cause)
{
if (cause <= SWITCH_CAUSE_INTERWORKING) {
switch_core_session_execute_application(channel->session, app, arg);
}
-
- if (switch_channel_media_ready(channel)) {
- switch_core_session_message_t msg;
- msg.message_id = SWITCH_MESSAGE_INDICATE_AUDIO_SYNC;
- msg.from = channel->name;
- switch_core_session_receive_message(channel->session, &msg);
- }
+ switch_channel_audio_sync(channel);
return SWITCH_STATUS_SUCCESS;
}
cng_frame.buflen = 2;
switch_set_flag((&cng_frame), SFF_CNG);
+ switch_channel_audio_sync(channel);
+
for (;;) {
now = switch_timestamp_now();
elapsed = (int32_t) ((now - start) / 1000);