- st = stream->streams[i];
- if (st->codec->codec_id == CODEC_ID_MPEG2TS) {
- mediatype = "video";
- } else {
- switch(st->codec->codec_type) {
- case CODEC_TYPE_AUDIO:
- mediatype = "audio";
- break;
- case CODEC_TYPE_VIDEO:
- mediatype = "video";
- break;
- default:
- mediatype = "application";
- break;
- }
- }
- /* NOTE: the port indication is not correct in case of
- unicast. It is not an issue because RTSP gives it */
- payload_type = rtp_get_payload_type(st->codec);
- if (payload_type < 0)
- payload_type = private_payload_type++;
- if (stream->is_multicast) {
- port = stream->multicast_port + 2 * i;
- } else {
- port = 0;
- }
- url_fprintf(pb, "m=%s %d RTP/AVP %d\n",
- mediatype, port, payload_type);
- if (payload_type >= RTP_PT_PRIVATE) {
- /* for private payload type, we need to give more info */
- switch(st->codec->codec_id) {
- case CODEC_ID_MPEG4:
- {
- uint8_t *data;
- url_fprintf(pb, "a=rtpmap:%d MP4V-ES/%d\n",
- payload_type, 90000);
- /* we must also add the mpeg4 header */
- data = st->codec->extradata;
- if (data) {
- url_fprintf(pb, "a=fmtp:%d config=", payload_type);
- for(j=0;j<st->codec->extradata_size;j++) {
- url_fprintf(pb, "%02x", data[j]);
- }
- url_fprintf(pb, "\n");
- }
- }
- break;
- default:
- /* XXX: add other codecs ? */
- goto fail;
- }
- }
- url_fprintf(pb, "a=control:streamid=%d\n", i);