Toggle navigation
Toggle navigation
此项目
正在载入...
Sign in
胡斌
/
srs
转到一个项目
Toggle navigation
项目
群组
代码片段
帮助
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
winlin
2015-01-07 14:31:42 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
a402ca7120094f3b27eb7a4216aaa24cfac6d92c
a402ca71
1 parent
89a3cf9e
refine code, the consumer always alive longer than queue recv thread.
显示空白字符变更
内嵌
并排对比
正在显示
4 个修改的文件
包含
19 行增加
和
25 行删除
trunk/src/app/srs_app_recv_thread.cpp
trunk/src/app/srs_app_recv_thread.hpp
trunk/src/app/srs_app_rtmp_conn.cpp
trunk/src/app/srs_app_rtmp_conn.hpp
trunk/src/app/srs_app_recv_thread.cpp
查看文件 @
a402ca7
...
...
@@ -134,9 +134,10 @@ void SrsRecvThread::on_thread_stop()
handler
->
on_thread_stop
();
}
SrsQueueRecvThread
::
SrsQueueRecvThread
(
SrsRtmpServer
*
rtmp_sdk
,
int
timeout_ms
)
SrsQueueRecvThread
::
SrsQueueRecvThread
(
Srs
Consumer
*
consumer
,
Srs
RtmpServer
*
rtmp_sdk
,
int
timeout_ms
)
:
trd
(
this
,
rtmp_sdk
,
timeout_ms
)
{
_consumer
=
consumer
;
rtmp
=
rtmp_sdk
;
recv_error_code
=
ERROR_SUCCESS
;
_consumer
=
NULL
;
...
...
@@ -237,11 +238,6 @@ void SrsQueueRecvThread::on_thread_stop()
rtmp
->
set_auto_response
(
true
);
}
void
SrsQueueRecvThread
::
set_consumer
(
SrsConsumer
*
consumer
)
{
_consumer
=
consumer
;
}
SrsPublishRecvThread
::
SrsPublishRecvThread
(
SrsRtmpServer
*
rtmp_sdk
,
SrsRequest
*
_req
,
int
mr_sock_fd
,
int
timeout_ms
,
...
...
trunk/src/app/srs_app_recv_thread.hpp
查看文件 @
a402ca7
...
...
@@ -113,9 +113,9 @@ private:
SrsRtmpServer
*
rtmp
;
// the recv thread error code.
int
recv_error_code
;
SrsConsumer
*
_consumer
;
SrsConsumer
*
_consumer
;
public
:
SrsQueueRecvThread
(
SrsRtmpServer
*
rtmp_sdk
,
int
timeout_ms
);
SrsQueueRecvThread
(
Srs
Consumer
*
consumer
,
Srs
RtmpServer
*
rtmp_sdk
,
int
timeout_ms
);
virtual
~
SrsQueueRecvThread
();
public
:
virtual
int
start
();
...
...
@@ -132,8 +132,6 @@ public:
public
:
virtual
void
on_thread_start
();
virtual
void
on_thread_stop
();
public
:
virtual
void
set_consumer
(
SrsConsumer
*
consumer
);
};
/**
...
...
trunk/src/app/srs_app_rtmp_conn.cpp
查看文件 @
a402ca7
...
...
@@ -560,9 +560,18 @@ int SrsRtmpConn::playing(SrsSource* source)
{
int
ret
=
ERROR_SUCCESS
;
// create consumer of souce.
SrsConsumer
*
consumer
=
NULL
;
if
((
ret
=
source
->
create_consumer
(
consumer
))
!=
ERROR_SUCCESS
)
{
srs_error
(
"create consumer failed. ret=%d"
,
ret
);
return
ret
;
}
SrsAutoFree
(
SrsConsumer
,
consumer
);
srs_verbose
(
"consumer created success."
);
// use isolate thread to recv,
// @see: https://github.com/winlinvip/simple-rtmp-server/issues/217
SrsQueueRecvThread
trd
(
rtmp
,
SRS_PERF_MW_SLEEP
);
SrsQueueRecvThread
trd
(
consumer
,
rtmp
,
SRS_PERF_MW_SLEEP
);
// start isolate recv thread.
if
((
ret
=
trd
.
start
())
!=
ERROR_SUCCESS
)
{
...
...
@@ -571,7 +580,7 @@ int SrsRtmpConn::playing(SrsSource* source)
}
// delivery messages for clients playing stream.
ret
=
do_playing
(
source
,
&
trd
);
ret
=
do_playing
(
source
,
consumer
,
&
trd
);
// stop isolate recv thread
trd
.
stop
();
...
...
@@ -584,27 +593,18 @@ int SrsRtmpConn::playing(SrsSource* source)
return
ret
;
}
int
SrsRtmpConn
::
do_playing
(
SrsSource
*
source
,
SrsQueueRecvThread
*
trd
)
int
SrsRtmpConn
::
do_playing
(
SrsSource
*
source
,
Srs
Consumer
*
consumer
,
Srs
QueueRecvThread
*
trd
)
{
int
ret
=
ERROR_SUCCESS
;
srs_assert
(
consumer
!=
NULL
);
if
((
ret
=
refer
->
check
(
req
->
pageUrl
,
_srs_config
->
get_refer_play
(
req
->
vhost
)))
!=
ERROR_SUCCESS
)
{
srs_error
(
"check play_refer failed. ret=%d"
,
ret
);
return
ret
;
}
srs_verbose
(
"check play_refer success."
);
SrsConsumer
*
consumer
=
NULL
;
if
((
ret
=
source
->
create_consumer
(
consumer
))
!=
ERROR_SUCCESS
)
{
srs_error
(
"create consumer failed. ret=%d"
,
ret
);
return
ret
;
}
srs_assert
(
consumer
!=
NULL
);
SrsAutoFree
(
SrsConsumer
,
consumer
);
trd
->
set_consumer
(
consumer
);
srs_verbose
(
"consumer created success."
);
// initialize other components
SrsPithyPrint
pithy_print
(
SRS_CONSTS_STAGE_PLAY_USER
);
SrsMessageArray
msgs
(
SRS_PERF_MW_MSGS
);
...
...
trunk/src/app/srs_app_rtmp_conn.hpp
查看文件 @
a402ca7
...
...
@@ -103,7 +103,7 @@ private:
virtual
int
stream_service_cycle
();
virtual
int
check_vhost
();
virtual
int
playing
(
SrsSource
*
source
);
virtual
int
do_playing
(
SrsSource
*
source
,
SrsQueueRecvThread
*
trd
);
virtual
int
do_playing
(
SrsSource
*
source
,
Srs
Consumer
*
consumer
,
Srs
QueueRecvThread
*
trd
);
virtual
int
fmle_publishing
(
SrsSource
*
source
);
virtual
int
flash_publishing
(
SrsSource
*
source
);
virtual
int
do_publishing
(
SrsSource
*
source
,
SrsPublishRecvThread
*
trd
);
...
...
请
注册
或
登录
后发表评论