Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Z
ZLMediaKit
概览
Overview
Details
Activity
Cycle Analytics
版本库
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
问题
0
Issues
0
列表
Board
标记
里程碑
合并请求
0
Merge Requests
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
Snippets
成员
Collapse sidebar
Close sidebar
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
张翔宇
ZLMediaKit
Commits
9c96f8d3
Commit
9c96f8d3
authored
4 years ago
by
xiongziliang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
确保PSRtpSender对象的线程安全
parent
040c132f
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
5 行增加
和
1 行删除
+5
-1
src/Rtp/PSRtpSender.cpp
+5
-1
没有找到文件。
src/Rtp/PSRtpSender.cpp
查看文件 @
9c96f8d3
...
...
@@ -30,12 +30,14 @@ PSRtpSender::~PSRtpSender() {
}
void
PSRtpSender
::
onPS
(
uint32_t
stamp
,
void
*
packet
,
size_t
bytes
)
{
//此函数在其他线程执行
_rtp_encoder
->
inputFrame
(
std
::
make_shared
<
FrameFromPtr
>
((
char
*
)
packet
,
bytes
,
stamp
));
}
void
PSRtpSender
::
startSend
(
const
string
&
dst_url
,
uint16_t
dst_port
,
bool
is_udp
,
const
function
<
void
(
const
SockException
&
ex
)
>
&
cb
){
_is_udp
=
is_udp
;
_socket
=
std
::
make_shared
<
Socket
>
();
//确保Socket对象的线程安全
_socket
=
std
::
make_shared
<
Socket
>
(
_poller
,
true
);
_dst_url
=
dst_url
;
_dst_port
=
dst_port
;
weak_ptr
<
PSRtpSender
>
weak_self
=
shared_from_this
();
...
...
@@ -89,6 +91,7 @@ void PSRtpSender::onConnect(){
}
void
PSRtpSender
::
onRtp
(
const
RtpPacket
::
Ptr
&
rtp
,
bool
)
{
//此函数在其他线程执行
if
(
!
_is_connect
){
return
;
}
...
...
@@ -98,6 +101,7 @@ void PSRtpSender::onRtp(const RtpPacket::Ptr &rtp, bool) {
}
void
PSRtpSender
::
onFlush
(
shared_ptr
<
List
<
RtpPacket
::
Ptr
>>
&
rtp_list
,
bool
key_pos
)
{
//此函数在其他线程执行
int
i
=
0
;
int
size
=
rtp_list
->
size
();
rtp_list
->
for_each
([
&
](
const
RtpPacket
::
Ptr
&
packet
)
{
...
...
This diff is collapsed.
Click to expand it.
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论