hawkeye camera support(not tested)

This commit is contained in:
meelstorm
2025-08-19 12:45:50 +02:00
parent f80b275ad8
commit 6ef6aced8d
170 changed files with 20190 additions and 72 deletions

View File

@@ -0,0 +1,77 @@
using System;
using System.Collections.Generic;
using System.Diagnostics.Contracts;
using System.Linq;
namespace Inspectron.HawkEye.RTSP.Sdp
{
public class Attribut
{
private static readonly Dictionary<string, Type> attributMap = new Dictionary<string, Type>()
{
{AttributRtpMap.NAME,typeof(AttributRtpMap)},
{AttributFmtp.NAME,typeof(AttributFmtp)},
};
public virtual string Key { get; private set; }
public virtual string Value { get; protected set; }
public static void RegisterNewAttributeType(string key, Type attributType)
{
if(!attributType.IsSubclassOf(typeof(Attribut)))
throw new ArgumentException("Type must be subclass of Rtsp.Sdp.Attribut","attributType");
attributMap[key] = attributType;
}
public Attribut()
{
}
public Attribut(string key)
{
Key = key;
}
public static Attribut ParseInvariant(string value)
{
if(value == null)
throw new ArgumentNullException("value");
Contract.EndContractBlock();
var listValues = value.Split(new char[] {':'}, 2);
Attribut returnValue;
// Call parser of child type
Type childType;
attributMap.TryGetValue(listValues[0], out childType);
if (childType != null)
{
var defaultContructor = childType.GetConstructor(Type.EmptyTypes);
returnValue = defaultContructor.Invoke(Type.EmptyTypes) as Attribut;
}
else
{
returnValue = new Attribut(listValues[0]);
}
// Parse the value. Note most attributes have a value but recvonly does not have a value
if (listValues.Count() > 1) returnValue.ParseValue(listValues[1]);
return returnValue;
}
protected virtual void ParseValue(string value)
{
Value = value;
}
}
}