mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2026-07-04 01:37:33 +08:00
使用临时变量和std::move减少智能指针的拷贝构造
This commit is contained in:
@@ -156,7 +156,7 @@ public:
|
||||
* @param rtp rtp包
|
||||
* @param keyPos 该包是否为关键帧的第一个包
|
||||
*/
|
||||
void onWrite(const RtpPacket::Ptr &rtp, bool keyPos) override {
|
||||
void onWrite(RtpPacket::Ptr rtp, bool keyPos) override {
|
||||
_speed += rtp->size();
|
||||
assert(rtp->type >= 0 && rtp->type < TrackMax);
|
||||
auto track = _tracks[rtp->type];
|
||||
@@ -182,7 +182,7 @@ public:
|
||||
regist();
|
||||
}
|
||||
}
|
||||
PacketCache<RtpPacket>::inputPacket(rtp->type == TrackVideo, rtp, keyPos);
|
||||
PacketCache<RtpPacket>::inputPacket(rtp->type == TrackVideo, std::move(rtp), keyPos);
|
||||
}
|
||||
|
||||
void clearCache() override{
|
||||
@@ -196,9 +196,9 @@ private:
|
||||
* @param rtp_list rtp包列表
|
||||
* @param key_pos 是否包含关键帧
|
||||
*/
|
||||
void onFlush(std::shared_ptr<List<RtpPacket::Ptr> > &rtp_list, bool key_pos) override {
|
||||
void onFlush(std::shared_ptr<List<RtpPacket::Ptr> > rtp_list, bool key_pos) override {
|
||||
//如果不存在视频,那么就没有存在GOP缓存的意义,所以is_key一直为true确保一直清空GOP缓存
|
||||
_ring->write(rtp_list, _have_video ? key_pos : true);
|
||||
_ring->write(std::move(rtp_list), _have_video ? key_pos : true);
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
@@ -47,7 +47,7 @@ public:
|
||||
/**
|
||||
* 输入rtp并解析
|
||||
*/
|
||||
void onWrite(const RtpPacket::Ptr &rtp, bool key_pos) override {
|
||||
void onWrite(RtpPacket::Ptr rtp, bool key_pos) override {
|
||||
if (_all_track_ready && !_muxer->isEnabled()) {
|
||||
//获取到所有Track后,并且未开启转协议,那么不需要解复用rtp
|
||||
//在关闭rtp解复用后,无法知道是否为关键帧,这样会导致无法秒开,或者开播花屏
|
||||
@@ -56,7 +56,7 @@ public:
|
||||
//需要解复用rtp
|
||||
key_pos = _demuxer->inputRtp(rtp);
|
||||
}
|
||||
RtspMediaSource::onWrite(rtp, key_pos);
|
||||
RtspMediaSource::onWrite(std::move(rtp), key_pos);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user