void ff_interleave_add_packet(AVFormatContext *s, AVPacket *pkt,

                              int (*compare)(AVFormatContext *, AVPacket *, AVPacket *))

{

    AVPacketList **next_point, *this_pktl;



    this_pktl      = av_mallocz(sizeof(AVPacketList));

    this_pktl->pkt = *pkt;

#if FF_API_DESTRUCT_PACKET

FF_DISABLE_DEPRECATION_WARNINGS

    pkt->destruct  = NULL;           // do not free original but only the copy

FF_ENABLE_DEPRECATION_WARNINGS

#endif

    pkt->buf       = NULL;

    av_dup_packet(&this_pktl->pkt);  // duplicate the packet if it uses non-alloced memory



    if (s->streams[pkt->stream_index]->last_in_packet_buffer) {

        next_point = &(s->streams[pkt->stream_index]->last_in_packet_buffer->next);

    } else

        next_point = &s->packet_buffer;



    if (*next_point) {

        if (compare(s, &s->packet_buffer_end->pkt, pkt)) {

            while (!compare(s, &(*next_point)->pkt, pkt))

                next_point = &(*next_point)->next;

            goto next_non_null;

        } else {

            next_point = &(s->packet_buffer_end->next);

        }

    }

    assert(!*next_point);



    s->packet_buffer_end = this_pktl;

next_non_null:



    this_pktl->next = *next_point;



    s->streams[pkt->stream_index]->last_in_packet_buffer =

        *next_point                                      = this_pktl;

}

void ff_interleave_add_packet(AVFormatContext *s, AVPacket *pkt,

                              int (*compare)(AVFormatContext *, AVPacket *, AVPacket *))

{

    AVPacketList **next_point, *this_pktl;



    this_pktl      = av_mallocz(sizeof(AVPacketList));

    this_pktl->pkt = *pkt;

#if FF_API_DESTRUCT_PACKET

FF_DISABLE_DEPRECATION_WARNINGS

    pkt->destruct  = NULL;           

FF_ENABLE_DEPRECATION_WARNINGS

#endif

    pkt->buf       = NULL;

    av_dup_packet(&this_pktl->pkt);  



    if (s->streams[pkt->stream_index]->last_in_packet_buffer) {

        next_point = &(s->streams[pkt->stream_index]->last_in_packet_buffer->next);

    } else

        next_point = &s->packet_buffer;



    if (*next_point) {

        if (compare(s, &s->packet_buffer_end->pkt, pkt)) {

            while (!compare(s, &(*next_point)->pkt, pkt))

                next_point = &(*next_point)->next;

            goto next_non_null;

        } else {

            next_point = &(s->packet_buffer_end->next);

        }

    }

    assert(!*next_point);



    s->packet_buffer_end = this_pktl;

next_non_null:



    this_pktl->next = *next_point;



    s->streams[pkt->stream_index]->last_in_packet_buffer =

        *next_point                                      = this_pktl;

}

VAR_4voidVAR_4 VAR_4ff_interleave_add_packetVAR_4(VAR_4AVFormatContextVAR_4 *VAR_4VAR_0VAR_4, VAR_4AVPacketVAR_4 *VAR_4VAR_1VAR_4,

                              VAR_4intVAR_4 (*VAR_4VAR_2VAR_4)(VAR_4AVFormatContextVAR_4 *, VAR_4AVPacketVAR_4 *, VAR_4AVPacketVAR_4 *))

{

    VAR_4AVPacketListVAR_4 **VAR_4next_pointVAR_4, *VAR_4this_pktlVAR_4;



    VAR_4this_pktlVAR_4      = VAR_4av_malloczVAR_4(VAR_4sizeofVAR_4(VAR_4AVPacketListVAR_4));

    VAR_4this_pktlVAR_4->VAR_4VAR_1VAR_4 = *VAR_4VAR_1VAR_4;

#VAR_4ifVAR_4 VAR_4FF_API_DESTRUCT_PACKETVAR_4

VAR_4FF_DISABLE_DEPRECATION_WARNINGSVAR_4

    VAR_4VAR_1VAR_4->VAR_4destructVAR_4  = VAR_4NULLVAR_4;           

VAR_4FF_ENABLE_DEPRECATION_WARNINGSVAR_4

#VAR_4endifVAR_4

    VAR_4VAR_1VAR_4->VAR_4bufVAR_4       = VAR_4NULLVAR_4;

    VAR_4av_dup_packetVAR_4(&VAR_4this_pktlVAR_4->VAR_4VAR_1VAR_4);  



    VAR_4ifVAR_4 (VAR_4VAR_0VAR_4->VAR_4streamsVAR_4[VAR_4VAR_1VAR_4->VAR_4stream_indexVAR_4]->VAR_4last_in_packet_bufferVAR_4) {

        VAR_4next_pointVAR_4 = &(VAR_4VAR_0VAR_4->VAR_4streamsVAR_4[VAR_4VAR_1VAR_4->VAR_4stream_indexVAR_4]->VAR_4last_in_packet_bufferVAR_4->VAR_4nextVAR_4);

    } VAR_4elseVAR_4

        VAR_4next_pointVAR_4 = &VAR_4VAR_0VAR_4->VAR_4packet_bufferVAR_4;



    VAR_4ifVAR_4 (*VAR_4next_pointVAR_4) {

        VAR_4ifVAR_4 (VAR_4VAR_2VAR_4(VAR_4VAR_0VAR_4, &VAR_4VAR_0VAR_4->VAR_4packet_buffer_endVAR_4->VAR_4VAR_1VAR_4, VAR_4VAR_1VAR_4)) {

            VAR_4whileVAR_4 (!VAR_4VAR_2VAR_4(VAR_4VAR_0VAR_4, &(*VAR_4next_pointVAR_4)->VAR_4VAR_1VAR_4, VAR_4VAR_1VAR_4))

                VAR_4next_pointVAR_4 = &(*VAR_4next_pointVAR_4)->VAR_4nextVAR_4;

            VAR_4gotoVAR_4 VAR_4next_non_nullVAR_4;

        } VAR_4elseVAR_4 {

            VAR_4next_pointVAR_4 = &(VAR_4VAR_0VAR_4->VAR_4packet_buffer_endVAR_4->VAR_4nextVAR_4);

        }

    }

    VAR_4assertVAR_4(!*VAR_4next_pointVAR_4);



    VAR_4VAR_0VAR_4->VAR_4packet_buffer_endVAR_4 = VAR_4this_pktlVAR_4;

VAR_4next_non_nullVAR_4:



    VAR_4this_pktlVAR_4->VAR_4nextVAR_4 = *VAR_4next_pointVAR_4;



    VAR_4VAR_0VAR_4->VAR_4streamsVAR_4[VAR_4VAR_1VAR_4->VAR_4stream_indexVAR_4]->VAR_4last_in_packet_bufferVAR_4 =

        *VAR_4next_pointVAR_4                                      = VAR_4this_pktlVAR_4;

}

VAR_4voidVAR_4 VAR_4ff_interleave_add_packetVAR_4(VAR_4AVFormatContextVAR_4 *VAR_4VAR_0VAR_4, VAR_4AVPacketVAR_4 *VAR_4VAR_1VAR_4,
VAR_4intVAR_4 (*VAR_4VAR_2VAR_4)(VAR_4AVFormatContextVAR_4 *, VAR_4AVPacketVAR_4 *, VAR_4AVPacketVAR_4 *))
{ VAR_4AVPacketListVAR_4 **VAR_4next_pointVAR_4, *VAR_4this_pktlVAR_4; VAR_4this_pktlVAR_4      = VAR_4av_malloczVAR_4(VAR_4sizeofVAR_4(VAR_4AVPacketListVAR_4)); VAR_4this_pktlVAR_4->VAR_4VAR_1VAR_4 = *VAR_4VAR_1VAR_4; #VAR_4ifVAR_4 VAR_4FF_API_DESTRUCT_PACKETVAR_4
VAR_4FF_DISABLE_DEPRECATION_WARNINGSVAR_4
VAR_4VAR_1VAR_4->VAR_4destructVAR_4  = VAR_4NULLVAR_4; VAR_4FF_ENABLE_DEPRECATION_WARNINGSVAR_4
#VAR_4endifVAR_4
VAR_4VAR_1VAR_4->VAR_4bufVAR_4       = VAR_4NULLVAR_4; VAR_4av_dup_packetVAR_4(&VAR_4this_pktlVAR_4->VAR_4VAR_1VAR_4); VAR_4ifVAR_4 (VAR_4VAR_0VAR_4->VAR_4streamsVAR_4[VAR_4VAR_1VAR_4->VAR_4stream_indexVAR_4]->VAR_4last_in_packet_bufferVAR_4) { VAR_4next_pointVAR_4 = &(VAR_4VAR_0VAR_4->VAR_4streamsVAR_4[VAR_4VAR_1VAR_4->VAR_4stream_indexVAR_4]->VAR_4last_in_packet_bufferVAR_4->VAR_4nextVAR_4); } VAR_4elseVAR_4 VAR_4next_pointVAR_4 = &VAR_4VAR_0VAR_4->VAR_4packet_bufferVAR_4; VAR_4ifVAR_4 (*VAR_4next_pointVAR_4) { VAR_4ifVAR_4 (VAR_4VAR_2VAR_4(VAR_4VAR_0VAR_4, &VAR_4VAR_0VAR_4->VAR_4packet_buffer_endVAR_4->VAR_4VAR_1VAR_4, VAR_4VAR_1VAR_4)) { VAR_4whileVAR_4 (!VAR_4VAR_2VAR_4(VAR_4VAR_0VAR_4, &(*VAR_4next_pointVAR_4)->VAR_4VAR_1VAR_4, VAR_4VAR_1VAR_4))
VAR_4next_pointVAR_4 = &(*VAR_4next_pointVAR_4)->VAR_4nextVAR_4; VAR_4gotoVAR_4 VAR_4next_non_nullVAR_4; } VAR_4elseVAR_4 { VAR_4next_pointVAR_4 = &(VAR_4VAR_0VAR_4->VAR_4packet_buffer_endVAR_4->VAR_4nextVAR_4); } } VAR_4assertVAR_4(!*VAR_4next_pointVAR_4); VAR_4VAR_0VAR_4->VAR_4packet_buffer_endVAR_4 = VAR_4this_pktlVAR_4; VAR_4next_non_nullVAR_4:
VAR_4this_pktlVAR_4->VAR_4nextVAR_4 = *VAR_4next_pointVAR_4; VAR_4VAR_0VAR_4->VAR_4streamsVAR_4[VAR_4VAR_1VAR_4->VAR_4stream_indexVAR_4]->VAR_4last_in_packet_bufferVAR_4 =
*VAR_4next_pointVAR_4                                      = VAR_4this_pktlVAR_4; }