You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-09-16 08:36:51 +02:00
rtpdec: Simplify insertion into the linked list queue
By using a pointer-to-pointer, we avoid having to keep track of the previous packet separately. Signed-off-by: Martin Storsjö <martin@martin.st>
This commit is contained in:
@@ -723,15 +723,14 @@ void ff_rtp_reset_packet_queue(RTPDemuxContext *s)
|
|||||||
static void enqueue_packet(RTPDemuxContext *s, uint8_t *buf, int len)
|
static void enqueue_packet(RTPDemuxContext *s, uint8_t *buf, int len)
|
||||||
{
|
{
|
||||||
uint16_t seq = AV_RB16(buf + 2);
|
uint16_t seq = AV_RB16(buf + 2);
|
||||||
RTPPacket *cur = s->queue, *prev = NULL, *packet;
|
RTPPacket **cur = &s->queue, *packet;
|
||||||
|
|
||||||
/* Find the correct place in the queue to insert the packet */
|
/* Find the correct place in the queue to insert the packet */
|
||||||
while (cur) {
|
while (*cur) {
|
||||||
int16_t diff = seq - cur->seq;
|
int16_t diff = seq - (*cur)->seq;
|
||||||
if (diff < 0)
|
if (diff < 0)
|
||||||
break;
|
break;
|
||||||
prev = cur;
|
cur = &(*cur)->next;
|
||||||
cur = cur->next;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
packet = av_mallocz(sizeof(*packet));
|
packet = av_mallocz(sizeof(*packet));
|
||||||
@@ -741,11 +740,8 @@ static void enqueue_packet(RTPDemuxContext *s, uint8_t *buf, int len)
|
|||||||
packet->seq = seq;
|
packet->seq = seq;
|
||||||
packet->len = len;
|
packet->len = len;
|
||||||
packet->buf = buf;
|
packet->buf = buf;
|
||||||
packet->next = cur;
|
packet->next = *cur;
|
||||||
if (prev)
|
*cur = packet;
|
||||||
prev->next = packet;
|
|
||||||
else
|
|
||||||
s->queue = packet;
|
|
||||||
s->queue_len++;
|
s->queue_len++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user