public SignalTriggerController(
            ITimecodeSettingUseCase timecodeSettingUseCase,
            ITimecodeDecodeUseCase timecodeDecodeUseCase,
            IEndPointSettingUseCase endPointSettingUseCase,
            ISendToEndpointUseCase sendToEndpointUseCase,
            ICommandSettingUseCase commandSettingUseCase,
            IOnAirSettingUseCase onAirSettingUseCase,
            ICommandTriggerUseCase commandTriggerUseCase,
            IGlobalFrameOffsetSettingUseCase globalFrameOffsetSettingUseCase,
            IObsWebsocketSettingUseCase obsSettingUseCase,
            IObsWebsocketCommunicationUseCase obsCommunucationUseCase,
            IOverlayUseCase overlayUseCase)
        {
            this.timecodeSettingUseCase          = timecodeSettingUseCase;
            this.globalFrameOffsetSettingUseCase = globalFrameOffsetSettingUseCase;

            this.endPointSettingUseCase = endPointSettingUseCase;
            this.sendToEndpointUseCase  = sendToEndpointUseCase;
            this.commandSettingUseCase  = commandSettingUseCase;
            this.onAirSettingUseCase    = onAirSettingUseCase;

            this.obsSettingUseCase       = obsSettingUseCase;
            this.obsCommunucationUseCase = obsCommunucationUseCase;

            this.overlayUseCase = overlayUseCase;

            timecodeDecodeUseCase.OnTimecodeUpdatedAsObservable.Subscribe(OnTimecodeUpdated).AddTo(disposable);

            commandTriggerUseCase.OnCommandTriggeredAsObservable.Subscribe(Send).AddTo(disposable);
        }
        public TimecodeDisplayController(ITimecodeDisplayUseCase timecodeDisplayUseCase,
                                         IGlobalFrameOffsetSettingUseCase globalFrameOffsetSettingUseCase)
        {
            this.timecodeDisplayUseCase          = timecodeDisplayUseCase;
            this.globalFrameOffsetSettingUseCase = globalFrameOffsetSettingUseCase;

            this.timecodeDisplayUseCase.OnTimecodeUpdatedAsObservable.Subscribe(t =>
            {
                var offsetTimeCode = OffsetFilter(t);
                onUpdateTimcodeSubject.OnNext(offsetTimeCode);
            }).AddTo(disposable);
        }
 public GlobalFrameOffsetSettingController(IGlobalFrameOffsetSettingUseCase settingUseCase)
 {
     this.useCase = settingUseCase;
 }