优化rtp异常处理逻辑

This commit is contained in:
xia-chu
2025-06-29 17:56:35 +08:00
parent c98137e505
commit 0b21ece801
3 changed files with 8 additions and 3 deletions

View File

@@ -151,7 +151,7 @@ void DecoderImp::onTrack(int index, const Track::Ptr &track) {
track->setIndex(index);
auto &ref = _tracks[index];
if (ref.first) {
WarnL << "Already existed a same track: " << index << ", codec: " << track->getCodecName();
// WarnL << "Already existed a same track: " << index << ", codec: " << track->getCodecName();
return;
}
ref.first = track;

View File

@@ -56,7 +56,7 @@ ssize_t PSDecoder::input(const uint8_t *data, size_t bytes) {
const char *PSDecoder::onSearchPacketTail(const char *data, size_t len) {
try {
auto ret = ps_demuxer_input(static_cast<struct ps_demuxer_t *>(_ps_demuxer), reinterpret_cast<const uint8_t *>(data), len);
if (ret >= 0) {
if (ret >= 0 && ret <= (ssize_t)len) {
// 解析成功全部或部分 [AUTO-TRANSLATED:a8085d34]
// Parse successful, all or part
return data + ret;

View File

@@ -62,7 +62,12 @@ public:
RtpProcess::Ptr getProcess() const { return _process; }
void onRecvRtp(const Socket::Ptr &sock, const Buffer::Ptr &buf, struct sockaddr *addr) {
_process->inputRtp(true, sock, buf->data(), buf->size(), addr);
try {
_process->inputRtp(true, sock, buf->data(), buf->size(), addr);
} catch (std::exception &ex) {
_process->onDetach(SockException(Err_shutdown, ex.what()));
return;
}
// 统计rtp接受情况用于发送rr包 [AUTO-TRANSLATED:bd2fbe7e]
// Count RTP reception status, used to send RR packets
auto header = (RtpHeader *)buf->data();