add new flag to frames to denote pass thru frames that are not audio

This commit is contained in:
Anthony Minessale 2011-09-09 13:56:04 -05:00
parent bcd1e14711
commit cb9abe0268
3 changed files with 21 additions and 1 deletions

View File

@ -1203,7 +1203,8 @@ typedef enum {
SFF_PROXY_PACKET = (1 << 5),
SFF_DYNAMIC = (1 << 6),
SFF_ZRTP = (1 << 7),
SFF_UDPTL_PACKET = (1 << 8)
SFF_UDPTL_PACKET = (1 << 8),
SFF_NOT_AUDIO = (1 << 9)
} switch_frame_flag_enum_t;
typedef uint32_t switch_frame_flag_t;

View File

@ -265,6 +265,13 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_read_frame(switch_core_sessi
do_bugs = 1;
need_codec = 1;
}
if (((*frame)->flags & SFF_NOT_AUDIO)) {
do_resample = 0;
do_bugs = 0;
need_codec = 0;
}
if (switch_test_flag(session, SSF_READ_TRANSCODE) && !need_codec && switch_core_codec_ready(session->read_codec)) {
switch_core_session_t *other_session;
@ -792,6 +799,13 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_write_frame(switch_core_sess
do_resample = TRUE;
}
if ((frame->flags & SFF_NOT_AUDIO)) {
do_resample = 0;
do_bugs = 0;
need_codec = 0;
}
if (switch_test_flag(session, SSF_WRITE_TRANSCODE) && !need_codec && switch_core_codec_ready(session->write_codec)) {
switch_core_session_t *other_session;
const char *uuid = switch_channel_get_variable(switch_core_session_get_channel(session), SWITCH_SIGNAL_BOND_VARIABLE);

View File

@ -3131,6 +3131,11 @@ static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_
}
}
if (((rtp_session->cng_pt && rtp_session->recv_msg.header.pt == rtp_session->cng_pt) || rtp_session->recv_msg.header.pt == 13)) {
*flags |= SFF_NOT_AUDIO;
}
/* ignore packets not meant for us unless the auto-adjust window is open */
if (bytes) {
if (switch_test_flag(rtp_session, SWITCH_RTP_FLAG_AUTOADJ)) {