Files
HawkeyeVision/framework/Inspectron.HawkEye/RTSP/Sdp/AttributFmtp.cs
2025-08-19 12:45:50 +02:00

76 lines
2.0 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
namespace Inspectron.HawkEye.RTSP.Sdp
{
public class AttributFmtp : Attribut
{
public const string NAME = "fmtp";
private Dictionary<String, String> parameters = new Dictionary<string, string>();
public AttributFmtp()
{
}
public override string Key
{
get
{
return NAME;
}
}
public override string Value
{
get
{
return string.Format("{0} {1}", PayloadNumber, FormatParameter);
}
protected set
{
ParseValue(value);
}
}
public int PayloadNumber { get; set; }
// temporary aatibute to store remaning data not parsed
public string FormatParameter { get; set; }
// Extract the Payload Number and the Format Parameters
protected override void ParseValue(string value)
{
var parts = value.Split(new char[] { ' ' }, 2);
int payloadNumber;
if(int.TryParse(parts[0], out payloadNumber))
{
this.PayloadNumber = payloadNumber;
}
if(parts.Length > 1)
{
FormatParameter = parts[1];
// Split on ';' to get a list of items.
// Then Trim each item and then Split on the first '='
// Add them to the dictionary
parameters.Clear();
foreach (var pair in parts[1].Split(';').Select(x => x.Trim().Split(new char[] { '=' }, 2))) {
if (!string.IsNullOrWhiteSpace(pair[0]))
parameters[pair[0]] = pair.Length > 1 ? pair[1] : null;
}
}
}
public String GetParameter(String index)
{
if (parameters.ContainsKey(index)) return parameters[index];
else return "";
}
}
}