diff --git a/src/Rtmp/Rtmp.h b/src/Rtmp/Rtmp.h index 604beff9..879987be 100644 --- a/src/Rtmp/Rtmp.h +++ b/src/Rtmp/Rtmp.h @@ -139,6 +139,24 @@ public: uint32_t streamId; uint32_t chunkId; std::string strBuf; + +public: + RtmpPacket() = default; + RtmpPacket(const RtmpPacket &that) = default; + RtmpPacket &operator=(const RtmpPacket &that) = default; + RtmpPacket &operator=(RtmpPacket &&that) = default; + + RtmpPacket(RtmpPacket &&that){ + typeId = that.typeId; + bodySize = that.bodySize; + timeStamp = that.timeStamp; + hasAbsStamp = that.hasAbsStamp; + hasExtStamp = that.hasExtStamp; + deltaStamp = that.deltaStamp; + streamId = that.streamId; + chunkId = that.chunkId; + strBuf = std::move(that.strBuf); + } bool isVideoKeyFrame() const { return typeId == MSG_VIDEO && (uint8_t) strBuf[0] >> 4 == FLV_KEY_FRAME && (uint8_t) strBuf[1] == 1; diff --git a/src/Rtmp/RtmpPlayer.cpp b/src/Rtmp/RtmpPlayer.cpp index 9de1c1c2..b699506c 100644 --- a/src/Rtmp/RtmpPlayer.cpp +++ b/src/Rtmp/RtmpPlayer.cpp @@ -311,7 +311,7 @@ void RtmpPlayer::onRtmpChunk(RtmpPacket &chunkData) { if (_aNowStampTicker[idx].elapsedTime() > 500) { _aiNowStamp[idx] = chunkData.timeStamp; } - _onMediaData(std::make_shared(chunkData)); + _onMediaData(std::make_shared(std::move(chunkData))); } break; default: diff --git a/src/Rtmp/RtmpSession.cpp b/src/Rtmp/RtmpSession.cpp index f5d8277f..5274b947 100644 --- a/src/Rtmp/RtmpSession.cpp +++ b/src/Rtmp/RtmpSession.cpp @@ -522,7 +522,7 @@ void RtmpSession::onRtmpChunk(RtmpPacket &chunkData) { if(rtmp_modify_stamp){ chunkData.timeStamp = _stampTicker[chunkData.typeId % 2].elapsedTime(); } - _pPublisherSrc->onWrite(std::make_shared(chunkData)); + _pPublisherSrc->onWrite(std::make_shared(std::move(chunkData))); } break; default: