static int sdp_parse_rtpmap(AVCodecContext *codec, RTSPStream *rtsp_st, int payload_type, const char *p)

{

    char buf[256];

    int i;

    AVCodec *c;

    const char *c_name;



    /* Loop into AVRtpDynamicPayloadTypes[] and AVRtpPayloadTypes[] and

       see if we can handle this kind of payload */

    get_word_sep(buf, sizeof(buf), "/", &p);

    if (payload_type >= RTP_PT_PRIVATE) {

        RTPDynamicProtocolHandler *handler= RTPFirstDynamicPayloadHandler;

        while(handler) {

            if (!strcasecmp(buf, handler->enc_name) && (codec->codec_type == handler->codec_type)) {

                codec->codec_id = handler->codec_id;

                rtsp_st->dynamic_handler= handler;

                if(handler->open) {

                    rtsp_st->dynamic_protocol_context= handler->open();

                }

                break;

            }

            handler= handler->next;

        }

    } else {

        /* We are in a standard case ( from http://www.iana.org/assignments/rtp-parameters) */

        /* search into AVRtpPayloadTypes[] */

        codec->codec_id = ff_rtp_codec_id(buf, codec->codec_type);

    }



    c = avcodec_find_decoder(codec->codec_id);

    if (c && c->name)

        c_name = c->name;

    else

        c_name = (char *)NULL;



    if (c_name) {

        get_word_sep(buf, sizeof(buf), "/", &p);

        i = atoi(buf);

        switch (codec->codec_type) {

            case CODEC_TYPE_AUDIO:

                av_log(codec, AV_LOG_DEBUG, " audio codec set to : %s\n", c_name);

                codec->sample_rate = RTSP_DEFAULT_AUDIO_SAMPLERATE;

                codec->channels = RTSP_DEFAULT_NB_AUDIO_CHANNELS;

                if (i > 0) {

                    codec->sample_rate = i;

                    get_word_sep(buf, sizeof(buf), "/", &p);

                    i = atoi(buf);

                    if (i > 0)

                        codec->channels = i;

                    // TODO: there is a bug here; if it is a mono stream, and less than 22000Hz, faad upconverts to stereo and twice the

                    //  frequency.  No problem, but the sample rate is being set here by the sdp line.  Upcoming patch forthcoming. (rdm)

                }

                av_log(codec, AV_LOG_DEBUG, " audio samplerate set to : %i\n", codec->sample_rate);

                av_log(codec, AV_LOG_DEBUG, " audio channels set to : %i\n", codec->channels);

                break;

            case CODEC_TYPE_VIDEO:

                av_log(codec, AV_LOG_DEBUG, " video codec set to : %s\n", c_name);

                break;

            default:

                break;

        }

        return 0;

    }



    return -1;

}

static int sdp_parse_rtpmap(AVCodecContext *codec, RTSPStream *rtsp_st, int payload_type, const char *p)

{

    char buf[256];

    int i;

    AVCodec *c;

    const char *c_name;



    



    get_word_sep(buf, sizeof(buf), "/", &p);

    if (payload_type >= RTP_PT_PRIVATE) {

        RTPDynamicProtocolHandler *handler= RTPFirstDynamicPayloadHandler;

        while(handler) {

            if (!strcasecmp(buf, handler->enc_name) && (codec->codec_type == handler->codec_type)) {

                codec->codec_id = handler->codec_id;

                rtsp_st->dynamic_handler= handler;

                if(handler->open) {

                    rtsp_st->dynamic_protocol_context= handler->open();

                }

                break;

            }

            handler= handler->next;

        }

    } else {

        

        

        codec->codec_id = ff_rtp_codec_id(buf, codec->codec_type);

    }



    c = avcodec_find_decoder(codec->codec_id);

    if (c && c->name)

        c_name = c->name;

    else

        c_name = (char *)NULL;



    if (c_name) {

        get_word_sep(buf, sizeof(buf), "/", &p);

        i = atoi(buf);

        switch (codec->codec_type) {

            case CODEC_TYPE_AUDIO:

                av_log(codec, AV_LOG_DEBUG, " audio codec set to : %s\n", c_name);

                codec->sample_rate = RTSP_DEFAULT_AUDIO_SAMPLERATE;

                codec->channels = RTSP_DEFAULT_NB_AUDIO_CHANNELS;

                if (i > 0) {

                    codec->sample_rate = i;

                    get_word_sep(buf, sizeof(buf), "/", &p);

                    i = atoi(buf);

                    if (i > 0)

                        codec->channels = i;

                    

                    

                }

                av_log(codec, AV_LOG_DEBUG, " audio samplerate set to : %i\n", codec->sample_rate);

                av_log(codec, AV_LOG_DEBUG, " audio channels set to : %i\n", codec->channels);

                break;

            case CODEC_TYPE_VIDEO:

                av_log(codec, AV_LOG_DEBUG, " video codec set to : %s\n", c_name);

                break;

            default:

                break;

        }

        return 0;

    }



    return -1;

}

static int FUNC_0(AVCodecContext *VAR_0, RTSPStream *VAR_1, int VAR_2, const char *VAR_3)

{

    char VAR_4[256];

    int VAR_5;

    AVCodec *c;

    const char *VAR_6;



    



    get_word_sep(VAR_4, sizeof(VAR_4), "/", &VAR_3);

    if (VAR_2 >= RTP_PT_PRIVATE) {

        RTPDynamicProtocolHandler *handler= RTPFirstDynamicPayloadHandler;

        while(handler) {

            if (!strcasecmp(VAR_4, handler->enc_name) && (VAR_0->codec_type == handler->codec_type)) {

                VAR_0->codec_id = handler->codec_id;

                VAR_1->dynamic_handler= handler;

                if(handler->open) {

                    VAR_1->dynamic_protocol_context= handler->open();

                }

                break;

            }

            handler= handler->next;

        }

    } else {

        

        

        VAR_0->codec_id = ff_rtp_codec_id(VAR_4, VAR_0->codec_type);

    }



    c = avcodec_find_decoder(VAR_0->codec_id);

    if (c && c->name)

        VAR_6 = c->name;

    else

        VAR_6 = (char *)NULL;



    if (VAR_6) {

        get_word_sep(VAR_4, sizeof(VAR_4), "/", &VAR_3);

        VAR_5 = atoi(VAR_4);

        switch (VAR_0->codec_type) {

            case CODEC_TYPE_AUDIO:

                av_log(VAR_0, AV_LOG_DEBUG, " audio VAR_0 set to : %s\n", VAR_6);

                VAR_0->sample_rate = RTSP_DEFAULT_AUDIO_SAMPLERATE;

                VAR_0->channels = RTSP_DEFAULT_NB_AUDIO_CHANNELS;

                if (VAR_5 > 0) {

                    VAR_0->sample_rate = VAR_5;

                    get_word_sep(VAR_4, sizeof(VAR_4), "/", &VAR_3);

                    VAR_5 = atoi(VAR_4);

                    if (VAR_5 > 0)

                        VAR_0->channels = VAR_5;

                    

                    

                }

                av_log(VAR_0, AV_LOG_DEBUG, " audio samplerate set to : %VAR_5\n", VAR_0->sample_rate);

                av_log(VAR_0, AV_LOG_DEBUG, " audio channels set to : %VAR_5\n", VAR_0->channels);

                break;

            case CODEC_TYPE_VIDEO:

                av_log(VAR_0, AV_LOG_DEBUG, " video VAR_0 set to : %s\n", VAR_6);

                break;

            default:

                break;

        }

        return 0;

    }



    return -1;

}

static int FUNC_0(AVCodecContext *VAR_0, RTSPStream *VAR_1, int VAR_2, const char *VAR_3)
{ char VAR_4[256]; int VAR_5; AVCodec *c; const char *VAR_6; get_word_sep(VAR_4, sizeof(VAR_4), "/", &VAR_3); if (VAR_2 >= RTP_PT_PRIVATE) { RTPDynamicProtocolHandler *handler= RTPFirstDynamicPayloadHandler; while(handler) { if (!strcasecmp(VAR_4, handler->enc_name) && (VAR_0->codec_type == handler->codec_type)) { VAR_0->codec_id = handler->codec_id; VAR_1->dynamic_handler= handler; if(handler->open) { VAR_1->dynamic_protocol_context= handler->open(); } break; } handler= handler->next; } } else { VAR_0->codec_id = ff_rtp_codec_id(VAR_4, VAR_0->codec_type); } c = avcodec_find_decoder(VAR_0->codec_id); if (c && c->name)
VAR_6 = c->name; else
VAR_6 = (char *)NULL; if (VAR_6) { get_word_sep(VAR_4, sizeof(VAR_4), "/", &VAR_3); VAR_5 = atoi(VAR_4); switch (VAR_0->codec_type) { case CODEC_TYPE_AUDIO:
av_log(VAR_0, AV_LOG_DEBUG, " audio VAR_0 set to : %s\n", VAR_6); VAR_0->sample_rate = RTSP_DEFAULT_AUDIO_SAMPLERATE; VAR_0->channels = RTSP_DEFAULT_NB_AUDIO_CHANNELS; if (VAR_5 > 0) { VAR_0->sample_rate = VAR_5; get_word_sep(VAR_4, sizeof(VAR_4), "/", &VAR_3); VAR_5 = atoi(VAR_4); if (VAR_5 > 0)
VAR_0->channels = VAR_5; } av_log(VAR_0, AV_LOG_DEBUG, " audio samplerate set to : %VAR_5\n", VAR_0->sample_rate); av_log(VAR_0, AV_LOG_DEBUG, " audio channels set to : %VAR_5\n", VAR_0->channels); break; case CODEC_TYPE_VIDEO:
av_log(VAR_0, AV_LOG_DEBUG, " video VAR_0 set to : %s\n", VAR_6); break; default:
break; } return 0; } return -1; }