diff --git a/ext-codec/H264.cpp b/ext-codec/H264.cpp index 72605812..4fc5423f 100644 --- a/ext-codec/H264.cpp +++ b/ext-codec/H264.cpp @@ -157,7 +157,6 @@ bool H264Track::inputFrame(const Frame::Ptr &frame) { // AUD帧丢弃 return false; } - if ((type == H264Frame::NAL_B_P || type == H264Frame::NAL_IDR) && ready()) { return inputFrame_l(frame); } diff --git a/src/Extension/Frame.cpp b/src/Extension/Frame.cpp index 899c0e9f..63891ce6 100644 --- a/src/Extension/Frame.cpp +++ b/src/Extension/Frame.cpp @@ -205,11 +205,7 @@ bool FrameMerger::willFlush(const Frame::Ptr &frame) const{ case mp4_nal_size: case h264_prefix: { - if (frame->dropAble() && !_have_config_frame) { - // 遇到SEI帧且未缓存配置帧,flush之前的帧 - return true; - } - if (!_have_decode_able_frame && !_have_drop_able_frame) { + if (!_have_decode_able_frame) { // 缓存中没有有效的能解码的帧,所以这次不flush [AUTO-TRANSLATED:5d860722] // There are no valid frames that can be decoded in the cache, so no flush this time. return _frame_cache.size() > kMaxFrameCacheSize; @@ -294,8 +290,6 @@ bool FrameMerger::inputFrame(const Frame::Ptr &frame, onOutput cb, BufferLikeStr cb(back->dts(), back->pts(), merged_frame, have_key_frame); _frame_cache.clear(); _have_decode_able_frame = false; - _have_drop_able_frame = false; - _have_config_frame = false; } if (!frame) { @@ -305,12 +299,6 @@ bool FrameMerger::inputFrame(const Frame::Ptr &frame, onOutput cb, BufferLikeStr if (frame->decodeAble()) { _have_decode_able_frame = true; } - if (frame->dropAble()) { - _have_drop_able_frame = true; - } - if (frame->configFrame()) { - _have_config_frame = true; - } _cb = std::move(cb); _frame_cache.emplace_back(Frame::getCacheAbleFrame(frame)); return true; diff --git a/src/Extension/Frame.h b/src/Extension/Frame.h index b394fe81..99d665fe 100644 --- a/src/Extension/Frame.h +++ b/src/Extension/Frame.h @@ -660,8 +660,6 @@ private: private: int _type; bool _have_decode_able_frame = false; - bool _have_drop_able_frame = false; - bool _have_config_frame = false; onOutput _cb; toolkit::List _frame_cache; };