public async void BulkExport(List <StorageFile> files, int maxFrames, int frameTime)
        {
            var picker2 = new FolderPicker
            {
                ViewMode = PickerViewMode.Thumbnail,
                SuggestedStartLocation = PickerLocationId.PicturesLibrary
            };

            picker2.FileTypeFilter.Add("*");
            // Select AEDAT file to be converted
            StorageFolder folder = await picker2.PickSingleFolderAsync();

            if (folder == null)
            {
                showLoading.IsActive      = false;
                backgroundTint.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
                return;
            }

            foreach (StorageFile file in files)
            {
                var headerData = await AedatUtilities.GetHeaderData(file);

                var aedatFile = (await file.OpenReadAsync()).AsStreamForRead();
                aedatFile.Seek(headerData.Item1, SeekOrigin.Begin);//skip over header.

                // Determine camera type from AEDAT header
                CameraParameters cam = headerData.Item2;
                if (cam == null)
                {
                    await invalidCameraDataDialog.ShowAsync();

                    return;
                }
                showLoading.IsActive      = true;
                backgroundTint.Visibility = Windows.UI.Xaml.Visibility.Visible;

                StorageFolder folder2 = await folder.CreateFolderAsync(file.Name.Replace(".aedat", "") + " EventChunks");

                if (playbackType.IsOn)
                {
                    await TimeBasedReconstruction(aedatFile, cam, frameTime, maxFrames, folder2, file.Name.Replace(".aedat", ""));
                }
                else
                {
                    int numOfEvents = Int32.Parse(numOfEventInput.Text);
                    await EventBasedReconstruction(aedatFile, cam, numOfEvents, maxFrames, folder2, file.Name.Replace(".aedat", ""));
                }
            }
            showLoading.IsActive      = false;
            backgroundTint.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
        }
        public static async Task <List <AEDATEvent> > GetEvents(StorageFile file)
        {
            var headerData = await AedatUtilities.GetHeaderData(file);

            int endOfHeaderIndex = headerData.Item1;
            CameraParameters cam = headerData.Item2;

            byte[] aedatBytes = new byte[5 * Convert.ToInt32(Math.Pow(10, 8))];             // Read 0.5 GB at a time

            var aedatFile = (await file.OpenReadAsync()).AsStreamForRead();

            aedatFile.Seek(endOfHeaderIndex, SeekOrigin.Begin);                 // Skip over header.

            List <AEDATEvent> tableData = new List <AEDATEvent>();

            if (cam == null)
            {
                ContentDialog invalidData = new ContentDialog()
                {
                    Title           = "Error",
                    Content         = "Could not parse camera parameters.",
                    CloseButtonText = "Close"
                };
                await invalidData.ShowAsync();

                return(null);
            }

            int bytesRead = aedatFile.Read(aedatBytes, 0, aedatBytes.Length);

            while (bytesRead != 0)
            {
                for (int i = 0, length = bytesRead; i < length; i += dataEntrySize)
                {
                    tableData.Add(new AEDATEvent(aedatBytes, i, cam));
                }
                bytesRead = aedatFile.Read(aedatBytes, 0, aedatBytes.Length);
            }
            return(tableData);
        }
        private async void SelectFile_Tapped(object sender, TappedRoutedEventArgs e)
        {
            EventColor onColor;
            EventColor offColor;
            int        frameTime;
            int        maxFrames;
            float      fps;

            try
            {
                // Grab video reconstruction settings from GUI
                // Will throw a FormatException if input is invalid (negative numbers or input has letters)
                (frameTime, maxFrames, onColor, offColor, fps) = ParseVideoSettings();
            }
            catch (FormatException)
            {
                await invaldVideoSettingsDialog.ShowAsync();

                return;
            }

            // Select AEDAT file to be converted to video
            var picker = new FileOpenPicker
            {
                ViewMode = PickerViewMode.Thumbnail,
                SuggestedStartLocation = PickerLocationId.PicturesLibrary
            };

            picker.FileTypeFilter.Add(".AEDAT");

            // Select AEDAT file to be converted
            StorageFile file = await picker.PickSingleFileAsync();

            if (file == null)
            {
                return;
            }

            var headerData = await AedatUtilities.GetHeaderData(file);

            var aedatFile = (await file.OpenReadAsync()).AsStreamForRead();

            aedatFile.Seek(headerData.Item1, SeekOrigin.Begin);                 // Skip over header.

            CameraParameters cam = headerData.Item2;

            if (cam == null)
            {
                await invalidCameraDataDialog.ShowAsync();

                return;
            }
            showLoading.IsActive      = true;
            backgroundTint.Visibility = Windows.UI.Xaml.Visibility.Visible;
            float            playback_frametime = 1.0f / fps;
            MediaComposition composition;

            if (playbackType.IsOn)
            {
                composition = await TimeBasedReconstruction(aedatFile, cam, onColor, offColor, frameTime, maxFrames, playback_frametime);
            }
            else
            {
                int numOfEvents = Int32.Parse(numOfEventInput.Text);
                composition = await EventBasedReconstruction(aedatFile, cam, onColor, offColor, numOfEvents, maxFrames, playback_frametime);
            }
            SaveCompositionToFile(composition, file.DisplayName, cam.cameraX, cam.cameraY);
        }
示例#4
0
        private async void SelectFile_Tapped(object sender, TappedRoutedEventArgs e)
        {
            EventColor onColor;
            EventColor offColor;
            int        frameTime;
            int        maxFrames;

            try
            {
                // Grab video reconstruction settings from GUI
                // Will throw a FormatException if input is invalid (negative numbers or input has letters)
                (frameTime, maxFrames, onColor, offColor) = ParseFrameSettings();
            }
            catch (FormatException)
            {
                await invaldVideoSettingsDialog.ShowAsync();

                return;
            }

            // Select AEDAT file to be converted to video
            var picker = new FileOpenPicker
            {
                ViewMode = PickerViewMode.Thumbnail,
                SuggestedStartLocation = PickerLocationId.PicturesLibrary
            };

            picker.FileTypeFilter.Add(".AEDAT");


            // Select AEDAT file to be converted
            IReadOnlyList <StorageFile> files = await picker.PickMultipleFilesAsync();

            if (files == null)
            {
                showLoading.IsActive      = false;
                backgroundTint.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
                return;
            }

            var picker2 = new FolderPicker
            {
                ViewMode = PickerViewMode.Thumbnail,
                SuggestedStartLocation = PickerLocationId.PicturesLibrary
            };

            picker2.FileTypeFilter.Add("*");

            // Select AEDAT file to be converted
            StorageFolder folder = await picker2.PickSingleFolderAsync();

            if (folder == null)
            {
                showLoading.IsActive      = false;
                backgroundTint.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
                return;
            }

            foreach (var file in files)
            {
                var headerData = await AedatUtilities.GetHeaderData(file);

                var aedatFile = (await file.OpenReadAsync()).AsStreamForRead();
                aedatFile.Seek(headerData.Item1, SeekOrigin.Begin);                 //Skip over header.

                CameraParameters cam = headerData.Item2;
                if (cam == null)
                {
                    await invalidCameraDataDialog.ShowAsync();

                    return;
                }
                showLoading.IsActive      = true;
                backgroundTint.Visibility = Windows.UI.Xaml.Visibility.Visible;


                StorageFolder folder2 = await folder.CreateFolderAsync(file.Name.Replace(".aedat", "") + (playbackType.IsOn ? " time based" : " event based") + " Frames");

                if (playbackType.IsOn)
                {
                    await TimeBasedReconstruction(aedatFile, cam, onColor, offColor, frameTime, maxFrames, folder2, file.Name.Replace(".aedat", ""));
                }
                else
                {
                    int numOfEvents = Int32.Parse(numOfEventInput.Text);
                    await EventBasedReconstruction(aedatFile, cam, onColor, offColor, numOfEvents, maxFrames, folder2, file.Name.Replace(".aedat", ""));
                }
            }
            showLoading.IsActive      = false;
            backgroundTint.Visibility = Windows.UI.Xaml.Visibility.Collapsed;
        }