mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-02-16 13:15:03 +00:00
Merge pull request #616 from PepperDash/feature/add-cameramute-to-ciscosparkcodec
#415 Adds camera mute methods and feedback to CiscoSparkCodec
This commit is contained in:
@@ -46,6 +46,17 @@ namespace PepperDash.Essentials.Devices.Common.Cameras
|
|||||||
void CameraOff();
|
void CameraOff();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Describes the ability to mute and unmute camera video
|
||||||
|
/// </summary>
|
||||||
|
public interface IHasCameraMute
|
||||||
|
{
|
||||||
|
BoolFeedback CameraIsMutedFeedback { get; }
|
||||||
|
void CameraMuteOn();
|
||||||
|
void CameraMuteOff();
|
||||||
|
void CameraMuteToggle();
|
||||||
|
}
|
||||||
|
|
||||||
public class CameraSelectedEventArgs : EventArgs
|
public class CameraSelectedEventArgs : EventArgs
|
||||||
{
|
{
|
||||||
public CameraBase SelectedCamera { get; private set; }
|
public CameraBase SelectedCamera { get; private set; }
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco
|
|||||||
|
|
||||||
public class CiscoSparkCodec : VideoCodecBase, IHasCallHistory, IHasCallFavorites, IHasDirectory,
|
public class CiscoSparkCodec : VideoCodecBase, IHasCallHistory, IHasCallFavorites, IHasDirectory,
|
||||||
IHasScheduleAwareness, IOccupancyStatusProvider, IHasCodecLayouts, IHasCodecSelfView,
|
IHasScheduleAwareness, IOccupancyStatusProvider, IHasCodecLayouts, IHasCodecSelfView,
|
||||||
ICommunicationMonitor, IRouting, IHasCodecCameras, IHasCameraAutoMode, IHasCodecRoomPresets, IHasExternalSourceSwitching, IHasBranding
|
ICommunicationMonitor, IRouting, IHasCodecCameras, IHasCameraAutoMode, IHasCodecRoomPresets, IHasExternalSourceSwitching, IHasBranding, IHasCameraOff, IHasCameraMute
|
||||||
{
|
{
|
||||||
public event EventHandler<DirectoryEventArgs> DirectoryResultReturned;
|
public event EventHandler<DirectoryEventArgs> DirectoryResultReturned;
|
||||||
|
|
||||||
@@ -311,6 +311,9 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco
|
|||||||
LocalLayoutFeedback = new StringFeedback(LocalLayoutFeedbackFunc);
|
LocalLayoutFeedback = new StringFeedback(LocalLayoutFeedbackFunc);
|
||||||
LocalLayoutIsProminentFeedback = new BoolFeedback(LocalLayoutIsProminentFeedbackFunc);
|
LocalLayoutIsProminentFeedback = new BoolFeedback(LocalLayoutIsProminentFeedbackFunc);
|
||||||
FarEndIsSharingContentFeedback = new BoolFeedback(FarEndIsSharingContentFeedbackFunc);
|
FarEndIsSharingContentFeedback = new BoolFeedback(FarEndIsSharingContentFeedbackFunc);
|
||||||
|
CameraIsOffFeedback = new BoolFeedback(() => CodecStatus.Status.Video.Input.MainVideoMute.BoolValue);
|
||||||
|
CameraIsMutedFeedback = CameraIsOffFeedback;
|
||||||
|
|
||||||
|
|
||||||
PresentationViewMaximizedFeedback = new BoolFeedback(() => CurrentPresentationView == "Maximized");
|
PresentationViewMaximizedFeedback = new BoolFeedback(() => CurrentPresentationView == "Maximized");
|
||||||
|
|
||||||
@@ -376,8 +379,9 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco
|
|||||||
CodecStatus.Status.Video.Selfview.Mode.ValueChangedAction = SelfviewIsOnFeedback.FireUpdate;
|
CodecStatus.Status.Video.Selfview.Mode.ValueChangedAction = SelfviewIsOnFeedback.FireUpdate;
|
||||||
CodecStatus.Status.Video.Selfview.PIPPosition.ValueChangedAction = ComputeSelfviewPipStatus;
|
CodecStatus.Status.Video.Selfview.PIPPosition.ValueChangedAction = ComputeSelfviewPipStatus;
|
||||||
CodecStatus.Status.Video.Layout.LayoutFamily.Local.ValueChangedAction = ComputeLocalLayout;
|
CodecStatus.Status.Video.Layout.LayoutFamily.Local.ValueChangedAction = ComputeLocalLayout;
|
||||||
CodecStatus.Status.Conference.Presentation.Mode.ValueChangedAction += SharingContentIsOnFeedback.FireUpdate;
|
CodecStatus.Status.Conference.Presentation.Mode.ValueChangedAction = SharingContentIsOnFeedback.FireUpdate;
|
||||||
CodecStatus.Status.Conference.Presentation.Mode.ValueChangedAction += FarEndIsSharingContentFeedback.FireUpdate;
|
CodecStatus.Status.Conference.Presentation.Mode.ValueChangedAction = FarEndIsSharingContentFeedback.FireUpdate;
|
||||||
|
CodecStatus.Status.Video.Input.MainVideoMute.ValueChangedAction = CameraIsOffFeedback.FireUpdate;
|
||||||
|
|
||||||
CodecOsdIn = new RoutingInputPort(RoutingPortNames.CodecOsd, eRoutingSignalType.Audio | eRoutingSignalType.Video,
|
CodecOsdIn = new RoutingInputPort(RoutingPortNames.CodecOsd, eRoutingSignalType.Audio | eRoutingSignalType.Video,
|
||||||
eRoutingPortConnectionType.Hdmi, new Action(StopSharing), this);
|
eRoutingPortConnectionType.Hdmi, new Action(StopSharing), this);
|
||||||
@@ -1631,6 +1635,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco
|
|||||||
public void CameraAutoModeOn()
|
public void CameraAutoModeOn()
|
||||||
{
|
{
|
||||||
SendText("xCommand Cameras SpeakerTrack Activate");
|
SendText("xCommand Cameras SpeakerTrack Activate");
|
||||||
|
CameraMuteOff();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void CameraAutoModeOff()
|
public void CameraAutoModeOff()
|
||||||
@@ -1706,6 +1711,8 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco
|
|||||||
_selectedCamera = value;
|
_selectedCamera = value;
|
||||||
SelectedCameraFeedback.FireUpdate();
|
SelectedCameraFeedback.FireUpdate();
|
||||||
ControllingFarEndCameraFeedback.FireUpdate();
|
ControllingFarEndCameraFeedback.FireUpdate();
|
||||||
|
if (CameraIsOffFeedback.BoolValue)
|
||||||
|
CameraMuteOff();
|
||||||
|
|
||||||
var handler = CameraSelected;
|
var handler = CameraSelected;
|
||||||
if (handler != null)
|
if (handler != null)
|
||||||
@@ -1969,7 +1976,47 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco
|
|||||||
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
|
||||||
|
#region IHasCameraOff Members
|
||||||
|
|
||||||
|
public BoolFeedback CameraIsOffFeedback { get; private set; }
|
||||||
|
|
||||||
|
public void CameraOff()
|
||||||
|
{
|
||||||
|
CameraMuteOn();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
public BoolFeedback CameraIsMutedFeedback { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Mutes the outgoing camera video
|
||||||
|
/// </summary>
|
||||||
|
public void CameraMuteOn()
|
||||||
|
{
|
||||||
|
SendText("xCommand Video InputMainVideo Mute");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Unmutes the outgoing camera video
|
||||||
|
/// </summary>
|
||||||
|
public void CameraMuteOff()
|
||||||
|
{
|
||||||
|
SendText("xCommand Video InputMainVideo Unmute");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Toggles the camera mute state
|
||||||
|
/// </summary>
|
||||||
|
public void CameraMuteToggle()
|
||||||
|
{
|
||||||
|
if (CameraIsMutedFeedback.BoolValue)
|
||||||
|
CameraMuteOff();
|
||||||
|
else
|
||||||
|
CameraMuteOn();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -1606,6 +1606,22 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco
|
|||||||
public string Value { get; set; }
|
public string Value { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class MainVideoMute : ValueProperty
|
||||||
|
{
|
||||||
|
public bool BoolValue { get; private set; }
|
||||||
|
|
||||||
|
public string Value
|
||||||
|
{
|
||||||
|
set
|
||||||
|
{
|
||||||
|
// If the incoming value is "On" it sets the BoolValue true, otherwise sets it false
|
||||||
|
BoolValue = value == "On";
|
||||||
|
OnValueChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public class ConnectorId
|
public class ConnectorId
|
||||||
{
|
{
|
||||||
public string Value { get; set; }
|
public string Value { get; set; }
|
||||||
@@ -1662,6 +1678,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco
|
|||||||
{
|
{
|
||||||
public List<Connector> Connector { get; set; }
|
public List<Connector> Connector { get; set; }
|
||||||
public MainVideoSource MainVideoSource { get; set; }
|
public MainVideoSource MainVideoSource { get; set; }
|
||||||
|
public MainVideoMute MainVideoMute { get; set; }
|
||||||
public List<Source> Source { get; set; }
|
public List<Source> Source { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
|||||||
{
|
{
|
||||||
public class ZoomRoom : VideoCodecBase, IHasCodecSelfView, IHasDirectoryHistoryStack, ICommunicationMonitor,
|
public class ZoomRoom : VideoCodecBase, IHasCodecSelfView, IHasDirectoryHistoryStack, ICommunicationMonitor,
|
||||||
IRouting,
|
IRouting,
|
||||||
IHasScheduleAwareness, IHasCodecCameras, IHasParticipants, IHasCameraOff, IHasCameraAutoMode,
|
IHasScheduleAwareness, IHasCodecCameras, IHasParticipants, IHasCameraOff, IHasCameraMute, IHasCameraAutoMode,
|
||||||
IHasFarEndContentStatus, IHasSelfviewPosition, IHasPhoneDialing
|
IHasFarEndContentStatus, IHasSelfviewPosition, IHasPhoneDialing
|
||||||
{
|
{
|
||||||
private const long MeetingRefreshTimer = 60000;
|
private const long MeetingRefreshTimer = 60000;
|
||||||
@@ -98,6 +98,8 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
|||||||
|
|
||||||
CameraIsOffFeedback = new BoolFeedback(CameraIsOffFeedbackFunc);
|
CameraIsOffFeedback = new BoolFeedback(CameraIsOffFeedbackFunc);
|
||||||
|
|
||||||
|
CameraIsMutedFeedback = CameraIsOffFeedback;
|
||||||
|
|
||||||
CameraAutoModeIsOnFeedback = new BoolFeedback(CameraAutoModeIsOnFeedbackFunc);
|
CameraAutoModeIsOnFeedback = new BoolFeedback(CameraAutoModeIsOnFeedbackFunc);
|
||||||
|
|
||||||
CodecSchedule = new CodecScheduleAwareness(MeetingRefreshTimer);
|
CodecSchedule = new CodecScheduleAwareness(MeetingRefreshTimer);
|
||||||
@@ -1775,16 +1777,37 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
|||||||
|
|
||||||
public void CameraOff()
|
public void CameraOff()
|
||||||
{
|
{
|
||||||
SendText("zConfiguration Call Camera Mute: On");
|
CameraMuteOn();
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
public BoolFeedback CameraIsMutedFeedback { get; private set; }
|
||||||
|
|
||||||
|
public void CameraMuteOn()
|
||||||
|
{
|
||||||
|
SendText("zConfiguration Call Camera Mute: On");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void CameraMuteOff()
|
||||||
|
{
|
||||||
|
SendText("zConfiguration Call Camera Mute: Off");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void CameraMuteToggle()
|
||||||
|
{
|
||||||
|
if (CameraIsMutedFeedback.BoolValue)
|
||||||
|
CameraMuteOff();
|
||||||
|
else
|
||||||
|
CameraMuteOn();
|
||||||
|
}
|
||||||
|
|
||||||
#region Implementation of IHasCameraAutoMode
|
#region Implementation of IHasCameraAutoMode
|
||||||
|
|
||||||
//Zoom doesn't support camera auto modes. Setting this to just unmute video
|
//Zoom doesn't support camera auto modes. Setting this to just unmute video
|
||||||
public void CameraAutoModeOn()
|
public void CameraAutoModeOn()
|
||||||
{
|
{
|
||||||
|
CameraMuteOff();
|
||||||
throw new NotImplementedException("Zoom Room Doesn't support camera auto mode");
|
throw new NotImplementedException("Zoom Room Doesn't support camera auto mode");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user