mirror of
https://gitee.com/xia-chu/ZLMediaKit.git
synced 2026-05-16 23:07:49 +08:00
优化rtp异常处理逻辑
This commit is contained in:
parent
c98137e505
commit
0b21ece801
@ -151,7 +151,7 @@ void DecoderImp::onTrack(int index, const Track::Ptr &track) {
|
|||||||
track->setIndex(index);
|
track->setIndex(index);
|
||||||
auto &ref = _tracks[index];
|
auto &ref = _tracks[index];
|
||||||
if (ref.first) {
|
if (ref.first) {
|
||||||
WarnL << "Already existed a same track: " << index << ", codec: " << track->getCodecName();
|
// WarnL << "Already existed a same track: " << index << ", codec: " << track->getCodecName();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ref.first = track;
|
ref.first = track;
|
||||||
|
|||||||
@ -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) {
|
const char *PSDecoder::onSearchPacketTail(const char *data, size_t len) {
|
||||||
try {
|
try {
|
||||||
auto ret = ps_demuxer_input(static_cast<struct ps_demuxer_t *>(_ps_demuxer), reinterpret_cast<const uint8_t *>(data), len);
|
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]
|
// 解析成功全部或部分 [AUTO-TRANSLATED:a8085d34]
|
||||||
// Parse successful, all or part
|
// Parse successful, all or part
|
||||||
return data + ret;
|
return data + ret;
|
||||||
|
|||||||
@ -62,7 +62,12 @@ public:
|
|||||||
RtpProcess::Ptr getProcess() const { return _process; }
|
RtpProcess::Ptr getProcess() const { return _process; }
|
||||||
|
|
||||||
void onRecvRtp(const Socket::Ptr &sock, const Buffer::Ptr &buf, struct sockaddr *addr) {
|
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]
|
// 统计rtp接受情况,用于发送rr包 [AUTO-TRANSLATED:bd2fbe7e]
|
||||||
// Count RTP reception status, used to send RR packets
|
// Count RTP reception status, used to send RR packets
|
||||||
auto header = (RtpHeader *)buf->data();
|
auto header = (RtpHeader *)buf->data();
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user