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)
 | 
			
		||||
{
 | 
			
		||||
    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 */
 | 
			
		||||
    while (cur) {
 | 
			
		||||
        int16_t diff = seq - cur->seq;
 | 
			
		||||
    while (*cur) {
 | 
			
		||||
        int16_t diff = seq - (*cur)->seq;
 | 
			
		||||
        if (diff < 0)
 | 
			
		||||
            break;
 | 
			
		||||
        prev = cur;
 | 
			
		||||
        cur  = cur->next;
 | 
			
		||||
        cur = &(*cur)->next;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    packet = av_mallocz(sizeof(*packet));
 | 
			
		||||
@@ -741,11 +740,8 @@ static void enqueue_packet(RTPDemuxContext *s, uint8_t *buf, int len)
 | 
			
		||||
    packet->seq      = seq;
 | 
			
		||||
    packet->len      = len;
 | 
			
		||||
    packet->buf      = buf;
 | 
			
		||||
    packet->next     = cur;
 | 
			
		||||
    if (prev)
 | 
			
		||||
        prev->next = packet;
 | 
			
		||||
    else
 | 
			
		||||
        s->queue = packet;
 | 
			
		||||
    packet->next     = *cur;
 | 
			
		||||
    *cur = packet;
 | 
			
		||||
    s->queue_len++;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user