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
57c5d296
Commit
57c5d296
authored
5 years ago
by
xiongziliang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
优化DevChannel内存拷贝问题
parent
9cdbe4c4
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
27 行增加
和
7 行删除
+27
-7
src/Common/Device.cpp
+14
-2
src/Extension/AAC.h
+0
-1
src/Extension/AACRtp.cpp
+0
-1
src/Player/PlayerProxy.cpp
+13
-3
没有找到文件。
src/Common/Device.cpp
查看文件 @
57c5d296
...
@@ -104,7 +104,13 @@ void DevChannel::inputH264(const char* pcData, int iDataLen, uint32_t dts,uint32
...
@@ -104,7 +104,13 @@ void DevChannel::inputH264(const char* pcData, int iDataLen, uint32_t dts,uint32
}
else
{
}
else
{
prefixeSize
=
0
;
prefixeSize
=
0
;
}
}
inputFrame
(
std
::
make_shared
<
H264FrameNoCacheAble
>
((
char
*
)
pcData
,
iDataLen
,
dts
,
pts
,
prefixeSize
));
H264Frame
::
Ptr
frame
=
std
::
make_shared
<
H264Frame
>
();
frame
->
timeStamp
=
dts
;
frame
->
ptsStamp
=
pts
;
frame
->
buffer
.
assign
(
"
\x00\x00\x00\x01
"
,
4
);
frame
->
buffer
.
append
(
pcData
+
prefixeSize
,
iDataLen
-
prefixeSize
);
inputFrame
(
frame
);
}
}
void
DevChannel
::
inputH265
(
const
char
*
pcData
,
int
iDataLen
,
uint32_t
dts
,
uint32_t
pts
)
{
void
DevChannel
::
inputH265
(
const
char
*
pcData
,
int
iDataLen
,
uint32_t
dts
,
uint32_t
pts
)
{
...
@@ -122,7 +128,13 @@ void DevChannel::inputH265(const char* pcData, int iDataLen, uint32_t dts,uint32
...
@@ -122,7 +128,13 @@ void DevChannel::inputH265(const char* pcData, int iDataLen, uint32_t dts,uint32
}
else
{
}
else
{
prefixeSize
=
0
;
prefixeSize
=
0
;
}
}
inputFrame
(
std
::
make_shared
<
H265FrameNoCacheAble
>
((
char
*
)
pcData
,
iDataLen
,
dts
,
pts
,
prefixeSize
));
H265Frame
::
Ptr
frame
=
std
::
make_shared
<
H265Frame
>
();
frame
->
timeStamp
=
dts
;
frame
->
ptsStamp
=
pts
;
frame
->
buffer
.
assign
(
"
\x00\x00\x00\x01
"
,
4
);
frame
->
buffer
.
append
(
pcData
+
prefixeSize
,
iDataLen
-
prefixeSize
);
inputFrame
(
frame
);
}
}
void
DevChannel
::
inputAAC
(
const
char
*
pcData
,
int
iDataLen
,
uint32_t
uiStamp
,
bool
withAdtsHeader
)
{
void
DevChannel
::
inputAAC
(
const
char
*
pcData
,
int
iDataLen
,
uint32_t
uiStamp
,
bool
withAdtsHeader
)
{
...
...
This diff is collapsed.
Click to expand it.
src/Extension/AAC.h
查看文件 @
57c5d296
...
@@ -104,7 +104,6 @@ public:
...
@@ -104,7 +104,6 @@ public:
//表示说ADTS帧中有一个AAC数据块并不是说没有。(一个AAC原始帧包含一段时间内1024个采样及相关数据)
//表示说ADTS帧中有一个AAC数据块并不是说没有。(一个AAC原始帧包含一段时间内1024个采样及相关数据)
unsigned
int
no_raw_data_blocks_in_frame
;
//2 uimsfb
unsigned
int
no_raw_data_blocks_in_frame
;
//2 uimsfb
unsigned
char
buffer
[
2
*
1024
+
7
];
unsigned
char
buffer
[
2
*
1024
+
7
];
uint16_t
sequence
;
uint32_t
timeStamp
;
uint32_t
timeStamp
;
uint32_t
iPrefixSize
=
7
;
uint32_t
iPrefixSize
=
7
;
}
;
}
;
...
...
This diff is collapsed.
Click to expand it.
src/Extension/AACRtp.cpp
查看文件 @
57c5d296
...
@@ -149,7 +149,6 @@ bool AACRtpDecoder::inputRtp(const RtpPacket::Ptr &rtppack, bool key_pos) {
...
@@ -149,7 +149,6 @@ bool AACRtpDecoder::inputRtp(const RtpPacket::Ptr &rtppack, bool key_pos) {
memcpy
(
_adts
->
buffer
+
_adts
->
aac_frame_length
,
rtp_packet_payload
+
next_aac_payload_offset
,
cur_aac_payload_len
);
memcpy
(
_adts
->
buffer
+
_adts
->
aac_frame_length
,
rtp_packet_payload
+
next_aac_payload_offset
,
cur_aac_payload_len
);
_adts
->
aac_frame_length
+=
(
cur_aac_payload_len
);
_adts
->
aac_frame_length
+=
(
cur_aac_payload_len
);
if
(
rtppack
->
mark
==
true
)
{
if
(
rtppack
->
mark
==
true
)
{
_adts
->
sequence
=
rtppack
->
sequence
;
_adts
->
timeStamp
=
rtppack
->
timeStamp
;
_adts
->
timeStamp
=
rtppack
->
timeStamp
;
writeAdtsHeader
(
*
_adts
,
_adts
->
buffer
);
writeAdtsHeader
(
*
_adts
,
_adts
->
buffer
);
onGetAAC
(
_adts
);
onGetAAC
(
_adts
);
...
...
This diff is collapsed.
Click to expand it.
src/Player/PlayerProxy.cpp
查看文件 @
57c5d296
...
@@ -222,13 +222,23 @@ public:
...
@@ -222,13 +222,23 @@ public:
auto
iAudioIndex
=
frame
->
stamp
()
/
MUTE_ADTS_DATA_MS
;
auto
iAudioIndex
=
frame
->
stamp
()
/
MUTE_ADTS_DATA_MS
;
if
(
_iAudioIndex
!=
iAudioIndex
){
if
(
_iAudioIndex
!=
iAudioIndex
){
_iAudioIndex
=
iAudioIndex
;
_iAudioIndex
=
iAudioIndex
;
auto
aacFrame
=
std
::
make_shared
<
AACFrameNoCacheAble
>
((
char
*
)
MUTE_ADTS_DATA
,
auto
aacFrame
=
std
::
make_shared
<
AACFrameCacheAble
>
((
char
*
)
MUTE_ADTS_DATA
,
MUTE_ADTS_DATA_LEN
,
_iAudioIndex
*
MUTE_ADTS_DATA_MS
);
MUTE_ADTS_DATA_LEN
,
_iAudioIndex
*
MUTE_ADTS_DATA_MS
);
FrameDispatcher
::
inputFrame
(
aacFrame
);
FrameDispatcher
::
inputFrame
(
aacFrame
);
}
}
}
}
}
}
private
:
class
AACFrameCacheAble
:
public
AACFrameNoCacheAble
{
public
:
template
<
typename
...
ARGS
>
AACFrameCacheAble
(
ARGS
&&
...
args
)
:
AACFrameNoCacheAble
(
std
::
forward
<
ARGS
>
(
args
)...){};
virtual
~
AACFrameCacheAble
()
=
default
;
bool
cacheAble
()
const
override
{
return
true
;
}
};
private
:
private
:
int
_iAudioIndex
=
0
;
int
_iAudioIndex
=
0
;
};
};
...
...
This diff is collapsed.
Click to expand it.
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论