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
e5ca3aa0
Commit
e5ca3aa0
authored
Jun 07, 2022
by
ziyue
Browse files
Options
Browse Files
Download
Plain Diff
格式化代码
parents
e415230e
020b8b85
隐藏空白字符变更
内嵌
并排
正在显示
10 个修改的文件
包含
45 行增加
和
54 行删除
+45
-54
srt/Common.hpp
+11
-1
srt/Packet.cpp
+8
-24
srt/Packet.hpp
+4
-5
srt/PacketSendQueue.cpp
+1
-1
srt/PacketSendQueue.hpp
+0
-1
srt/SrtTransport.cpp
+2
-3
srt/SrtTransport.hpp
+1
-1
srt/SrtTransportImp.cpp
+13
-13
srt/SrtTransportImp.hpp
+1
-3
srt/Statistic.hpp
+4
-2
没有找到文件。
srt/Common.hpp
查看文件 @
e5ca3aa0
#
ifndef
ZLMEDIAKIT_SRT_COMMON_H
#define ZLMEDIAKIT_SRT_COMMON_H
#if defined(_WIN32)
#include <winsock2.h>
#include <ws2tcpip.h>
#include <Iphlpapi.h>
#pragma comment (lib, "Ws2_32.lib")
#pragma comment(lib,"Iphlpapi.lib")
#else
#include <netdb.h>
#include <sys/socket.h>
#endif // defined(_WIN32)
#include <chrono>
namespace
SRT
{
using
SteadyClock
=
std
::
chrono
::
steady_clock
;
using
TimePoint
=
std
::
chrono
::
time_point
<
SteadyClock
>
;
...
...
srt/Packet.cpp
查看文件 @
e5ca3aa0
#if defined(_WIN32)
#include <winsock2.h>
#include <ws2tcpip.h>
#include <Iphlpapi.h>
#pragma comment (lib, "Ws2_32.lib")
#pragma comment(lib,"Iphlpapi.lib")
#else
#include <sys/socket.h>
#include <netdb.h>
#endif // defined(_WIN32)
#include <atomic>
#include "Util/logger.h"
#include "Util/MD5.h"
#include "Util/logger.h"
#include <atomic>
#include "Packet.hpp"
namespace
SRT
{
...
...
@@ -342,7 +331,6 @@ size_t HandshakePacket::getExtSize() {
}
return
size
;
}
bool
HandshakePacket
::
storeToData
()
{
_data
=
BufferRaw
::
create
();
for
(
auto
ex
:
ext_list
)
{
...
...
@@ -445,15 +433,11 @@ uint32_t HandshakePacket::generateSynCookie(
// SYN cookie
char
clienthost
[
NI_MAXHOST
];
char
clientport
[
NI_MAXSERV
];
getnameinfo
((
struct
sockaddr
*
)
addr
,
sizeof
(
struct
sockaddr_storage
),
clienthost
,
sizeof
(
clienthost
),
clientport
,
sizeof
(
clientport
),
NI_NUMERICHOST
|
NI_NUMERICSERV
);
int64_t
timestamp
=
(
DurationCountMicroseconds
(
SteadyClock
::
now
()
-
ts
)
/
60000000
)
+
distractor
.
load
()
+
correction
;
// secret changes every one minute
getnameinfo
(
(
struct
sockaddr
*
)
addr
,
sizeof
(
struct
sockaddr_storage
),
clienthost
,
sizeof
(
clienthost
),
clientport
,
sizeof
(
clientport
),
NI_NUMERICHOST
|
NI_NUMERICSERV
);
int64_t
timestamp
=
(
DurationCountMicroseconds
(
SteadyClock
::
now
()
-
ts
)
/
60000000
)
+
distractor
.
load
()
+
correction
;
// secret changes every one minute
std
::
stringstream
cookiestr
;
cookiestr
<<
clienthost
<<
":"
<<
clientport
<<
":"
<<
timestamp
;
union
{
...
...
srt/Packet.hpp
查看文件 @
e5ca3aa0
...
...
@@ -63,8 +63,6 @@ public:
uint32_t
timestamp
;
uint32_t
dst_socket_id
;
TimePoint
get_ts
;
// recv or send time
private
:
BufferRaw
::
Ptr
_data
;
};
...
...
@@ -189,7 +187,8 @@ public:
static
bool
isHandshakePacket
(
uint8_t
*
buf
,
size_t
len
);
static
uint32_t
getHandshakeType
(
uint8_t
*
buf
,
size_t
len
);
static
uint32_t
getSynCookie
(
uint8_t
*
buf
,
size_t
len
);
static
uint32_t
generateSynCookie
(
struct
sockaddr_storage
*
addr
,
TimePoint
ts
,
uint32_t
current_cookie
=
0
,
int
correction
=
0
);
static
uint32_t
generateSynCookie
(
struct
sockaddr_storage
*
addr
,
TimePoint
ts
,
uint32_t
current_cookie
=
0
,
int
correction
=
0
);
void
assignPeerIP
(
struct
sockaddr_storage
*
addr
);
///////ControlPacket override///////
...
...
@@ -358,4 +357,4 @@ public:
}
// namespace SRT
#endif //ZLMEDIAKIT_SRT_PACKET_H
\ No newline at end of file
#endif // ZLMEDIAKIT_SRT_PACKET_H
\ No newline at end of file
srt/PacketSendQueue.cpp
查看文件 @
e5ca3aa0
...
...
@@ -68,7 +68,7 @@ uint32_t PacketSendQueue::timeLatency() {
}
else
{
dur
=
first
-
last
;
}
if
(
dur
>
(
0x01
<<
31
))
{
if
(
dur
>
(
(
uint32_t
)
0x01
<<
31
))
{
TraceL
<<
"cycle timeLatency "
<<
dur
;
dur
=
0xffffffff
-
dur
;
}
...
...
srt/PacketSendQueue.hpp
查看文件 @
e5ca3aa0
...
...
@@ -25,7 +25,6 @@ public:
private
:
uint32_t
timeLatency
();
private
:
uint32_t
_pkt_cap
;
uint32_t
_pkt_latency
;
...
...
srt/SrtTransport.cpp
查看文件 @
e5ca3aa0
#
include
<
stdlib
.
h
>
#include "Util/onceToken.h"
#include "Ack.hpp"
#include "Packet.hpp"
#include "SrtTransport.hpp"
#include "Util/onceToken.h"
namespace
SRT
{
#define SRT_FIELD "srt."
...
...
@@ -13,7 +14,6 @@ const std::string kPort = SRT_FIELD "port";
const
std
::
string
kLatencyMul
=
SRT_FIELD
"latencyMul"
;
static
std
::
atomic
<
uint32_t
>
s_srt_socket_id_generate
{
125
};
//////////// SrtTransport //////////////////////////
SrtTransport
::
SrtTransport
(
const
EventPoller
::
Ptr
&
poller
)
:
_poller
(
poller
)
{
...
...
@@ -432,7 +432,6 @@ void SrtTransport::handleDataPacket(uint8_t *buf, int len, struct sockaddr_stora
DataPacket
::
Ptr
pkt
=
std
::
make_shared
<
DataPacket
>
();
pkt
->
loadFromData
(
buf
,
len
);
pkt
->
get_ts
=
_now
;
std
::
list
<
DataPacket
::
Ptr
>
list
;
//TraceL<<" seq="<< pkt->packet_seq_number<<" ts="<<pkt->timestamp<<" size="<<pkt->payloadSize()<<\
//" PP="<<(int)pkt->PP<<" O="<<(int)pkt->O<<" kK="<<(int)pkt->KK<<" R="<<(int)pkt->R;
...
...
srt/SrtTransport.hpp
查看文件 @
e5ca3aa0
...
...
@@ -45,7 +45,7 @@ public:
virtual
void
onSendTSData
(
const
Buffer
::
Ptr
&
buffer
,
bool
flush
);
std
::
string
getIdentifier
();
void
unregisterSelf
();
void
unregisterSelf
();
void
unregisterSelfHandshake
();
protected
:
...
...
srt/SrtTransportImp.cpp
查看文件 @
e5ca3aa0
...
...
@@ -9,16 +9,15 @@ SrtTransportImp::SrtTransportImp(const EventPoller::Ptr &poller) : SrtTransport(
SrtTransportImp
::~
SrtTransportImp
()
{
InfoP
(
this
);
uint64_t
duration
=
_alive_ticker
.
createdTime
()
/
1000
;
WarnP
(
this
)
<<
(
_is_pusher
?
"srt 推流器("
:
"srt 播放器("
)
<<
_media_info
.
_vhost
<<
"/"
<<
_media_info
.
_app
<<
"/"
<<
_media_info
.
_streamid
<<
")断开,耗时(s):"
<<
duration
;
WarnP
(
this
)
<<
(
_is_pusher
?
"srt 推流器("
:
"srt 播放器("
)
<<
_media_info
.
_vhost
<<
"/"
<<
_media_info
.
_app
<<
"/"
<<
_media_info
.
_streamid
<<
")断开,耗时(s):"
<<
duration
;
//流量统计事件广播
GET_CONFIG
(
uint32_t
,
iFlowThreshold
,
General
::
kFlowThreshold
);
if
(
_total_bytes
>=
iFlowThreshold
*
1024
)
{
NoticeCenter
::
Instance
().
emitEvent
(
Broadcast
::
kBroadcastFlowReport
,
_media_info
,
_total_bytes
,
duration
,
false
,
static_cast
<
SockInfo
&>
(
*
this
));
NoticeCenter
::
Instance
().
emitEvent
(
Broadcast
::
kBroadcastFlowReport
,
_media_info
,
_total_bytes
,
duration
,
false
,
static_cast
<
SockInfo
&>
(
*
this
));
}
}
...
...
@@ -71,7 +70,6 @@ bool SrtTransportImp::close(mediakit::MediaSource &sender, bool force) {
<<
sender
.
getVhost
()
<<
"/"
<<
sender
.
getApp
()
<<
"/"
<<
sender
.
getId
()
<<
" "
<<
force
;
weak_ptr
<
SrtTransportImp
>
weak_self
=
static_pointer_cast
<
SrtTransportImp
>
(
shared_from_this
());
getPoller
()
->
async
([
weak_self
,
err
]()
{
auto
strong_self
=
weak_self
.
lock
();
...
...
@@ -112,10 +110,9 @@ void SrtTransportImp::emitOnPublish() {
return
;
}
if
(
err
.
empty
())
{
strong_self
->
_muxer
=
std
::
make_shared
<
MultiMediaSourceMuxer
>
(
strong_self
->
_media_info
.
_vhost
,
strong_self
->
_media_info
.
_app
,
strong_self
->
_media_info
.
_streamid
,
0.0
f
,
option
);
strong_self
->
_muxer
=
std
::
make_shared
<
MultiMediaSourceMuxer
>
(
strong_self
->
_media_info
.
_vhost
,
strong_self
->
_media_info
.
_app
,
strong_self
->
_media_info
.
_streamid
,
0.0
f
,
option
);
strong_self
->
_muxer
->
setMediaListener
(
strong_self
);
strong_self
->
doCachedFunc
();
InfoP
(
strong_self
)
<<
"允许 srt 推流"
;
...
...
@@ -126,7 +123,9 @@ void SrtTransportImp::emitOnPublish() {
};
//触发推流鉴权事件
auto
flag
=
NoticeCenter
::
Instance
().
emitEvent
(
Broadcast
::
kBroadcastMediaPublish
,
MediaOriginType
::
srt_push
,
_media_info
,
invoker
,
static_cast
<
SockInfo
&>
(
*
this
));
auto
flag
=
NoticeCenter
::
Instance
().
emitEvent
(
Broadcast
::
kBroadcastMediaPublish
,
MediaOriginType
::
srt_push
,
_media_info
,
invoker
,
static_cast
<
SockInfo
&>
(
*
this
));
if
(
!
flag
)
{
//该事件无人监听,默认不鉴权
invoker
(
""
,
ProtocolOption
());
...
...
@@ -149,7 +148,8 @@ void SrtTransportImp::emitOnPlay() {
});
};
auto
flag
=
NoticeCenter
::
Instance
().
emitEvent
(
Broadcast
::
kBroadcastMediaPlayed
,
_media_info
,
invoker
,
static_cast
<
SockInfo
&>
(
*
this
));
auto
flag
=
NoticeCenter
::
Instance
().
emitEvent
(
Broadcast
::
kBroadcastMediaPlayed
,
_media_info
,
invoker
,
static_cast
<
SockInfo
&>
(
*
this
));
if
(
!
flag
)
{
doPlay
();
}
...
...
srt/SrtTransportImp.hpp
查看文件 @
e5ca3aa0
...
...
@@ -12,7 +12,6 @@ namespace SRT {
using
namespace
std
;
using
namespace
toolkit
;
using
namespace
mediakit
;
class
SrtTransportImp
:
public
SrtTransport
,
public
toolkit
::
SockInfo
...
...
@@ -27,7 +26,6 @@ public:
_total_bytes
+=
len
;
}
void
onSendTSData
(
const
Buffer
::
Ptr
&
buffer
,
bool
flush
)
override
{
SrtTransport
::
onSendTSData
(
buffer
,
flush
);
}
/// SockInfo override
std
::
string
get_local_ip
()
override
;
uint16_t
get_local_port
()
override
;
...
...
@@ -86,7 +84,7 @@ private:
MultiMediaSourceMuxer
::
Ptr
_muxer
;
DecoderImp
::
Ptr
_decoder
;
std
::
recursive_mutex
_func_mtx
;
std
::
deque
<
std
::
function
<
void
()
>
>
_cached_func
;
std
::
deque
<
std
::
function
<
void
()
>>
_cached_func
;
};
}
// namespace SRT
...
...
srt/Statistic.hpp
查看文件 @
e5ca3aa0
...
...
@@ -9,7 +9,8 @@ namespace SRT {
class
PacketRecvRateContext
{
public
:
PacketRecvRateContext
(
TimePoint
start
)
:
_start
(
start
)
{};
PacketRecvRateContext
(
TimePoint
start
)
:
_start
(
start
)
{};
~
PacketRecvRateContext
()
=
default
;
void
inputPacket
(
TimePoint
&
ts
);
uint32_t
getPacketRecvRate
();
...
...
@@ -33,7 +34,8 @@ private:
class
RecvRateContext
{
public
:
RecvRateContext
(
TimePoint
start
)
:
_start
(
start
)
{};
RecvRateContext
(
TimePoint
start
)
:
_start
(
start
)
{};
~
RecvRateContext
()
=
default
;
void
inputPacket
(
TimePoint
&
ts
,
size_t
size
);
uint32_t
getRecvRate
();
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论