formats/media: Adjust fragment buffer offset correctly
Fragmented generic frames whose sequence numbers crossed the overflow boundary were incorrectly reconstructed as the last fragments of the frame were in the beginning of the buffer.
This commit is contained in:
parent
4bbabba8c0
commit
c7216c02a4
|
@ -19,7 +19,7 @@ namespace uvgrtp {
|
|||
uint32_t e_seq;
|
||||
size_t npkts;
|
||||
size_t size;
|
||||
std::map<uint16_t, uvgrtp::frame::rtp_frame *> fragments;
|
||||
std::map<uint32_t, uvgrtp::frame::rtp_frame *> fragments;
|
||||
} media_info_t;
|
||||
|
||||
typedef struct media_frame_info {
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue