[FEATURE]-VideoCodec-Improvements
Is your feature request related to a problem? Please describe.
There is some circular referencing between the ...VideoCodec and ...VideoCodec.Cisco namespaces, specifically related to room presets. This makes it incredibly difficult to decouple the cisco codec classes from essentials
Describe the solution you'd like Currently, the issue lies specifically in RoomPresets and CodecRoomPresets - with a class containing a method to convert cisco codec presets to more genericized presets referencing the cisco namespace rather than staying inside the VideoCodec namespace. I want to create an interface that describes a method to convert these presets and allow each codec device to do the conversion within their own classes.
Describe alternatives you've considered None spring to mind
Additional context I am modifying the codec class to accommodate a specific client need and expand its feature set to include some newer RoomOS features. I want to break this off into its own plugin rather than rely on extending the extant plugin with an eye towards a future where the cisco codec is already broken out from Essentials which would constitute a breaking change.
Looking for comment from @ndorin @andrew-welker @ngenovese11 @jtalborough
I've also added to this commit a new interface IHasCodecLayoutsAvailable designed to report available layouts and a new LinkToApi method for devices that implement this interface and joinmap adjustments. The only added join was serial 142 (To and From SIMPL), which is unused, and in the same cluster of joins currently used for Layout control and feedback.
/// Defines the required elements for layout control with direct layout selection
/// </summary>
public interface IHasCodecLayoutsAvailable : IHasCodecLayouts
{
StringFeedback AvailableLocalLayoutsFeedback { get; set; }
Dictionary<string, string> AvailableLocalLayouts { get; set; }
void LocalLayoutSet(string layoutId);
}```