diff --git a/include/formats/media.hh b/include/formats/media.hh index 7a2e29b..43c1862 100644 --- a/include/formats/media.hh +++ b/include/formats/media.hh @@ -19,7 +19,7 @@ namespace uvgrtp { uint32_t e_seq; size_t npkts; size_t size; - std::map fragments; + std::map fragments; } media_info_t; typedef struct media_frame_info { diff --git a/src/formats/media.cc b/src/formats/media.cc index c8bb485..3ea13db 100644 --- a/src/formats/media.cc +++ b/src/formats/media.cc @@ -107,8 +107,13 @@ rtp_error_t uvgrtp::formats::media::packet_handler(void *arg, int flags, uvgrtp: if (minfo->frames.find(ts) != minfo->frames.end()) { minfo->frames[ts].npkts++; - minfo->frames[ts].fragments[seq] = frame; minfo->frames[ts].size += frame->payload_len; + + if (seq < minfo->frames[ts].s_seq) + minfo->frames[ts].fragments[seq + 0x10000] = frame; + else + minfo->frames[ts].fragments[seq] = frame; + *out = nullptr; if (frame->header.marker)