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
3 years ago
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
;
}
...
...
This diff is collapsed.
Click to expand it.
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
:
/**
...
...
This diff is collapsed.
Click to expand it.
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
();
...
...
This diff is collapsed.
Click to expand it.
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
));
}
...
...
This diff is collapsed.
Click to expand it.
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
));
}
...
...
This diff is collapsed.
Click to expand it.
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
++
);
...
...
This diff is collapsed.
Click to expand it.
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论