private void StartPreview()
        {
            int videoDevice = VideoSelect.SelectedIndex;
            int audioDevice = AudioSelect.SelectedIndex;

            if (videoDevice == -1 || audioDevice == -1)
            {
                return;
            }

            ResetEffects();

            UpdateUiState(PageState.None);

            string videoDeviceId = ((ComboBoxItem)VideoSelect.SelectedItem).Name.ToString();
            string audioDeviceId = ((ComboBoxItem)AudioSelect.SelectedItem).Name.ToString();

            MediaCaptureInitializationSettings settings = new MediaCaptureInitializationSettings {
                VideoDeviceId        = videoDeviceId,
                AudioDeviceId        = audioDeviceId,
                StreamingCaptureMode = StreamingCaptureMode.AudioAndVideo,
            };

            IAsyncOperation <IPreview> previewTask;

            previewTask = cameraCapture.createPreview(PreviewWindow, settings);

            if (preview != null)
            {
                preview.start().AsTask().Wait();
            }

            previewTask.Completed = delegate {
                try {
                    preview = previewTask.GetResults();
                }
                catch (UnauthorizedAccessException) {
                    ShowMessageDialog(StringLoader.Get("Camera_Access_Denied"));
                    return;
                }

                preview.start().AsTask().Wait();

                UpdateUiState(PageState.Ready);
            };
        }