Browse Source

TT#30405 reprint a=rtpmap and a=fmtp for SDP output

Change-Id: I4949166faf329e229f1bbbaf559650fa4c3e9228
changes/46/18546/9
Richard Fuchs 8 years ago
parent
commit
c3585b04be
1 changed files with 21 additions and 16 deletions
  1. +21
    -16
      daemon/sdp.c

+ 21
- 16
daemon/sdp.c View File

@ -1476,6 +1476,23 @@ static int replace_codec_list(struct sdp_chopper *chop,
return 0;
}
static void insert_codec_parameters(struct sdp_chopper *chop, struct call_media *cm) {
for (GList *l = cm->codecs_prefs_recv.head; l; l = l->next) {
struct rtp_payload_type *pt = l->data;
chopper_append_printf(chop, "a=rtpmap:%u " STR_FORMAT "\r\n",
pt->payload_type,
STR_FMT(&pt->encoding_with_params));
}
for (GList *l = cm->codecs_prefs_recv.head; l; l = l->next) {
struct rtp_payload_type *pt = l->data;
if (!pt->format_parameters.len)
continue;
chopper_append_printf(chop, "a=fmtp:%u " STR_FORMAT "\r\n",
pt->payload_type,
STR_FMT(&pt->format_parameters));
}
}
static int replace_media_port(struct sdp_chopper *chop, struct sdp_media *media, struct packet_stream *ps) {
str *port = &media->port;
unsigned int p;
@ -1692,6 +1709,8 @@ static int process_media_attributes(struct sdp_chopper *chop, struct sdp_media *
case ATTR_SENDRECV:
case ATTR_IGNORE:
case ATTR_END_OF_CANDIDATES: // we strip it here and re-insert it later
case ATTR_RTPMAP:
case ATTR_FMTP:
goto strip;
case ATTR_EXTMAP:
@ -1711,22 +1730,6 @@ static int process_media_attributes(struct sdp_chopper *chop, struct sdp_media *
goto strip; // hack/workaround: always remove a=mid
break;
case ATTR_RTPMAP:
if (media->codecs_prefs_recv.length == 0)
break; // legacy protocol or usage error
if (!g_hash_table_lookup(media->codecs,
&attr->u.rtpmap.rtp_pt.payload_type))
goto strip;
break;
case ATTR_FMTP:
if (media->codecs_prefs_recv.length == 0)
break; // legacy protocol or usage error
if (!g_hash_table_lookup(media->codecs,
&attr->u.fmtp.payload_type))
goto strip;
break;
default:
break;
}
@ -2058,6 +2061,8 @@ int sdp_replace(struct sdp_chopper *chop, GQueue *sessions, struct call_monologu
copy_up_to_end_of(chop, &sdp_media->s);
insert_codec_parameters(chop, call_media);
ps_rtcp = NULL;
if (ps->rtcp_sibling) {
ps_rtcp = ps->rtcp_sibling;


Loading…
Cancel
Save