feat: add IHasMultiviewControl interface for multiview enable and layout feedback

Exposes SetMultiviewEnabled plus MultiviewEnabled/MultiviewLayout feedbacks on an
Essentials Core interface so room plugins can drive a multiview/UVC compositor
(e.g. StreamSync) without a compile-time dependency on the hardware plugin. Layout
selection remains on IHasScreensWithLayouts.ApplyLayout.
This commit is contained in:
equinoy 2026-08-20 14:31:29 -05:00
parent da2a09f7cb
commit 8c908c80e2

View file

@ -0,0 +1,28 @@
namespace PepperDash.Essentials.Core.DeviceTypeInterfaces;
/// <summary>
/// Defines a device (e.g. a multiview/UVC compositor) whose multiview output can be enabled and
/// whose active layout can be observed. Implementing this interface (instead of requiring consumers
/// to reference the hardware-specific plugin type directly) lets other plugins (e.g. a room plugin)
/// turn the multiview on and read its current layout without taking a compile-time dependency on the
/// specific hardware plugin that implements it. The layout is <em>set</em> via
/// <see cref="IHasScreensWithLayouts.ApplyLayout(uint, uint)"/>.
/// </summary>
public interface IHasMultiviewControl
{
/// <summary>
/// Enables or disables the multiview output.
/// </summary>
/// <param name="enabled">True to enable multiview, false to disable.</param>
void SetMultiviewEnabled(bool enabled);
/// <summary>
/// Feedback for whether the multiview output is currently enabled.
/// </summary>
BoolFeedback MultiviewEnabled { get; }
/// <summary>
/// Feedback for the current multiview layout index.
/// </summary>
IntFeedback MultiviewLayout { get; }
}