switch_channel_set_flag(channel, CF_ACCEPT_CNG);
+ switch_channel_set_flag(channel, CF_AUDIO);
if ((vars = (switch_event_t *) switch_channel_get_private(channel, "__loopback_vars__"))) {
switch_event_header_t *h;
switch_event_t *clone = NULL;
switch_core_session_add_stream(*new_session, NULL);
-
+
if ((tech_pvt = (loopback_private_t *) switch_core_session_alloc(*new_session, sizeof(loopback_private_t))) != 0) {
channel = switch_core_session_get_channel(*new_session);
switch_snprintf(name, sizeof(name), "loopback/%s-a", outbound_profile->destination_number);
}
switch_channel_set_state(channel, CS_INIT);
-
+ switch_channel_set_flag(channel, CF_AUDIO);
return SWITCH_CAUSE_SUCCESS;
}
{
switch_io_event_hook_write_frame_t *ptr;
switch_status_t status = SWITCH_STATUS_FALSE;
- switch_rtp_engine_t *a_engine;
switch_media_handle_t *smh;
switch_assert(session != NULL);
- if (!(smh = session->media_handle)) {
- return SWITCH_STATUS_FALSE;
- }
-
- a_engine = &smh->engines[SWITCH_MEDIA_TYPE_AUDIO];
+ if ((smh = session->media_handle)) {
+ switch_rtp_engine_t *a_engine = &smh->engines[SWITCH_MEDIA_TYPE_AUDIO];
- if (a_engine && a_engine->write_fb && !(flags & SWITCH_IO_FLAG_QUEUED)) {
- switch_frame_t *dupframe = NULL;
-
- if (switch_frame_buffer_dup(a_engine->write_fb, frame, &dupframe) == SWITCH_STATUS_SUCCESS) {
- switch_frame_buffer_push(a_engine->write_fb, dupframe);
- dupframe = NULL;
- return SWITCH_STATUS_SUCCESS;
+ if (a_engine && a_engine->write_fb && !(flags & SWITCH_IO_FLAG_QUEUED)) {
+ switch_frame_t *dupframe = NULL;
+
+ if (switch_frame_buffer_dup(a_engine->write_fb, frame, &dupframe) == SWITCH_STATUS_SUCCESS) {
+ switch_frame_buffer_push(a_engine->write_fb, dupframe);
+ dupframe = NULL;
+ return SWITCH_STATUS_SUCCESS;
+ }
}
}
switch_assert(session != NULL);
switch_assert(frame != NULL);
- if (!switch_channel_ready(session->channel)) {
+ if (!switch_channel_up_nosig(session->channel)) {
return SWITCH_STATUS_FALSE;
}