public TimingPage() { InitializeComponent(); var messageService = new DesktopMessageService(); AppMessagingAdapter.Instance.Initialize(messageService, new IsolatedStorageService()); var roomService = new RoomServiceAdapter(); var viewLocator = new ViewLocator(); _viewModelFactory = new ViewModelFactory(roomService, messageService, viewLocator); _statsVm = _viewModelFactory.GetViewModel <StatisticsViewModel>(); }
public void StartSendingAudioToRoom(string ownerUserTag, string host, List <byte[]> testFrames, bool sendLive, OperationCallback callback) { // What we should use when there's only one other person, and CPU is OK: // 16Khz, Speex, WebRtc at full strength var config = MediaConfig.Default; config.LocalSsrcId = (ushort)rnd.Next(ushort.MinValue, ushort.MaxValue); config.AudioContextSelection = AudioContextSelection.HighQualityDirect; config.MediaServerHost = host; // Create the media controller var playedAudioFormat = new AudioFormat(); var mediaStatistics = new TimingMediaStatistics(); var mediaEnvironment = new TestMediaEnvironment(); var mediaConnection = new RtpMediaConnection(config, mediaStatistics); var vqc = new VideoQualityController(MediaConfig.Default.LocalSsrcId); _mediaController = new MediaController(MediaConfig.Default, playedAudioFormat, mediaStatistics, mediaEnvironment, mediaConnection, vqc); // Create the audio sink adapter. _captureSource = new CaptureSource(); _captureSource.VideoCaptureDevice = null; if (_captureSource.AudioCaptureDevice == null) { _captureSource.AudioCaptureDevice = CaptureDeviceConfiguration.GetDefaultAudioCaptureDevice(); if (_captureSource.AudioCaptureDevice == null) { throw new InvalidOperationException("No suitable audio capture device was found"); } } MediaDeviceConfig.SelectBestAudioFormat(_captureSource.AudioCaptureDevice); _captureSource.AudioCaptureDevice.AudioFrameSize = AudioFormat.Default.MillisecondsPerFrame; // 20 milliseconds _audioSinkAdapter = sendLive ? new AudioSinkAdapter(_captureSource, _mediaController, config, mediaEnvironment, playedAudioFormat) : new FromFileAudioSinkAdapter(_captureSource, _mediaController, config, mediaEnvironment, playedAudioFormat, testFrames); var roomService = new RoomServiceAdapter(); roomService.CreateClient(); roomService.GetRoomId(Constants.DefaultCompanyTag, Constants.DefaultAuthenticationGroupTag, ownerUserTag, Constants.DefaultRoomName, (getRoomError, result) => { if (getRoomError != null) { callback(getRoomError); } else { // Connect. _mediaController.Connect(result.RoomId.ToString(), connectError => Deployment.Current.Dispatcher.BeginInvoke(() => { if (connectError == null) { ClientLogger.Debug("MacTestViewModel connected to MediaController"); _captureSource.Start(); } _mediaController.RegisterRemoteSession((ushort)(config.LocalSsrcId + 1)); callback(connectError); })); } }); }