From 152d36f8ed7fb27314665c3c9604fb6ce27446c6 Mon Sep 17 00:00:00 2001 From: Waken Date: Wed, 13 Dec 2023 17:07:02 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=B8=80=E5=A4=84frame?= =?UTF-8?q?=E4=B8=BA=E7=A9=BA=E5=AF=BC=E8=87=B4=E7=9A=84=E5=B4=A9=E6=BA=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Extension/Factory.cpp | 3 +++ src/Rtp/Decoder.cpp | 8 +++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/Extension/Factory.cpp b/src/Extension/Factory.cpp index f69eead7..9904a784 100644 --- a/src/Extension/Factory.cpp +++ b/src/Extension/Factory.cpp @@ -205,6 +205,9 @@ Frame::Ptr Factory::getFrameFromPtr(CodecId codec, const char *data, size_t byte Frame::Ptr Factory::getFrameFromBuffer(CodecId codec, Buffer::Ptr data, uint64_t dts, uint64_t pts) { auto frame = Factory::getFrameFromPtr(codec, data->data(), data->size(), dts, pts); + if(!frame){ + return nullptr; + } return std::make_shared(frame, false, std::move(data)); } diff --git a/src/Rtp/Decoder.cpp b/src/Rtp/Decoder.cpp index 7c20514d..e4df841b 100644 --- a/src/Rtp/Decoder.cpp +++ b/src/Rtp/Decoder.cpp @@ -115,9 +115,11 @@ void DecoderImp::onDecode(int stream, int codecid, int flags, int64_t pts, int64 onFrame(stream, frame); return; } - ref.second.inputFrame(frame, [&,codec](uint64_t dts, uint64_t pts, const Buffer::Ptr &buffer, bool) { - onFrame(stream, Factory::getFrameFromBuffer(codec, buffer, dts, pts)); - }); + if(ref.first){ + ref.second.inputFrame(frame, [&](uint64_t dts, uint64_t pts, const Buffer::Ptr &buffer, bool) { + onFrame(stream, Factory::getFrameFromBuffer(codec, buffer, dts, pts)); + }); + } } #else void DecoderImp::onDecode(int stream,int codecid,int flags,int64_t pts,int64_t dts,const void *data,size_t bytes) {}