Пример #1
0
        public static SdpRtpMap Parse(string str)
        {
            var match = REGEX.Match(str);

            if (!match.Success)
            {
                throw new SdpParseException($"Unable to parse malformed rtpmap attriute '{str}'");
            }

            try
            {
                var builder = SdpRtpMap.CreateBuilder()
                              .PayloadType(ushort.Parse(match.Groups[1].Value))
                              .EncodingName(match.Groups[2].Value.Trim())
                              .ClockRate(uint.Parse(match.Groups[3].Value));

                if (match.Groups.Count == 6)
                {
                    builder.EncodingParameters(match.Groups[5].Value.Trim());
                }

                return(builder.Build());
            }
            catch (Exception e)
            {
                throw new SdpParseException($"Unable to parse rtpmap attribute '{str}'", e);
            }
        }
Пример #2
0
        /// <summary>
        /// Returns the assocciated rtpmap attributes as a list of <see cref="SdpRtpMap"/>
        /// instances.
        /// </summary>
        /// <exception cref="SdpParseException">If a rtpmap attribuet is malformed.</exception>
        /// <returns></returns>
        public ImmutableList <SdpRtpMap> GetRtpMaps()
        {
            var builder = ImmutableList.CreateBuilder <SdpRtpMap>();

            Attributes.Where(a => "rtpmap" == a.Name).ToList().ForEach(a =>
            {
                builder.Add(SdpRtpMap.Parse(a.Value));
            });

            return(builder.ToImmutable());
        }