Example #1
0
        public VideoSettingModel(VideoSettingView view)
        {
            _view             = view;
            _cameraDeviceList = new List <VideoDeviceModel>();
            _docDeviceList    = new List <VideoDeviceModel>();
            _s = new InputSimulator();

            _configManager    = new ConfigManager();
            _meetingSdkAgent  = DependencyResolver.Current.GetService <IMeetingSdkAgent>();
            _localDataManager = DependencyResolver.Current.GetService <ILocalDataManager>();

            _deviceNameAccessor = DependencyResolver.Current.GetService <IDeviceNameAccessor>();
            _deviceConfigLoader = DependencyResolver.Current.GetService <IDeviceConfigLoader>();

            CameraDeviceList = new ObservableCollection <string>();
            DocDeviceList    = new ObservableCollection <string>();

            CameraColorSpaces = new ObservableCollection <VideoFormatModel>();
            DocColorSpaces    = new ObservableCollection <VideoFormatModel>();

            VedioParameterVgaList    = new ObservableCollection <string>();
            DocParameterVgaList      = new ObservableCollection <string>();
            VedioParameterRatesList  = new ObservableCollection <int>();
            LoadCommand              = new DelegateCommand(Loading);
            WindowKeyDownCommand     = new DelegateCommand <object>(WindowKeyDownHandler);
            CheckCameraDeviceCommand = DelegateCommand.FromAsyncHandler(CheckCameraDeviceAsync);
            CheckDocDeviceCommand    = DelegateCommand.FromAsyncHandler(CheckDocDeviceAsync);

            //CheckCameraColorSpaceCommand = new DelegateCommand(CheckCameraColorSpace);
            //CheckDocColorSpaceCommand = new DelegateCommand(CheckDocColorSpace);

            GoBackCommand = new DelegateCommand(GoBack);
        }
Example #2
0
        public void SaveConfig(IDeviceNameAccessor accessor)
        {
            try
            {
                var items = new Dictionary <string, DeviceConfigItem>();
                foreach (var keyValue in accessor)
                {
                    DeviceConfigItem item;
                    if (!items.TryGetValue(keyValue.Key, out item))
                    {
                        item = new DeviceConfigItem()
                        {
                            TypeName = keyValue.Key
                        };
                        items.Add(keyValue.Key, item);
                    }

                    item.DeviceNames.Add(keyValue.Value);
                }

                var appPath = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
                var path    = Path.Combine(appPath, ConfigFileName);
                var json    = JsonConvert.SerializeObject(items.Values, Formatting.Indented);
                if (File.Exists(path))
                {
                    File.Delete(path);
                }

                File.WriteAllText(path, json, Encoding.UTF8);
            }
            catch (Exception e)
            {
                Log.Error(e, "保存设备配置文件失败。");
            }
        }
Example #3
0
        void LoadConfig(IDeviceNameAccessor accessor)
        {
            var items = _deviceConfigLoader.LoadConfig();

            foreach (var item in items)
            {
                foreach (var deviceName in item.DeviceNames)
                {
                    accessor.SetName(item.TypeName, deviceName.Name, deviceName.Option);
                }
            }
        }
        public MeetingWindowManager(IEventAggregator eventAggregator)
        {
            _eventAggregator    = eventAggregator;
            _meetingSdkWrapper  = IoC.Get <IMeetingSdkAgent>();
            _deviceNameAccessor = IoC.Get <IDeviceNameAccessor>();

            LayoutRendererStore = new LayoutRendererStore();
            ModeDisplayerStore  = new ModeDisplayerStore();

            _layoutWindows = new List <ILayoutWindow>();
            _layoutWindows.Add(this);
        }
Example #5
0
        public string IsVideoAudioSettingsValid()
        {
            MeetingResult <IList <VideoDeviceModel> > videoDeviceResult = _meetingSdkAgent.GetVideoDevices();

            MeetingResult <IList <string> > micResult = _meetingSdkAgent.GetMicrophones();

            MeetingResult <IList <string> > speakerResult = _meetingSdkAgent.GetLoudSpeakers();

            IDeviceNameAccessor deviceNameAccessor = IoC.Get <IDeviceNameAccessor>();

            IEnumerable <string> cameraDeviceName;

            if (videoDeviceResult.Result.Count == 0 || string.IsNullOrEmpty(_configManager.MainVideoInfo?.VideoDevice) || !deviceNameAccessor.TryGetName(DeviceName.Camera, new Func <DeviceName, bool>(d => { return(d.Option == "first"); }), out cameraDeviceName) || !videoDeviceResult.Result.Any(vdm => vdm.DeviceName == cameraDeviceName.FirstOrDefault()))
            {
                return(Messages.WarningNoCamera);
            }

            if (_configManager.MainVideoInfo?.DisplayWidth == 0 || _configManager.MainVideoInfo?.DisplayHeight == 0 || _configManager.MainVideoInfo?.VideoBitRate == 0)
            {
                return(Messages.WarningWrongVideoParams);
            }

            IEnumerable <string> micDeviceName;

            if (micResult.Result.Count == 0 || string.IsNullOrEmpty(_configManager.AudioInfo?.AudioSammpleDevice) || !deviceNameAccessor.TryGetName(DeviceName.Microphone, new Func <DeviceName, bool>(d => { return(d.Option == "first"); }), out micDeviceName) || !micResult.Result.Any(mic => mic == micDeviceName.FirstOrDefault()))
            {
                return(Messages.WarningNoMicrophone);
            }

            if (_configManager.AudioInfo?.SampleRate == 0 || _configManager.AudioInfo?.AAC == 0)
            {
                return(Messages.WarningWrongMicParams);
            }

            string audioOutputDeviceName;

            if (speakerResult.Result.Count == 0 || string.IsNullOrEmpty(_configManager.AudioInfo?.AudioOutPutDevice) || !deviceNameAccessor.TryGetSingleName(DeviceName.Speaker, out audioOutputDeviceName) || !speakerResult.Result.Any(speaker => speaker == audioOutputDeviceName))
            {
                return(Messages.WarningNoSpeaker);
            }

            if (string.IsNullOrEmpty(_configManager.RecordInfo.RecordDirectory))
            {
                return(Messages.WarningRecordDirectoryNotSet);
            }

            if (!Directory.Exists(_configManager.RecordInfo.RecordDirectory))
            {
                return(Messages.WarningRecordDirectoryNotExist);
            }

            return("");
        }
Example #6
0
        public ClassModeViewModel()
        {
            _localDataManager   = DependencyResolver.Current.GetService <ILocalDataManager>();
            _meetingService     = DependencyResolver.Current.GetService <IMeetingSdkAgent>();
            _windowManager      = DependencyResolver.Current.GetService <IMeetingWindowManager>();
            _remoteRecord       = DependencyResolver.Current.GetService <IRemoteRecord>();
            _deviceNameAccessor = DependencyResolver.Current.GetService <IDeviceNameAccessor>();

            CheckClassModeCommand = new DelegateCommand <object>(CheckClassModeAsync);
            ShareCommand          = new DelegateCommand(ShareAsync);
            RecordCommand         = DelegateCommand.FromAsyncHandler(RecordAsync);
            InitClassModeItems();
            InitToggleItems();
        }
Example #7
0
        public AudioSettingModel(AudioSettingView view)
        {
            _view             = view;
            Aac               = new ObservableCollection <int>();
            SampleRate        = new ObservableCollection <int>();
            AudioSource       = new ObservableCollection <string>();
            DocAudioSource    = new ObservableCollection <string>();
            AudioOutPutDevice = new ObservableCollection <string>();

            _s                = InputSimulatorManager.Instance.InputSimu;
            _configManager    = new ConfigManager();
            _meetingSdkAgent  = DependencyResolver.Current.GetService <IMeetingSdkAgent>();
            _localDataManager = DependencyResolver.Current.GetService <ILocalDataManager>();

            _deviceNameAccessor = DependencyResolver.Current.GetService <IDeviceNameAccessor>();
            _deviceConfigLoader = DependencyResolver.Current.GetService <IDeviceConfigLoader>();

            LoadCommand                    = new DelegateCommand(Loading);
            WindowKeyDownCommand           = new DelegateCommand <object>(WindowKeyDownHandler);
            GoBackCommand                  = new DelegateCommand(GoBack);
            CheckPeopleSourceDeviceCommand = new DelegateCommand(CheckPeopleSourceDevice);
            CheckDocSourceDeviceCommand    = new DelegateCommand(CheckDocSourceDevice);
        }
Example #8
0
 public async Task Provider(IDeviceNameAccessor accessor)
 {
     await Async.Create(() => Task.Run(() => LoadConfig(accessor))).TryRun("加载DeviceName配置信息。");
 }
Example #9
0
        public bool IsVideoAudioSettingsValid(Window sourceWindow)
        {
            string errorMsg = string.Empty;

            MeetingResult <IList <VideoDeviceModel> > videoDeviceResult = _meetingSdkAgent.GetVideoDevices();

            MeetingResult <IList <string> > micResult = _meetingSdkAgent.GetMicrophones();

            MeetingResult <IList <string> > speakerResult = _meetingSdkAgent.GetLoudSpeakers();

            ConfigManager configManager = _localDataManager.GetSettingConfigData();

            if (configManager == null)
            {
                errorMsg = "参数配置有误!";
                MessageQueueManager.Instance.AddInfo(errorMsg);

                SettingNavView settingNavView = new SettingNavView();
                settingNavView.Show();

                sourceWindow?.Close();
                return(false);
            }

            IDeviceNameAccessor deviceNameAccessor = DependencyResolver.Current.GetService <IDeviceNameAccessor>();

            IEnumerable <string> cameraDeviceName;

            if (videoDeviceResult.Result.Count == 0 || string.IsNullOrEmpty(configManager.MainVideoInfo?.VideoDevice) || !deviceNameAccessor.TryGetName(DeviceName.Camera, new Func <DeviceName, bool>(d => { return(d.Option == "first"); }), out cameraDeviceName) || !videoDeviceResult.Result.Any(vdm => vdm.DeviceName == cameraDeviceName.FirstOrDefault()))
            {
                errorMsg = "人像采集未设置!";
                MessageQueueManager.Instance.AddInfo(errorMsg);

                VideoSettingView videoSettingView = new VideoSettingView();
                videoSettingView.Show();

                sourceWindow?.Close();
                return(false);
            }

            if (configManager.MainVideoInfo?.DisplayWidth == 0 || configManager.MainVideoInfo?.DisplayHeight == 0 || configManager.MainVideoInfo?.VideoBitRate == 0)
            {
                errorMsg = "人像采集参数未设置!";
                MessageQueueManager.Instance.AddInfo(errorMsg);

                VideoSettingView videoSettingView = new VideoSettingView();
                videoSettingView.Show();

                sourceWindow?.Close();

                return(false);
            }

            IEnumerable <string> micDeviceName;

            if (micResult.Result.Count == 0 || string.IsNullOrEmpty(configManager.AudioInfo?.AudioSammpleDevice) || !deviceNameAccessor.TryGetName(DeviceName.Microphone, new Func <DeviceName, bool>(d => { return(d.Option == "first"); }), out micDeviceName) || !micResult.Result.Any(mic => mic == micDeviceName.FirstOrDefault()))
            {
                errorMsg = "人声音源未设置!";
                MessageQueueManager.Instance.AddInfo(errorMsg);

                AudioSettingView audioSettingView = new AudioSettingView();
                audioSettingView.Show();

                sourceWindow?.Close();

                return(false);
            }

            if (configManager.AudioInfo?.SampleRate == 0 || configManager.AudioInfo?.AAC == 0)
            {
                errorMsg = "人声音源参数未设置!";
                MessageQueueManager.Instance.AddInfo(errorMsg);

                AudioSettingView audioSettingView = new AudioSettingView();
                audioSettingView.Show();

                sourceWindow?.Close();

                return(false);
            }

            string audioOutputDeviceName;

            if (speakerResult.Result.Count == 0 || string.IsNullOrEmpty(configManager.AudioInfo?.AudioOutPutDevice) || !deviceNameAccessor.TryGetSingleName(DeviceName.Speaker, out audioOutputDeviceName) || !speakerResult.Result.Any(speaker => speaker == audioOutputDeviceName))
            {
                errorMsg = "放音设备未设置!";
                MessageQueueManager.Instance.AddInfo(errorMsg);

                AudioSettingView audioSettingView = new AudioSettingView();
                audioSettingView.Show();

                sourceWindow?.Close();

                return(false);
            }


            return(true);
        }