RTPDemuxContext *rtp_parse_open(AVFormatContext *s1, AVStream *st, URLContext *rtpc, int payload_type, RTPPayloadData *rtp_payload_data)

{

    RTPDemuxContext *s;



    s = av_mallocz(sizeof(RTPDemuxContext));

    if (!s)

        return NULL;

    s->payload_type = payload_type;

    s->last_rtcp_ntp_time = AV_NOPTS_VALUE;

    s->first_rtcp_ntp_time = AV_NOPTS_VALUE;

    s->ic = s1;

    s->st = st;

    s->rtp_payload_data = rtp_payload_data;

    rtp_init_statistics(&s->statistics, 0); // do we know the initial sequence from sdp?

    if (!strcmp(ff_rtp_enc_name(payload_type), "MP2T")) {

        s->ts = ff_mpegts_parse_open(s->ic);

        if (s->ts == NULL) {

            av_free(s);

            return NULL;

        }

    } else {

        av_set_pts_info(st, 32, 1, 90000);

        switch(st->codec->codec_id) {

        case CODEC_ID_MPEG1VIDEO:

        case CODEC_ID_MPEG2VIDEO:

        case CODEC_ID_MP2:

        case CODEC_ID_MP3:

        case CODEC_ID_MPEG4:

        case CODEC_ID_H263:

        case CODEC_ID_H264:

            st->need_parsing = AVSTREAM_PARSE_FULL;

            break;

        default:

            if (st->codec->codec_type == CODEC_TYPE_AUDIO) {

                av_set_pts_info(st, 32, 1, st->codec->sample_rate);

            }

            break;

        }

    }

    // needed to send back RTCP RR in RTSP sessions

    s->rtp_ctx = rtpc;

    gethostname(s->hostname, sizeof(s->hostname));

    return s;

}

RTPDemuxContext *rtp_parse_open(AVFormatContext *s1, AVStream *st, URLContext *rtpc, int payload_type, RTPPayloadData *rtp_payload_data)

{

    RTPDemuxContext *s;



    s = av_mallocz(sizeof(RTPDemuxContext));

    if (!s)

        return NULL;

    s->payload_type = payload_type;

    s->last_rtcp_ntp_time = AV_NOPTS_VALUE;

    s->first_rtcp_ntp_time = AV_NOPTS_VALUE;

    s->ic = s1;

    s->st = st;

    s->rtp_payload_data = rtp_payload_data;

    rtp_init_statistics(&s->statistics, 0); 

    if (!strcmp(ff_rtp_enc_name(payload_type), "MP2T")) {

        s->ts = ff_mpegts_parse_open(s->ic);

        if (s->ts == NULL) {

            av_free(s);

            return NULL;

        }

    } else {

        av_set_pts_info(st, 32, 1, 90000);

        switch(st->codec->codec_id) {

        case CODEC_ID_MPEG1VIDEO:

        case CODEC_ID_MPEG2VIDEO:

        case CODEC_ID_MP2:

        case CODEC_ID_MP3:

        case CODEC_ID_MPEG4:

        case CODEC_ID_H263:

        case CODEC_ID_H264:

            st->need_parsing = AVSTREAM_PARSE_FULL;

            break;

        default:

            if (st->codec->codec_type == CODEC_TYPE_AUDIO) {

                av_set_pts_info(st, 32, 1, st->codec->sample_rate);

            }

            break;

        }

    }

    

    s->rtp_ctx = rtpc;

    gethostname(s->hostname, sizeof(s->hostname));

    return s;

}

    s->first_rtcp_ntp_time = AV_NOPTS_VALUE;
RTPDemuxContext *FUNC_0(AVFormatContext *s1, AVStream *st, URLContext *rtpc, int payload_type, RTPPayloadData *rtp_payload_data)

{

    RTPDemuxContext *s;



    s = av_mallocz(sizeof(RTPDemuxContext));

    if (!s)

        return NULL;

    s->payload_type = payload_type;

    s->last_rtcp_ntp_time = AV_NOPTS_VALUE;

    s->first_rtcp_ntp_time = AV_NOPTS_VALUE;

    s->ic = s1;

    s->st = st;

    s->rtp_payload_data = rtp_payload_data;

    rtp_init_statistics(&s->statistics, 0); 

    if (!strcmp(ff_rtp_enc_name(payload_type), "MP2T")) {

        s->ts = ff_mpegts_parse_open(s->ic);

        if (s->ts == NULL) {

            av_free(s);

            return NULL;

        }

    } else {

        av_set_pts_info(st, 32, 1, 90000);

        switch(st->codec->codec_id) {

        case CODEC_ID_MPEG1VIDEO:

        case CODEC_ID_MPEG2VIDEO:

        case CODEC_ID_MP2:

        case CODEC_ID_MP3:

        case CODEC_ID_MPEG4:

        case CODEC_ID_H263:

        case CODEC_ID_H264:

            st->need_parsing = AVSTREAM_PARSE_FULL;

            break;

        default:

            if (st->codec->codec_type == CODEC_TYPE_AUDIO) {

                av_set_pts_info(st, 32, 1, st->codec->sample_rate);

            }

            break;

        }

    }

    

    s->rtp_ctx = rtpc;

    gethostname(s->hostname, sizeof(s->hostname));

    return s;

}

RTPDemuxContext *FUNC_0(AVFormatContext *s1, AVStream *st, URLContext *rtpc, int payload_type, RTPPayloadData *rtp_payload_data)
{ RTPDemuxContext *s; s = av_mallocz(sizeof(RTPDemuxContext)); if (!s)
return NULL; s->payload_type = payload_type; s->last_rtcp_ntp_time = AV_NOPTS_VALUE; s->first_rtcp_ntp_time = AV_NOPTS_VALUE; s->ic = s1; s->st = st; s->rtp_payload_data = rtp_payload_data; rtp_init_statistics(&s->statistics, 0); if (!strcmp(ff_rtp_enc_name(payload_type), "MP2T")) { s->ts = ff_mpegts_parse_open(s->ic); if (s->ts == NULL) { av_free(s); return NULL; } } else { av_set_pts_info(st, 32, 1, 90000); switch(st->codec->codec_id) { case CODEC_ID_MPEG1VIDEO:
case CODEC_ID_MPEG2VIDEO:
case CODEC_ID_MP2:
case CODEC_ID_MP3:
case CODEC_ID_MPEG4:
case CODEC_ID_H263:
case CODEC_ID_H264:
st->need_parsing = AVSTREAM_PARSE_FULL; break; default:
if (st->codec->codec_type == CODEC_TYPE_AUDIO) { av_set_pts_info(st, 32, 1, st->codec->sample_rate); } break; } } s->rtp_ctx = rtpc; gethostname(s->hostname, sizeof(s->hostname)); return s; }