diff --git a/daemon/src/video/video_decoder.cpp b/daemon/src/video/video_decoder.cpp index 4604c77ab15e11b50c0cd1c714a8e5388c1f02a3..d7ea420345d88b96c0de7e323c266ac7689108eb 100644 --- a/daemon/src/video/video_decoder.cpp +++ b/daemon/src/video/video_decoder.cpp @@ -194,10 +194,8 @@ int VideoDecoder::setupFromVideoData() } VideoDecoder::Status -VideoDecoder::decode(VideoFrame& result) +VideoDecoder::decode(VideoFrame& result, VideoPacket& video_packet) { - // Guarantee that we free the packet every iteration - VideoPacket video_packet; AVPacket *inpacket = video_packet.get(); int ret = av_read_frame(inputCtx_, inpacket); if (ret == AVERROR(EAGAIN)) { diff --git a/daemon/src/video/video_decoder.h b/daemon/src/video/video_decoder.h index d81f0052ab0eb1949d3d2ef9abf2243f6b79125a..69e092733a7978932e827960ebe0f771d1999d49 100644 --- a/daemon/src/video/video_decoder.h +++ b/daemon/src/video/video_decoder.h @@ -65,7 +65,7 @@ namespace sfl_video { int openInput(const std::string &source_str, const std::string &format_str); int setupFromVideoData(); - Status decode(VideoFrame&); + Status decode(VideoFrame&, VideoPacket&); Status flush(VideoFrame&); int getWidth() const; diff --git a/daemon/src/video/video_input.cpp b/daemon/src/video/video_input.cpp index 472634810ba1b996212b963d3e3b94d7da6434c9..42a2c6cd8800dc48aa12b44c6293c8b72135d92b 100644 --- a/daemon/src/video/video_input.cpp +++ b/daemon/src/video/video_input.cpp @@ -110,8 +110,8 @@ int VideoInput::interruptCb(void *data) bool VideoInput::captureFrame() { - VideoFrame& frame = getNewFrame(); - const auto ret = decoder_->decode(frame); + VideoPacket pkt; + const auto ret = decoder_->decode(getNewFrame(), pkt); switch (ret) { case VideoDecoder::Status::FrameFinished: diff --git a/daemon/src/video/video_receive_thread.cpp b/daemon/src/video/video_receive_thread.cpp index de5eb9084d8213786afca6e4788f9b199b2d4695..fe7b9c1671a8407e72450c52e8ce391143395065 100644 --- a/daemon/src/video/video_receive_thread.cpp +++ b/daemon/src/video/video_receive_thread.cpp @@ -185,7 +185,8 @@ void VideoReceiveThread::addIOContext(SocketPair &socketPair) bool VideoReceiveThread::decodeFrame() { - const auto ret = videoDecoder_->decode(getNewFrame()); + VideoPacket pkt; + const auto ret = videoDecoder_->decode(getNewFrame(), pkt); switch (ret) { case VideoDecoder::Status::FrameFinished: