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
8548753c
Commit
8548753c
authored
Jul 15, 2021
by
ziyue
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修正SDES rtcp对象命名
parent
c25da5a2
隐藏空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
33 行增加
和
33 行删除
+33
-33
src/Rtcp/Rtcp.cpp
+19
-19
src/Rtcp/Rtcp.h
+7
-7
src/Rtsp/RtspPlayer.cpp
+2
-2
src/Rtsp/RtspPusher.cpp
+2
-2
src/Rtsp/RtspSession.cpp
+2
-2
tests/test_rtcp.cpp
+1
-1
没有找到文件。
src/Rtcp/Rtcp.cpp
查看文件 @
8548753c
...
...
@@ -422,19 +422,19 @@ vector<ReportItem*> RtcpRR::getItemList() {
/////////////////////////////////////////////////////////////////////////////
void
Sdes
Item
::
net2Host
()
{
void
Sdes
Chunk
::
net2Host
()
{
ssrc
=
ntohl
(
ssrc
);
}
size_t
Sdes
Item
::
totalBytes
()
const
{
size_t
Sdes
Chunk
::
totalBytes
()
const
{
return
alignSize
(
minSize
()
+
txt_len
);
}
size_t
Sdes
Item
::
minSize
()
{
return
sizeof
(
Sdes
Item
)
-
sizeof
(
text
);
size_t
Sdes
Chunk
::
minSize
()
{
return
sizeof
(
Sdes
Chunk
)
-
sizeof
(
text
);
}
string
Sdes
Item
::
dumpString
()
const
{
string
Sdes
Chunk
::
dumpString
()
const
{
_StrPrinter
printer
;
printer
<<
"ssrc:"
<<
ssrc
<<
"
\r\n
"
;
printer
<<
"type:"
<<
sdesTypeToStr
((
SdesType
)
type
)
<<
"
\r\n
"
;
...
...
@@ -448,18 +448,18 @@ string SdesItem::dumpString() const{
std
::
shared_ptr
<
RtcpSdes
>
RtcpSdes
::
create
(
const
std
::
vector
<
string
>
&
item_text
)
{
size_t
item_total_size
=
0
;
for
(
auto
&
text
:
item_text
)
{
//统计所有Sdes
Item
对象占用的空间
item_total_size
+=
alignSize
(
Sdes
Item
::
minSize
()
+
(
0xFF
&
text
.
size
()));
//统计所有Sdes
Chunk
对象占用的空间
item_total_size
+=
alignSize
(
Sdes
Chunk
::
minSize
()
+
(
0xFF
&
text
.
size
()));
}
auto
real_size
=
sizeof
(
RtcpSdes
)
-
sizeof
(
Sdes
Item
)
+
item_total_size
;
auto
real_size
=
sizeof
(
RtcpSdes
)
-
sizeof
(
Sdes
Chunk
)
+
item_total_size
;
auto
bytes
=
alignSize
(
real_size
);
auto
ptr
=
(
RtcpSdes
*
)
new
char
[
bytes
];
auto
item_ptr
=
&
ptr
->
item
s
;
auto
item_ptr
=
&
ptr
->
chunk
s
;
for
(
auto
&
text
:
item_text
)
{
item_ptr
->
txt_len
=
(
0xFF
&
text
.
size
());
//确保赋值\0为RTCP_SDES_END
memcpy
(
item_ptr
->
text
,
text
.
data
(),
item_ptr
->
txt_len
+
1
);
item_ptr
=
(
Sdes
Item
*
)
((
char
*
)
item_ptr
+
item_ptr
->
totalBytes
());
item_ptr
=
(
Sdes
Chunk
*
)
((
char
*
)
item_ptr
+
item_ptr
->
totalBytes
());
}
setupHeader
(
ptr
,
RtcpType
::
RTCP_SDES
,
item_text
.
size
(),
bytes
);
...
...
@@ -472,7 +472,7 @@ std::shared_ptr<RtcpSdes> RtcpSdes::create(const std::vector<string> &item_text)
string
RtcpSdes
::
dumpString
()
const
{
_StrPrinter
printer
;
printer
<<
RtcpHeader
::
dumpHeader
();
auto
items
=
((
RtcpSdes
*
)
this
)
->
getItem
List
();
auto
items
=
((
RtcpSdes
*
)
this
)
->
getChunk
List
();
auto
i
=
0
;
for
(
auto
&
item
:
items
)
{
printer
<<
"---- item:"
<<
i
++
<<
" ----
\r\n
"
;
...
...
@@ -482,24 +482,24 @@ string RtcpSdes::dumpString() const {
}
void
RtcpSdes
::
net2Host
(
size_t
size
)
{
static
const
size_t
kMinSize
=
sizeof
(
RtcpSdes
)
-
sizeof
(
item
s
);
static
const
size_t
kMinSize
=
sizeof
(
RtcpSdes
)
-
sizeof
(
chunk
s
);
CHECK_MIN_SIZE
(
size
,
kMinSize
);
Sdes
Item
*
ptr
=
&
item
s
;
Sdes
Chunk
*
ptr
=
&
chunk
s
;
int
item_count
=
0
;
for
(
int
i
=
0
;
i
<
(
int
)
report_count
&&
(
char
*
)(
ptr
)
+
Sdes
Item
::
minSize
()
<=
(
char
*
)(
this
)
+
size
;
++
i
){
for
(
int
i
=
0
;
i
<
(
int
)
report_count
&&
(
char
*
)(
ptr
)
+
Sdes
Chunk
::
minSize
()
<=
(
char
*
)(
this
)
+
size
;
++
i
){
ptr
->
net2Host
();
ptr
=
(
Sdes
Item
*
)
((
char
*
)
ptr
+
ptr
->
totalBytes
());
ptr
=
(
Sdes
Chunk
*
)
((
char
*
)
ptr
+
ptr
->
totalBytes
());
++
item_count
;
}
CHECK_REPORT_COUNT
(
item_count
);
}
vector
<
Sdes
Item
*>
RtcpSdes
::
getItem
List
()
{
vector
<
Sdes
Item
*>
ret
;
Sdes
Item
*
ptr
=
&
item
s
;
vector
<
Sdes
Chunk
*>
RtcpSdes
::
getChunk
List
()
{
vector
<
Sdes
Chunk
*>
ret
;
Sdes
Chunk
*
ptr
=
&
chunk
s
;
for
(
int
i
=
0
;
i
<
(
int
)
report_count
;
++
i
)
{
ret
.
emplace_back
(
ptr
);
ptr
=
(
Sdes
Item
*
)
((
char
*
)
ptr
+
ptr
->
totalBytes
());
ptr
=
(
Sdes
Chunk
*
)
((
char
*
)
ptr
+
ptr
->
totalBytes
());
}
return
ret
;
}
...
...
src/Rtcp/Rtcp.h
查看文件 @
8548753c
...
...
@@ -477,8 +477,8 @@ SDES items 定义
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
*/
//Source description
item
class
Sdes
Item
{
//Source description
Chunk
class
Sdes
Chunk
{
public
:
friend
class
RtcpSdes
;
...
...
@@ -523,21 +523,21 @@ public:
friend
class
RtcpHeader
;
//可能有很多个
Sdes
Item
item
s
;
Sdes
Chunk
chunk
s
;
public
:
/**
* 创建SDES包,只赋值了RtcpHeader以及Sdes
Item
对象的length和text部分
* @param item_text Sdes
Item
列表,只赋值length和text部分
* 创建SDES包,只赋值了RtcpHeader以及Sdes
Chunk
对象的length和text部分
* @param item_text Sdes
Chunk
列表,只赋值length和text部分
* @return SDES包
*/
static
std
::
shared_ptr
<
RtcpSdes
>
create
(
const
std
::
vector
<
string
>
&
item_text
);
/**
* 获取Sdes
Item
对象指针列表
* 获取Sdes
Chunk
对象指针列表
* 使用net2Host转换成主机字节序后才可使用此函数
*/
vector
<
Sdes
Item
*>
getItem
List
();
vector
<
Sdes
Chunk
*>
getChunk
List
();
private
:
/**
...
...
src/Rtsp/RtspPlayer.cpp
查看文件 @
8548753c
...
...
@@ -633,8 +633,8 @@ void RtspPlayer::onBeforeRtpSorted(const RtpPacket::Ptr &rtp, int track_idx){
auto
ssrc
=
rtp
->
getSSRC
();
auto
rtcp
=
rtcp_ctx
->
createRtcpRR
(
ssrc
+
1
,
ssrc
);
auto
rtcp_sdes
=
RtcpSdes
::
create
({
SERVER_NAME
});
rtcp_sdes
->
item
s
.
type
=
(
uint8_t
)
SdesType
::
RTCP_SDES_CNAME
;
rtcp_sdes
->
item
s
.
ssrc
=
htonl
(
ssrc
);
rtcp_sdes
->
chunk
s
.
type
=
(
uint8_t
)
SdesType
::
RTCP_SDES_CNAME
;
rtcp_sdes
->
chunk
s
.
ssrc
=
htonl
(
ssrc
);
send_rtcp
(
this
,
track_idx
,
std
::
move
(
rtcp
));
send_rtcp
(
this
,
track_idx
,
RtcpHeader
::
toBuffer
(
rtcp_sdes
));
ticker
.
resetTime
();
...
...
src/Rtsp/RtspPusher.cpp
查看文件 @
8548753c
...
...
@@ -378,8 +378,8 @@ void RtspPusher::updateRtcpContext(const RtpPacket::Ptr &rtp){
auto
ssrc
=
rtp
->
getSSRC
();
auto
rtcp
=
rtcp_ctx
->
createRtcpSR
(
ssrc
+
1
);
auto
rtcp_sdes
=
RtcpSdes
::
create
({
SERVER_NAME
});
rtcp_sdes
->
item
s
.
type
=
(
uint8_t
)
SdesType
::
RTCP_SDES_CNAME
;
rtcp_sdes
->
item
s
.
ssrc
=
htonl
(
ssrc
);
rtcp_sdes
->
chunk
s
.
type
=
(
uint8_t
)
SdesType
::
RTCP_SDES_CNAME
;
rtcp_sdes
->
chunk
s
.
ssrc
=
htonl
(
ssrc
);
send_rtcp
(
this
,
track_index
,
std
::
move
(
rtcp
));
send_rtcp
(
this
,
track_index
,
RtcpHeader
::
toBuffer
(
rtcp_sdes
));
}
...
...
src/Rtsp/RtspSession.cpp
查看文件 @
8548753c
...
...
@@ -1153,8 +1153,8 @@ void RtspSession::updateRtcpContext(const RtpPacket::Ptr &rtp){
auto
ssrc
=
rtp
->
getSSRC
();
auto
rtcp
=
_push_src
?
rtcp_ctx
->
createRtcpRR
(
ssrc
+
1
,
ssrc
)
:
rtcp_ctx
->
createRtcpSR
(
ssrc
);
auto
rtcp_sdes
=
RtcpSdes
::
create
({
SERVER_NAME
});
rtcp_sdes
->
item
s
.
type
=
(
uint8_t
)
SdesType
::
RTCP_SDES_CNAME
;
rtcp_sdes
->
item
s
.
ssrc
=
htonl
(
ssrc
);
rtcp_sdes
->
chunk
s
.
type
=
(
uint8_t
)
SdesType
::
RTCP_SDES_CNAME
;
rtcp_sdes
->
chunk
s
.
ssrc
=
htonl
(
ssrc
);
send_rtcp
(
this
,
track_index
,
std
::
move
(
rtcp
));
send_rtcp
(
this
,
track_index
,
RtcpHeader
::
toBuffer
(
rtcp_sdes
));
}
...
...
tests/test_rtcp.cpp
查看文件 @
8548753c
...
...
@@ -67,7 +67,7 @@ std::shared_ptr<Buffer> makeRtcpRR() {
std
::
shared_ptr
<
Buffer
>
makeRtcpSDES
()
{
auto
rtcp
=
RtcpSdes
::
create
({
"zlmediakit"
,
""
,
"https://github.com/xia-chu/ZLMediaKit"
,
"1213642868@qq.com"
,
"123456789012345678"
});
auto
i
=
5
;
auto
items
=
rtcp
->
get
Item
List
();
auto
items
=
rtcp
->
get
Chunk
List
();
items
[
0
]
->
type
=
(
uint8_t
)
SdesType
::
RTCP_SDES_CNAME
;
items
[
0
]
->
ssrc
=
htonl
(
i
++
);
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论