public override string ToString() { string sdp = "v=" + SDP_PROTOCOL_VERSION + CRLF + "o=" + Owner + CRLF + "s=" + SessionName + CRLF + ((Connection != null) ? Connection.ToString() : null); foreach (string bandwidth in BandwidthAttributes) { sdp += "b=" + bandwidth + CRLF; } sdp += "t=" + Timing + CRLF; sdp += !string.IsNullOrWhiteSpace(IceUfrag) ? "a=" + ICE_UFRAG_ATTRIBUTE_PREFIX + ":" + IceUfrag + CRLF : null; sdp += !string.IsNullOrWhiteSpace(IcePwd) ? "a=" + ICE_PWD_ATTRIBUTE_PREFIX + ":" + IcePwd + CRLF : null; sdp += !string.IsNullOrWhiteSpace(DtlsFingerprint) ? "a=" + DTLS_FINGERPRINT_ATTRIBUTE_PREFIX + ":" + DtlsFingerprint + CRLF : null; sdp += string.IsNullOrWhiteSpace(SessionDescription) ? null : "i=" + SessionDescription + CRLF; sdp += string.IsNullOrWhiteSpace(URI) ? null : "u=" + URI + CRLF; if (OriginatorEmailAddresses != null && OriginatorEmailAddresses.Length > 0) { foreach (string originatorAddress in OriginatorEmailAddresses) { sdp += string.IsNullOrWhiteSpace(originatorAddress) ? null : "e=" + originatorAddress + CRLF; } } if (OriginatorPhoneNumbers != null && OriginatorPhoneNumbers.Length > 0) { foreach (string originatorNumber in OriginatorPhoneNumbers) { sdp += string.IsNullOrWhiteSpace(originatorNumber) ? null : "p=" + originatorNumber + CRLF; } } sdp += (Group == null) ? null : $"a={GROUP_ATRIBUTE_PREFIX}:{Group}" + CRLF; foreach (string extra in ExtraSessionAttributes) { sdp += string.IsNullOrWhiteSpace(extra) ? null : extra + CRLF; } if (SessionMediaStreamStatus != MediaStreamStatusEnum.None) { sdp += MediaStreamStatusType.GetAttributeForMediaStreamStatus(SessionMediaStreamStatus) + CRLF; } foreach (SDPMediaAnnouncement media in Media) { sdp += (media == null) ? null : media.ToString(); } return(sdp); }
public override string ToString() { string announcement = "m=" + Media + " " + Port + " " + Transport + " " + GetFormatListToString() + m_CRLF; announcement += (Connection == null) ? null : Connection.ToString(); foreach (string bandwidthAttribute in BandwidthAttributes) { announcement += "b=" + bandwidthAttribute + m_CRLF; } announcement += GetFormatListAttributesToString(); foreach (string extra in ExtraMediaAttributes) { announcement += string.IsNullOrWhiteSpace(extra) ? null : extra + m_CRLF; } foreach (SDPSecurityDescription desc in this.SecurityDescriptions) { announcement += desc.ToString() + m_CRLF; } if (MediaStreamStatus != MediaStreamStatusEnum.None) { announcement += MediaStreamStatusType.GetAttributeForMediaStreamStatus(MediaStreamStatus) + m_CRLF; } return(announcement); }
public override string ToString() { string announcement = "m=" + Media + " " + Port + " " + Transport + " " + GetFormatListToString() + m_CRLF; announcement += (Connection == null) ? null : Connection.ToString(); foreach (string bandwidthAttribute in BandwidthAttributes) { announcement += "b=" + bandwidthAttribute + m_CRLF; } announcement += !string.IsNullOrWhiteSpace(IceUfrag) ? "a=" + SDP.ICE_UFRAG_ATTRIBUTE_PREFIX + ":" + IceUfrag + m_CRLF : null; announcement += !string.IsNullOrWhiteSpace(IcePwd) ? "a=" + SDP.ICE_PWD_ATTRIBUTE_PREFIX + ":" + IcePwd + m_CRLF : null; announcement += !string.IsNullOrWhiteSpace(DtlsFingerprint) ? "a=" + SDP.DTLS_FINGERPRINT_ATTRIBUTE_PREFIX + ":" + DtlsFingerprint + m_CRLF : null; if (IceCandidates?.Count() > 0) { foreach (var candidate in IceCandidates) { announcement += $"a={SDP.ICE_CANDIDATE_ATTRIBUTE_PREFIX}:{candidate}{m_CRLF}"; } } if (IceOptions != null) { announcement += $"a={SDP.ICE_OPTIONS}:" + IceOptions + m_CRLF; } if (IceEndOfCandidates) { announcement += $"a={SDP.END_ICE_CANDIDATES_ATTRIBUTE}" + m_CRLF; } announcement += !string.IsNullOrWhiteSpace(MediaID) ? "a=" + SDP.MEDIA_ID_ATTRIBUTE_PREFIX + ":" + MediaID + m_CRLF : null; announcement += GetFormatListAttributesToString(); foreach (string extra in ExtraMediaAttributes) { announcement += string.IsNullOrWhiteSpace(extra) ? null : extra + m_CRLF; } foreach (SDPSecurityDescription desc in this.SecurityDescriptions) { announcement += desc.ToString() + m_CRLF; } if (MediaStreamStatus != MediaStreamStatusEnum.None) { announcement += MediaStreamStatusType.GetAttributeForMediaStreamStatus(MediaStreamStatus) + m_CRLF; } return(announcement); }
public override string ToString() { string announcement = "m=" + Media + " " + Port + " " + Transport + " " + GetFormatListToString() + m_CRLF; announcement += (Connection == null) ? null : Connection.ToString(); foreach (string bandwidthAttribute in BandwidthAttributes) { announcement += "b=" + bandwidthAttribute + m_CRLF; } announcement += !string.IsNullOrWhiteSpace(IceUfrag) ? "a=" + SDP.ICE_UFRAG_ATTRIBUTE_PREFIX + ":" + IceUfrag + m_CRLF : null; announcement += !string.IsNullOrWhiteSpace(IcePwd) ? "a=" + SDP.ICE_PWD_ATTRIBUTE_PREFIX + ":" + IcePwd + m_CRLF : null; announcement += !string.IsNullOrWhiteSpace(DtlsFingerprint) ? "a=" + SDP.DTLS_FINGERPRINT_ATTRIBUTE_PREFIX + ":" + DtlsFingerprint + m_CRLF : null; if (IceCandidates?.Count() > 0) { foreach (var candidate in IceCandidates) { announcement += $"a={SDP.ICE_CANDIDATE_ATTRIBUTE_PREFIX}:{candidate}{m_CRLF}"; } } if (IceOptions != null) { announcement += $"a={SDP.ICE_OPTIONS}:" + IceOptions + m_CRLF; } if (IceEndOfCandidates) { announcement += $"a={SDP.END_ICE_CANDIDATES_ATTRIBUTE}" + m_CRLF; } announcement += !string.IsNullOrWhiteSpace(MediaID) ? "a=" + SDP.MEDIA_ID_ATTRIBUTE_PREFIX + ":" + MediaID + m_CRLF : null; announcement += GetFormatListAttributesToString(); foreach (string extra in ExtraMediaAttributes) { announcement += string.IsNullOrWhiteSpace(extra) ? null : extra + m_CRLF; } foreach (SDPSecurityDescription desc in this.SecurityDescriptions) { announcement += desc.ToString() + m_CRLF; } if (MediaStreamStatus != null) { announcement += MediaStreamStatusType.GetAttributeForMediaStreamStatus(MediaStreamStatus.Value) + m_CRLF; } if (SsrcGroupID != null && SsrcAttributes.Count > 0) { announcement += MEDIA_FORMAT_SSRC_GROUP_ATTRIBUE_PREFIX + SsrcGroupID; foreach (var ssrcAttr in SsrcAttributes) { announcement += $" {ssrcAttr.SSRC}"; } announcement += m_CRLF; } if (SsrcAttributes.Count > 0) { foreach (var ssrcAttr in SsrcAttributes) { if (!string.IsNullOrWhiteSpace(ssrcAttr.Cname)) { announcement += $"{MEDIA_FORMAT_SSRC_ATTRIBUE_PREFIX}{ssrcAttr.SSRC} {SDPSsrcAttribute.MEDIA_CNAME_ATTRIBUE_PREFIX}:{ssrcAttr.Cname}" + m_CRLF; } else { announcement += $"{MEDIA_FORMAT_SSRC_ATTRIBUE_PREFIX}{ssrcAttr.SSRC}" + m_CRLF; } } } // If the "sctpmap" attribute is set, use it instead of the separate "sctpport" and "max-message-size" // attributes. They both contain the same information. The "sctpmap" is the legacy attribute and if // an application sets it then it's likely to be for a specific reason. if (SctpMap != null) { announcement += $"{MEDIA_FORMAT_SCTP_MAP_ATTRIBUE_PREFIX}{SctpMap}" + m_CRLF; } else { if (SctpPort != null) { announcement += $"{MEDIA_FORMAT_SCTP_PORT_ATTRIBUE_PREFIX}{SctpPort}" + m_CRLF; } if (MaxMessageSize != 0) { announcement += $"{MEDIA_FORMAT_MAX_MESSAGE_SIZE_ATTRIBUE_PREFIX}{MaxMessageSize}" + m_CRLF; } } return(announcement); }