使用临时变量和std::move减少智能指针的拷贝构造

This commit is contained in:
xiongziliang
2020-10-10 18:23:25 +08:00
parent 83a24a5863
commit dfaa8b540c
12 changed files with 31 additions and 30 deletions

View File

@@ -118,7 +118,7 @@ public:
* 输入rtmp包
* @param pkt rtmp包
*/
void onWrite(const RtmpPacket::Ptr &pkt, bool = true) override {
void onWrite(RtmpPacket::Ptr pkt, bool = true) override {
_speed += pkt->size();
//保存当前时间戳
switch (pkt->type_id) {
@@ -152,7 +152,8 @@ public:
regist();
}
}
PacketCache<RtmpPacket>::inputPacket(pkt->type_id == MSG_VIDEO, pkt, pkt->isVideoKeyFrame());
bool key = pkt->isVideoKeyFrame();
PacketCache<RtmpPacket>::inputPacket(pkt->type_id == MSG_VIDEO, std::move(pkt), key);
}
/**
@@ -186,9 +187,9 @@ private:
* @param rtmp_list rtmp包列表
* @param key_pos 是否包含关键帧
*/
void onFlush(std::shared_ptr<List<RtmpPacket::Ptr> > &rtmp_list, bool key_pos) override {
void onFlush(std::shared_ptr<List<RtmpPacket::Ptr> > rtmp_list, bool key_pos) override {
//如果不存在视频那么就没有存在GOP缓存的意义所以is_key一直为true确保一直清空GOP缓存
_ring->write(rtmp_list, _have_video ? key_pos : true);
_ring->write(std::move(rtmp_list), _have_video ? key_pos : true);
}
private: