修复一处frame为空导致的崩溃

This commit is contained in:
Waken 2023-12-13 17:07:02 +08:00
parent 958c8b7166
commit 152d36f8ed
2 changed files with 8 additions and 3 deletions

View File

@ -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) { 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); auto frame = Factory::getFrameFromPtr(codec, data->data(), data->size(), dts, pts);
if(!frame){
return nullptr;
}
return std::make_shared<FrameCacheAble>(frame, false, std::move(data)); return std::make_shared<FrameCacheAble>(frame, false, std::move(data));
} }

View File

@ -115,9 +115,11 @@ void DecoderImp::onDecode(int stream, int codecid, int flags, int64_t pts, int64
onFrame(stream, frame); onFrame(stream, frame);
return; return;
} }
ref.second.inputFrame(frame, [&,codec](uint64_t dts, uint64_t pts, const Buffer::Ptr &buffer, bool) { 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)); onFrame(stream, Factory::getFrameFromBuffer(codec, buffer, dts, pts));
}); });
}
} }
#else #else
void DecoderImp::onDecode(int stream,int codecid,int flags,int64_t pts,int64_t dts,const void *data,size_t bytes) {} void DecoderImp::onDecode(int stream,int codecid,int flags,int64_t pts,int64_t dts,const void *data,size_t bytes) {}