FM.LiveSwitch by Frozen Mountain Software

<PackageReference Include="FM.LiveSwitch" Version="1.5.2.10725" />

.NET API 4,720,640 bytes

 MediaBranch<TIOutput, TIOutputCollection, TIInput, TIInputCollection, TIElement, TSource, TSink, TPipe, TTrack, TBranch, TFrame, TBuffer, TBufferCollection, TFormat>

public abstract class MediaBranch<TIOutput, TIOutputCollection, TIInput, TIInputCollection, TIElement, TSource, TSink, TPipe, TTrack, TBranch, TFrame, TBuffer, TBufferCollection, TFormat> : Dynamic, IMediaElement, IElement where TIOutput : IMediaOutput<TIOutput, TIInput, TFrame, TBuffer, TBufferCollection, TFormat>, TIElement where TIOutputCollection : IMediaOutputCollection<TIOutput, TIInput, TFrame, TBuffer, TBufferCollection, TFormat, TIOutputCollection> where TIInput : IMediaInput<TIOutput, TIInput, TFrame, TBuffer, TBufferCollection, TFormat>, TIElement where TIInputCollection : IMediaInputCollection<TIOutput, TIInput, TFrame, TBuffer, TBufferCollection, TFormat, TIInputCollection> where TIElement : IMediaElement where TSource : MediaSource<TIOutput, TIInput, TIInputCollection, TSource, TFrame, TBuffer, TBufferCollection, TFormat>, TIOutput where TSink : MediaSink<TIOutput, TIOutputCollection, TIInput, TSink, TFrame, TBuffer, TBufferCollection, TFormat>, TIInput where TPipe : MediaPipe<TIOutput, TIOutputCollection, TIInput, TIInputCollection, TPipe, TFrame, TBuffer, TBufferCollection, TFormat>, TIOutput, TIInput where TTrack : MediaTrack<TIOutput, TIOutputCollection, TIInput, TIInputCollection, TIElement, TSource, TSink, TPipe, TTrack, TBranch, TFrame, TBuffer, TBufferCollection, TFormat> where TBranch : MediaBranch<TIOutput, TIOutputCollection, TIInput, TIInputCollection, TIElement, TSource, TSink, TPipe, TTrack, TBranch, TFrame, TBuffer, TBufferCollection, TFormat>, TIElement where TFrame : MediaFrame<TBuffer, TBufferCollection, TFormat, TFrame> where TBuffer : MediaBuffer<TFormat, TBuffer> where TBufferCollection : MediaBufferCollection<TBuffer, TBufferCollection, TFormat> where TFormat : MediaFormat<TFormat>
public TTrack ActiveTrack { get; }

public TTrack[] ActiveTracks { get; }

public bool Deactivated { get; set; }

public bool Disabled { get; }

public string ExternalId { get; set; }

public string Id { get; }

public abstract string Label { get; }

public bool Muted { get; set; }

public bool Persistent { get; set; }

public string PipelineJson { get; }

public TTrack Track { get; }

public TTrack[] Tracks { get; }

public MediaBranch(TTrack[] tracks)

protected abstract TTrack[] ArrayFromTracks(List<TTrack> tracks)

public virtual bool Destroy()