rdt_parse_packet (AVFormatContext *ctx, PayloadContext *rdt, AVStream *st,

                  AVPacket *pkt, uint32_t *timestamp,

                  const uint8_t *buf, int len, uint16_t rtp_seq, int flags)

{

    int seq = 1, res;

    AVIOContext pb;



    if (!rdt->rmctx)

        return AVERROR(EINVAL);



    if (rdt->audio_pkt_cnt == 0) {

        int pos;



        ffio_init_context(&pb, buf, len, 0, NULL, NULL, NULL, NULL);

        flags = (flags & RTP_FLAG_KEY) ? 2 : 0;

        res = ff_rm_parse_packet (rdt->rmctx, &pb, st, rdt->rmst[st->index], len, pkt,

                                  &seq, flags, *timestamp);

        pos = avio_tell(&pb);

        if (res < 0)

            return res;

        if (res > 0) {

            if (st->codec->codec_id == AV_CODEC_ID_AAC) {

                memcpy (rdt->buffer, buf + pos, len - pos);

                rdt->rmctx->pb = avio_alloc_context (rdt->buffer, len - pos, 0,

                                                    NULL, NULL, NULL, NULL);

            }

            goto get_cache;

        }

    } else {

get_cache:

        rdt->audio_pkt_cnt =

            ff_rm_retrieve_cache (rdt->rmctx, rdt->rmctx->pb,

                                  st, rdt->rmst[st->index], pkt);

        if (rdt->audio_pkt_cnt == 0 &&

            st->codec->codec_id == AV_CODEC_ID_AAC)

            av_freep(&rdt->rmctx->pb);

    }

    pkt->stream_index = st->index;

    pkt->pts = *timestamp;



    return rdt->audio_pkt_cnt > 0;

}

rdt_parse_packet (AVFormatContext *ctx, PayloadContext *rdt, AVStream *st,

                  AVPacket *pkt, uint32_t *timestamp,

                  const uint8_t *buf, int len, uint16_t rtp_seq, int flags)

{

    int seq = 1, res;

    AVIOContext pb;



    if (!rdt->rmctx)

        return AVERROR(EINVAL);



    if (rdt->audio_pkt_cnt == 0) {

        int pos;



        ffio_init_context(&pb, buf, len, 0, NULL, NULL, NULL, NULL);

        flags = (flags & RTP_FLAG_KEY) ? 2 : 0;

        res = ff_rm_parse_packet (rdt->rmctx, &pb, st, rdt->rmst[st->index], len, pkt,

                                  &seq, flags, *timestamp);

        pos = avio_tell(&pb);

        if (res < 0)

            return res;

        if (res > 0) {

            if (st->codec->codec_id == AV_CODEC_ID_AAC) {

                memcpy (rdt->buffer, buf + pos, len - pos);

                rdt->rmctx->pb = avio_alloc_context (rdt->buffer, len - pos, 0,

                                                    NULL, NULL, NULL, NULL);

            }

            goto get_cache;

        }

    } else {

get_cache:

        rdt->audio_pkt_cnt =

            ff_rm_retrieve_cache (rdt->rmctx, rdt->rmctx->pb,

                                  st, rdt->rmst[st->index], pkt);

        if (rdt->audio_pkt_cnt == 0 &&

            st->codec->codec_id == AV_CODEC_ID_AAC)

            av_freep(&rdt->rmctx->pb);

    }

    pkt->stream_index = st->index;

    pkt->pts = *timestamp;



    return rdt->audio_pkt_cnt > 0;

}

    if (!rdt->rmctx)         return AVERROR(EINVAL);         return AVERROR(EINVAL);
FUNC_0 (AVFormatContext *VAR_0, PayloadContext *VAR_1, AVStream *VAR_2,

                  AVPacket *VAR_3, uint32_t *VAR_4,

                  const uint8_t *VAR_5, int VAR_6, uint16_t VAR_7, int VAR_8)

{

    int VAR_9 = 1, VAR_10;

    AVIOContext pb;



    if (!VAR_1->rmctx)

        return AVERROR(EINVAL);



    if (VAR_1->audio_pkt_cnt == 0) {

        int VAR_11;



        ffio_init_context(&pb, VAR_5, VAR_6, 0, NULL, NULL, NULL, NULL);

        VAR_8 = (VAR_8 & RTP_FLAG_KEY) ? 2 : 0;

        VAR_10 = ff_rm_parse_packet (VAR_1->rmctx, &pb, VAR_2, VAR_1->rmst[VAR_2->index], VAR_6, VAR_3,

                                  &VAR_9, VAR_8, *VAR_4);

        VAR_11 = avio_tell(&pb);

        if (VAR_10 < 0)

            return VAR_10;

        if (VAR_10 > 0) {

            if (VAR_2->codec->codec_id == AV_CODEC_ID_AAC) {

                memcpy (VAR_1->buffer, VAR_5 + VAR_11, VAR_6 - VAR_11);

                VAR_1->rmctx->pb = avio_alloc_context (VAR_1->buffer, VAR_6 - VAR_11, 0,

                                                    NULL, NULL, NULL, NULL);

            }

            goto get_cache;

        }

    } else {

get_cache:

        VAR_1->audio_pkt_cnt =

            ff_rm_retrieve_cache (VAR_1->rmctx, VAR_1->rmctx->pb,

                                  VAR_2, VAR_1->rmst[VAR_2->index], VAR_3);

        if (VAR_1->audio_pkt_cnt == 0 &&

            VAR_2->codec->codec_id == AV_CODEC_ID_AAC)

            av_freep(&VAR_1->rmctx->pb);

    }

    VAR_3->stream_index = VAR_2->index;

    VAR_3->pts = *VAR_4;



    return VAR_1->audio_pkt_cnt > 0;

}

FUNC_0 (AVFormatContext *VAR_0, PayloadContext *VAR_1, AVStream *VAR_2,
AVPacket *VAR_3, uint32_t *VAR_4,
const uint8_t *VAR_5, int VAR_6, uint16_t VAR_7, int VAR_8)
{ int VAR_9 = 1, VAR_10; AVIOContext pb; if (!VAR_1->rmctx)
return AVERROR(EINVAL); if (VAR_1->audio_pkt_cnt == 0) { int VAR_11; ffio_init_context(&pb, VAR_5, VAR_6, 0, NULL, NULL, NULL, NULL); VAR_8 = (VAR_8 & RTP_FLAG_KEY) ? 2 : 0; VAR_10 = ff_rm_parse_packet (VAR_1->rmctx, &pb, VAR_2, VAR_1->rmst[VAR_2->index], VAR_6, VAR_3,
&VAR_9, VAR_8, *VAR_4); VAR_11 = avio_tell(&pb); if (VAR_10 < 0)
return VAR_10; if (VAR_10 > 0) { if (VAR_2->codec->codec_id == AV_CODEC_ID_AAC) { memcpy (VAR_1->buffer, VAR_5 + VAR_11, VAR_6 - VAR_11); VAR_1->rmctx->pb = avio_alloc_context (VAR_1->buffer, VAR_6 - VAR_11, 0,
NULL, NULL, NULL, NULL); } goto get_cache; } } else { get_cache:
VAR_1->audio_pkt_cnt =
ff_rm_retrieve_cache (VAR_1->rmctx, VAR_1->rmctx->pb,
VAR_2, VAR_1->rmst[VAR_2->index], VAR_3); if (VAR_1->audio_pkt_cnt == 0 &&
VAR_2->codec->codec_id == AV_CODEC_ID_AAC)
av_freep(&VAR_1->rmctx->pb); } VAR_3->stream_index = VAR_2->index; VAR_3->pts = *VAR_4; return VAR_1->audio_pkt_cnt > 0; }