Skip to content
项目
群组
代码片段
帮助
正在加载...
登录
切换导航
F
freeswitch
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
张华
freeswitch
Commits
8b1ce0f1
提交
8b1ce0f1
authored
6月 12, 2015
作者:
Artur Zaprzała
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
FS-7639 Fix rtp_session->recv_te and rtp_session->cng_pt comparisions in switch_rtp.c
上级
67ed8f42
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
34 行增加
和
20 行删除
+34
-20
switch_rtp.c
src/switch_rtp.c
+34
-20
没有找到文件。
src/switch_rtp.c
浏览文件 @
8b1ce0f1
...
@@ -71,6 +71,7 @@
...
@@ -71,6 +71,7 @@
#define WARN_SRTP_ERRS 10
#define WARN_SRTP_ERRS 10
#define MAX_SRTP_ERRS 100
#define MAX_SRTP_ERRS 100
#define NTP_TIME_OFFSET 2208988800UL
#define NTP_TIME_OFFSET 2208988800UL
static
const
switch_payload_t
INVALID_PT
=
255
;
#define DTMF_SANITY (rtp_session->one_second * 30)
#define DTMF_SANITY (rtp_session->one_second * 30)
...
@@ -550,7 +551,7 @@ static handle_rfc2833_result_t handle_rfc2833(switch_rtp_t *rtp_session, switch_
...
@@ -550,7 +551,7 @@ static handle_rfc2833_result_t handle_rfc2833(switch_rtp_t *rtp_session, switch_
*/
*/
if
(
bytes
>
rtp_header_len
&&
!
rtp_session
->
flags
[
SWITCH_RTP_FLAG_PROXY_MEDIA
]
&&
if
(
bytes
>
rtp_header_len
&&
!
rtp_session
->
flags
[
SWITCH_RTP_FLAG_PROXY_MEDIA
]
&&
rtp_session
->
recv_
te
&&
rtp_session
->
recv_
msg
.
header
.
pt
==
rtp_session
->
recv_te
)
{
rtp_session
->
recv_msg
.
header
.
pt
==
rtp_session
->
recv_te
)
{
switch_size_t
len
=
bytes
-
rtp_header_len
;
switch_size_t
len
=
bytes
-
rtp_header_len
;
unsigned
char
*
packet
=
(
unsigned
char
*
)
RTP_BODY
(
rtp_session
);
unsigned
char
*
packet
=
(
unsigned
char
*
)
RTP_BODY
(
rtp_session
);
int
end
;
int
end
;
...
@@ -1889,7 +1890,7 @@ static int check_rtcp_and_ice(switch_rtp_t *rtp_session)
...
@@ -1889,7 +1890,7 @@ static int check_rtcp_and_ice(switch_rtp_t *rtp_session)
switch_time_t
now
=
switch_micro_time_now
();
switch_time_t
now
=
switch_micro_time_now
();
int
rate
=
0
;
int
rate
=
0
;
if
(
rtp_session
->
flags
[
SWITCH_RTP_FLAG_AUTO_CNG
]
&&
rtp_session
->
send_msg
.
header
.
ts
&&
rtp_session
->
cng_pt
&&
if
(
rtp_session
->
flags
[
SWITCH_RTP_FLAG_AUTO_CNG
]
&&
rtp_session
->
send_msg
.
header
.
ts
&&
rtp_session
->
cng_pt
!=
INVALID_PT
&&
rtp_session
->
timer
.
samplecount
>=
(
rtp_session
->
last_write_samplecount
+
(
rtp_session
->
samples_per_interval
*
60
)))
{
rtp_session
->
timer
.
samplecount
>=
(
rtp_session
->
last_write_samplecount
+
(
rtp_session
->
samples_per_interval
*
60
)))
{
uint8_t
data
[
10
]
=
{
0
};
uint8_t
data
[
10
]
=
{
0
};
switch_frame_flag_t
frame_flags
=
SFF_NONE
;
switch_frame_flag_t
frame_flags
=
SFF_NONE
;
...
@@ -3614,8 +3615,9 @@ SWITCH_DECLARE(switch_status_t) switch_rtp_create(switch_rtp_t **new_rtp_session
...
@@ -3614,8 +3615,9 @@ SWITCH_DECLARE(switch_status_t) switch_rtp_create(switch_rtp_t **new_rtp_session
}
}
rtp_session
->
pool
=
pool
;
rtp_session
->
pool
=
pool
;
rtp_session
->
te
=
0
;
rtp_session
->
te
=
INVALID_PT
;
rtp_session
->
recv_te
=
0
;
rtp_session
->
recv_te
=
INVALID_PT
;
rtp_session
->
cng_pt
=
INVALID_PT
;
rtp_session
->
session
=
session
;
rtp_session
->
session
=
session
;
switch_mutex_init
(
&
rtp_session
->
flag_mutex
,
SWITCH_MUTEX_NESTED
,
pool
);
switch_mutex_init
(
&
rtp_session
->
flag_mutex
,
SWITCH_MUTEX_NESTED
,
pool
);
...
@@ -4906,7 +4908,7 @@ static void do_flush(switch_rtp_t *rtp_session, int force)
...
@@ -4906,7 +4908,7 @@ static void do_flush(switch_rtp_t *rtp_session, int force)
int
do_cng
=
0
;
int
do_cng
=
0
;
/* Make sure to handle RFC2833 packets, even if we're flushing the packets */
/* Make sure to handle RFC2833 packets, even if we're flushing the packets */
if
(
bytes
>
rtp_header_len
&&
rtp_session
->
recv_
te
&&
rtp_session
->
recv_
msg
.
header
.
pt
==
rtp_session
->
recv_te
)
{
if
(
bytes
>
rtp_header_len
&&
rtp_session
->
recv_msg
.
header
.
pt
==
rtp_session
->
recv_te
)
{
handle_rfc2833
(
rtp_session
,
bytes
,
&
do_cng
);
handle_rfc2833
(
rtp_session
,
bytes
,
&
do_cng
);
#ifdef DEBUG_2833
#ifdef DEBUG_2833
switch_log_printf
(
SWITCH_CHANNEL_LOG
,
SWITCH_LOG_ERROR
,
"*** RTP packet handled in flush loop %d ***
\n
"
,
do_cng
);
switch_log_printf
(
SWITCH_CHANNEL_LOG
,
SWITCH_LOG_ERROR
,
"*** RTP packet handled in flush loop %d ***
\n
"
,
do_cng
);
...
@@ -5084,8 +5086,8 @@ static switch_status_t read_rtp_packet(switch_rtp_t *rtp_session, switch_size_t
...
@@ -5084,8 +5086,8 @@ static switch_status_t read_rtp_packet(switch_rtp_t *rtp_session, switch_size_t
if
(
rtp_session
->
flags
[
SWITCH_RTP_FLAG_RTCP_MUX
])
{
if
(
rtp_session
->
flags
[
SWITCH_RTP_FLAG_RTCP_MUX
])
{
*
flags
&=
~
SFF_RTCP
;
*
flags
&=
~
SFF_RTCP
;
if
(
!
check_recv_payload
(
rtp_session
)
&&
if
(
!
check_recv_payload
(
rtp_session
)
&&
(
!
rtp_session
->
recv_te
||
rtp_session
->
recv_msg
.
header
.
pt
!=
rtp_session
->
recv_te
)
&&
rtp_session
->
recv_msg
.
header
.
pt
!=
rtp_session
->
recv_te
&&
(
!
rtp_session
->
cng_pt
||
rtp_session
->
recv_msg
.
header
.
pt
!=
rtp_session
->
cng_pt
)
&&
rtp_session
->
recv_msg
.
header
.
pt
!=
rtp_session
->
cng_pt
&&
rtp_session
->
rtcp_recv_msg_p
->
header
.
version
==
2
&&
rtp_session
->
rtcp_recv_msg_p
->
header
.
version
==
2
&&
rtp_session
->
rtcp_recv_msg_p
->
header
.
type
>
199
&&
rtp_session
->
rtcp_recv_msg_p
->
header
.
type
<
208
)
{
//rtcp muxed
rtp_session
->
rtcp_recv_msg_p
->
header
.
type
>
199
&&
rtp_session
->
rtcp_recv_msg_p
->
header
.
type
<
208
)
{
//rtcp muxed
*
flags
|=
SFF_RTCP
;
*
flags
|=
SFF_RTCP
;
...
@@ -5224,7 +5226,7 @@ static switch_status_t read_rtp_packet(switch_rtp_t *rtp_session, switch_size_t
...
@@ -5224,7 +5226,7 @@ static switch_status_t read_rtp_packet(switch_rtp_t *rtp_session, switch_size_t
}
}
if
(
!
rtp_session
->
flags
[
SWITCH_RTP_FLAG_PROXY_MEDIA
]
&&
!
rtp_session
->
flags
[
SWITCH_RTP_FLAG_UDPTL
]
&&
!
rtp_session
->
flags
[
SWITCH_RTP_FLAG_VIDEO
]
&&
if
(
!
rtp_session
->
flags
[
SWITCH_RTP_FLAG_PROXY_MEDIA
]
&&
!
rtp_session
->
flags
[
SWITCH_RTP_FLAG_UDPTL
]
&&
!
rtp_session
->
flags
[
SWITCH_RTP_FLAG_VIDEO
]
&&
*
bytes
&&
(
!
rtp_session
->
recv_te
||
rtp_session
->
recv_msg
.
header
.
pt
!=
rtp_session
->
recv_te
)
&&
*
bytes
&&
rtp_session
->
recv_msg
.
header
.
pt
!=
rtp_session
->
recv_te
&&
ts
&&
!
rtp_session
->
jb
&&
!
rtp_session
->
pause_jb
&&
jb_valid
(
rtp_session
)
&&
ts
==
rtp_session
->
last_cng_ts
)
{
ts
&&
!
rtp_session
->
jb
&&
!
rtp_session
->
pause_jb
&&
jb_valid
(
rtp_session
)
&&
ts
==
rtp_session
->
last_cng_ts
)
{
/* we already sent this frame..... */
/* we already sent this frame..... */
*
bytes
=
0
;
*
bytes
=
0
;
...
@@ -5262,8 +5264,8 @@ static switch_status_t read_rtp_packet(switch_rtp_t *rtp_session, switch_size_t
...
@@ -5262,8 +5264,8 @@ static switch_status_t read_rtp_packet(switch_rtp_t *rtp_session, switch_size_t
#ifdef ENABLE_SRTP
#ifdef ENABLE_SRTP
if
(
rtp_session
->
flags
[
SWITCH_RTP_FLAG_SECURE_RECV
]
&&
rtp_session
->
recv_msg
.
header
.
version
==
2
&&
if
(
rtp_session
->
flags
[
SWITCH_RTP_FLAG_SECURE_RECV
]
&&
rtp_session
->
recv_msg
.
header
.
version
==
2
&&
(
check_recv_payload
(
rtp_session
)
||
(
check_recv_payload
(
rtp_session
)
||
(
rtp_session
->
recv_te
&&
rtp_session
->
recv_msg
.
header
.
pt
==
rtp_session
->
recv_te
)
||
rtp_session
->
recv_msg
.
header
.
pt
==
rtp_session
->
recv_te
||
(
rtp_session
->
cng_pt
&&
rtp_session
->
recv_msg
.
header
.
pt
==
rtp_session
->
cng_pt
)
))
{
rtp_session
->
recv_msg
.
header
.
pt
==
rtp_session
->
cng_pt
))
{
//if (rtp_session->flags[SWITCH_RTP_FLAG_SECURE_RECV] && (!rtp_session->ice.ice_user || rtp_session->recv_msg.header.version == 2)) {
//if (rtp_session->flags[SWITCH_RTP_FLAG_SECURE_RECV] && (!rtp_session->ice.ice_user || rtp_session->recv_msg.header.version == 2)) {
int
sbytes
=
(
int
)
*
bytes
;
int
sbytes
=
(
int
)
*
bytes
;
err_status_t
stat
=
0
;
err_status_t
stat
=
0
;
...
@@ -5377,9 +5379,9 @@ static switch_status_t read_rtp_packet(switch_rtp_t *rtp_session, switch_size_t
...
@@ -5377,9 +5379,9 @@ static switch_status_t read_rtp_packet(switch_rtp_t *rtp_session, switch_size_t
rtp_session
->
stats
.
inbound
.
raw_bytes
+=
*
bytes
;
rtp_session
->
stats
.
inbound
.
raw_bytes
+=
*
bytes
;
if
(
rtp_session
->
recv_
te
&&
rtp_session
->
recv_
msg
.
header
.
pt
==
rtp_session
->
recv_te
)
{
if
(
rtp_session
->
recv_msg
.
header
.
pt
==
rtp_session
->
recv_te
)
{
rtp_session
->
stats
.
inbound
.
dtmf_packet_count
++
;
rtp_session
->
stats
.
inbound
.
dtmf_packet_count
++
;
}
else
if
(
rtp_session
->
cng_pt
&&
(
rtp_session
->
recv_msg
.
header
.
pt
==
rtp_session
->
cng_pt
||
rtp_session
->
recv_msg
.
header
.
pt
==
13
)
)
{
}
else
if
(
rtp_session
->
recv_msg
.
header
.
pt
==
rtp_session
->
cng_pt
||
rtp_session
->
recv_msg
.
header
.
pt
==
13
)
{
rtp_session
->
stats
.
inbound
.
cng_packet_count
++
;
rtp_session
->
stats
.
inbound
.
cng_packet_count
++
;
}
else
{
}
else
{
rtp_session
->
stats
.
inbound
.
media_packet_count
++
;
rtp_session
->
stats
.
inbound
.
media_packet_count
++
;
...
@@ -5389,7 +5391,7 @@ static switch_status_t read_rtp_packet(switch_rtp_t *rtp_session, switch_size_t
...
@@ -5389,7 +5391,7 @@ static switch_status_t read_rtp_packet(switch_rtp_t *rtp_session, switch_size_t
rtp_session
->
stats
.
inbound
.
packet_count
++
;
rtp_session
->
stats
.
inbound
.
packet_count
++
;
}
}
if
(
(
rtp_session
->
recv_te
&&
rtp_session
->
recv_msg
.
header
.
pt
==
rtp_session
->
recv_te
)
||
if
(
rtp_session
->
recv_msg
.
header
.
pt
==
rtp_session
->
recv_te
||
(
*
bytes
<
rtp_header_len
&&
*
bytes
>
0
)
||
(
*
bytes
<
rtp_header_len
&&
*
bytes
>
0
)
||
rtp_session
->
flags
[
SWITCH_RTP_FLAG_PROXY_MEDIA
]
||
rtp_session
->
flags
[
SWITCH_RTP_FLAG_UDPTL
])
{
rtp_session
->
flags
[
SWITCH_RTP_FLAG_PROXY_MEDIA
]
||
rtp_session
->
flags
[
SWITCH_RTP_FLAG_UDPTL
])
{
return
SWITCH_STATUS_SUCCESS
;
return
SWITCH_STATUS_SUCCESS
;
...
@@ -6301,7 +6303,7 @@ static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_
...
@@ -6301,7 +6303,7 @@ static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_
!
rtp_session
->
flags
[
SWITCH_RTP_FLAG_PROXY_MEDIA
]
&&
!
rtp_session
->
flags
[
SWITCH_RTP_FLAG_UDPTL
]
&&
!
rtp_session
->
flags
[
SWITCH_RTP_FLAG_PROXY_MEDIA
]
&&
!
rtp_session
->
flags
[
SWITCH_RTP_FLAG_UDPTL
]
&&
rtp_session
->
recv_msg
.
header
.
pt
!=
13
&&
rtp_session
->
recv_msg
.
header
.
pt
!=
13
&&
rtp_session
->
recv_msg
.
header
.
pt
!=
rtp_session
->
recv_te
&&
rtp_session
->
recv_msg
.
header
.
pt
!=
rtp_session
->
recv_te
&&
(
!
rtp_session
->
cng_pt
||
rtp_session
->
recv_msg
.
header
.
pt
!=
rtp_session
->
cng_pt
)
)
{
rtp_session
->
recv_msg
.
header
.
pt
!=
rtp_session
->
cng_pt
)
{
int
accept_packet
=
1
;
int
accept_packet
=
1
;
...
@@ -6376,7 +6378,7 @@ static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_
...
@@ -6376,7 +6378,7 @@ 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
)
)
{
if
(
rtp_session
->
recv_msg
.
header
.
pt
==
rtp_session
->
cng_pt
||
rtp_session
->
recv_msg
.
header
.
pt
==
13
)
{
*
flags
|=
SFF_NOT_AUDIO
;
*
flags
|=
SFF_NOT_AUDIO
;
}
else
{
}
else
{
*
flags
&=
~
SFF_NOT_AUDIO
;
/* If this flag was already set, make sure to remove it when we get real audio */
*
flags
&=
~
SFF_NOT_AUDIO
;
/* If this flag was already set, make sure to remove it when we get real audio */
...
@@ -6386,7 +6388,7 @@ static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_
...
@@ -6386,7 +6388,7 @@ static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_
/* ignore packets not meant for us unless the auto-adjust window is open */
/* ignore packets not meant for us unless the auto-adjust window is open */
if
(
bytes
)
{
if
(
bytes
)
{
if
(
rtp_session
->
flags
[
SWITCH_RTP_FLAG_AUTOADJ
])
{
if
(
rtp_session
->
flags
[
SWITCH_RTP_FLAG_AUTOADJ
])
{
if
(
((
rtp_session
->
cng_pt
&&
rtp_session
->
recv_msg
.
header
.
pt
==
rtp_session
->
cng_pt
)
||
rtp_session
->
recv_msg
.
header
.
pt
==
13
)
)
{
if
(
rtp_session
->
recv_msg
.
header
.
pt
==
rtp_session
->
cng_pt
||
rtp_session
->
recv_msg
.
header
.
pt
==
13
)
{
goto
recvfrom
;
goto
recvfrom
;
}
}
...
@@ -6515,7 +6517,7 @@ static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_
...
@@ -6515,7 +6517,7 @@ static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_
memset
(
data
,
0
,
2
);
memset
(
data
,
0
,
2
);
data
[
0
]
=
65
;
data
[
0
]
=
65
;
rtp_session
->
recv_msg
.
header
.
pt
=
(
uint32_t
)
rtp_session
->
cng_pt
?
rtp_session
->
cng_pt
:
SWITCH_RTP_CNG_PAYLOAD
;
rtp_session
->
recv_msg
.
header
.
pt
=
rtp_session
->
cng_pt
!=
INVALID_PT
?
rtp_session
->
cng_pt
:
SWITCH_RTP_CNG_PAYLOAD
;
*
flags
|=
SFF_CNG
;
*
flags
|=
SFF_CNG
;
*
payload_type
=
(
switch_payload_t
)
rtp_session
->
recv_msg
.
header
.
pt
;
*
payload_type
=
(
switch_payload_t
)
rtp_session
->
recv_msg
.
header
.
pt
;
ret
=
2
+
rtp_header_len
;
ret
=
2
+
rtp_header_len
;
...
@@ -6557,7 +6559,7 @@ static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_
...
@@ -6557,7 +6559,7 @@ static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_
memset
(
data
,
0
,
2
);
memset
(
data
,
0
,
2
);
data
[
0
]
=
65
;
data
[
0
]
=
65
;
rtp_session
->
recv_msg
.
header
.
pt
=
(
uint32_t
)
rtp_session
->
cng_pt
?
rtp_session
->
cng_pt
:
SWITCH_RTP_CNG_PAYLOAD
;
rtp_session
->
recv_msg
.
header
.
pt
=
rtp_session
->
cng_pt
!=
INVALID_PT
?
rtp_session
->
cng_pt
:
SWITCH_RTP_CNG_PAYLOAD
;
*
flags
|=
SFF_CNG
;
*
flags
|=
SFF_CNG
;
*
payload_type
=
(
switch_payload_t
)
rtp_session
->
recv_msg
.
header
.
pt
;
*
payload_type
=
(
switch_payload_t
)
rtp_session
->
recv_msg
.
header
.
pt
;
ret
=
2
+
rtp_header_len
;
ret
=
2
+
rtp_header_len
;
...
@@ -6947,6 +6949,10 @@ static int rtp_common_write(switch_rtp_t *rtp_session,
...
@@ -6947,6 +6949,10 @@ static int rtp_common_write(switch_rtp_t *rtp_session,
m
=
(
uint8_t
)
send_msg
->
header
.
m
;
m
=
(
uint8_t
)
send_msg
->
header
.
m
;
if
(
flags
&&
*
flags
&
SFF_RFC2833
)
{
if
(
flags
&&
*
flags
&
SFF_RFC2833
)
{
if
(
rtp_session
->
te
==
INVALID_PT
)
{
ret
=
0
;
goto
end
;
}
send_msg
->
header
.
pt
=
rtp_session
->
te
;
send_msg
->
header
.
pt
=
rtp_session
->
te
;
}
}
data
=
send_msg
->
body
;
data
=
send_msg
->
body
;
...
@@ -6955,6 +6961,10 @@ static int rtp_common_write(switch_rtp_t *rtp_session,
...
@@ -6955,6 +6961,10 @@ static int rtp_common_write(switch_rtp_t *rtp_session,
}
}
}
else
{
}
else
{
if
(
*
flags
&
SFF_RFC2833
)
{
if
(
*
flags
&
SFF_RFC2833
)
{
if
(
rtp_session
->
te
==
INVALID_PT
)
{
ret
=
0
;
goto
end
;
}
payload
=
rtp_session
->
te
;
payload
=
rtp_session
->
te
;
}
}
...
@@ -7344,7 +7354,7 @@ static int rtp_common_write(switch_rtp_t *rtp_session,
...
@@ -7344,7 +7354,7 @@ static int rtp_common_write(switch_rtp_t *rtp_session,
rtp_session
->
stats
.
rtcp
.
sent_pkt_count
++
;
rtp_session
->
stats
.
rtcp
.
sent_pkt_count
++
;
}
}
if
(
rtp_session
->
cng_pt
&&
send_msg
->
header
.
pt
==
rtp_session
->
cng_pt
)
{
if
(
send_msg
->
header
.
pt
==
rtp_session
->
cng_pt
)
{
rtp_session
->
stats
.
outbound
.
cng_packet_count
++
;
rtp_session
->
stats
.
outbound
.
cng_packet_count
++
;
}
else
{
}
else
{
rtp_session
->
stats
.
outbound
.
media_packet_count
++
;
rtp_session
->
stats
.
outbound
.
media_packet_count
++
;
...
@@ -7555,7 +7565,7 @@ SWITCH_DECLARE(int) switch_rtp_write_frame(switch_rtp_t *rtp_session, switch_fra
...
@@ -7555,7 +7565,7 @@ SWITCH_DECLARE(int) switch_rtp_write_frame(switch_rtp_t *rtp_session, switch_fra
switch_assert
(
frame
!=
NULL
);
switch_assert
(
frame
!=
NULL
);
if
(
switch_test_flag
(
frame
,
SFF_CNG
))
{
if
(
switch_test_flag
(
frame
,
SFF_CNG
))
{
if
(
rtp_session
->
cng_pt
)
{
if
(
rtp_session
->
cng_pt
!=
INVALID_PT
)
{
payload
=
rtp_session
->
cng_pt
;
payload
=
rtp_session
->
cng_pt
;
}
else
{
}
else
{
return
(
int
)
frame
->
packetlen
;
return
(
int
)
frame
->
packetlen
;
...
@@ -7679,6 +7689,10 @@ SWITCH_DECLARE(int) switch_rtp_write_manual(switch_rtp_t *rtp_session,
...
@@ -7679,6 +7689,10 @@ SWITCH_DECLARE(int) switch_rtp_write_manual(switch_rtp_t *rtp_session,
return
0
;
return
0
;
}
}
if
(
payload
==
INVALID_PT
)
{
return
0
;
}
WRITE_INC
(
rtp_session
);
WRITE_INC
(
rtp_session
);
rtp_session
->
write_msg
=
rtp_session
->
send_msg
;
rtp_session
->
write_msg
=
rtp_session
->
send_msg
;
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论