internal async void radRecord_Checked(Object sender, Windows.UI.Xaml.RoutedEventArgs e) { try { if (!m_bRecording) { //if camera does not support lowlag record and lowlag photo at the same time //disable all buttons while preparing lowlag record btnTakePhoto2.IsEnabled = false; btnStartStopRecord2.IsEnabled = false; //uncheck TakePhoto Mode radTakePhoto.IsChecked = false; //disable check option while preparing lowlag record radTakePhoto.IsEnabled = false; radRecord.IsEnabled = false; if (m_bLowLagPrepared) { //if camera does not support lowlag record and lowlag photo at the same time //but lowlag photo is already prepared, un-prepare lowlag photo first, before preparing lowlag record await m_lowLagPhoto.FinishAsync(); m_bLowLagPrepared = false; //prepare lowlag record PrepareForVideoRecording(); m_recordStorageFile = await Windows.Storage.KnownFolders.VideosLibrary.CreateFileAsync(VIDEO_FILE_NAME, Windows.Storage.CreationCollisionOption.GenerateUniqueName); ShowStatusMessage("Create record file successful"); MediaEncodingProfile recordProfile = null; recordProfile = MediaEncodingProfile.CreateMp4(Windows.Media.MediaProperties.VideoEncodingQuality.Auto); m_lowLagRecord = await m_mediaCaptureMgr.PrepareLowLagRecordToStorageFileAsync(recordProfile, m_recordStorageFile); btnStartStopRecord2.IsEnabled = true; m_bRecording = true; btnStartStopRecord2.Content = "StartRecord"; //re-enable check option, after lowlag record finish preparing radTakePhoto.IsEnabled = true; radRecord.IsEnabled = true; } else //(!m_bLowLagPrepared) { //if camera does not support lowlag record and lowlag photo at the same time //lowlag photo is not prepared, go ahead to prepare lowlag record PrepareForVideoRecording(); m_recordStorageFile = await Windows.Storage.KnownFolders.VideosLibrary.CreateFileAsync(VIDEO_FILE_NAME, Windows.Storage.CreationCollisionOption.GenerateUniqueName); ShowStatusMessage("Create record file successful"); MediaEncodingProfile recordProfile = null; recordProfile = MediaEncodingProfile.CreateMp4(Windows.Media.MediaProperties.VideoEncodingQuality.Auto); m_lowLagRecord = await m_mediaCaptureMgr.PrepareLowLagRecordToStorageFileAsync(recordProfile, m_recordStorageFile); btnStartStopRecord2.IsEnabled = true; m_bRecording = true; btnStartStopRecord2.Content = "StartRecord"; //re-enable check option, after lowlag record finish preparing radTakePhoto.IsEnabled = true; radRecord.IsEnabled = true; } } } catch (Exception exception) { ShowExceptionMessage(exception); } }
private async void PrepareLowLagRecordAsync() { try { PrepareForVideoRecording(); m_recordStorageFile = await Windows.Storage.KnownFolders.VideosLibrary.CreateFileAsync(VIDEO_FILE_NAME, Windows.Storage.CreationCollisionOption.GenerateUniqueName); ShowStatusMessage("Create record file successful"); MediaEncodingProfile recordProfile = null; recordProfile = MediaEncodingProfile.CreateMp4(Windows.Media.MediaProperties.VideoEncodingQuality.Auto); m_lowLagRecord = await m_mediaCaptureMgr.PrepareLowLagRecordToStorageFileAsync(recordProfile, m_recordStorageFile); m_bRecording = true; btnStartStopRecord2.Content = "StartRecord"; btnStartStopRecord2.IsEnabled = true; } catch (Exception exception) { ShowExceptionMessage(exception); } }