private void DoMenuHyperlapseAssets()
        {
            List<IAsset> SelectedAssets = ReturnSelectedAssets();

            if (SelectedAssets.Count == 0 || SelectedAssets.FirstOrDefault() == null)
            {
                MessageBox.Show("No asset was selected");
                return;
            }

            CheckSingleFileMP4MOVWMVExtension(SelectedAssets);

            // Get the SDK extension method to  get a reference to the Azure Media Indexer.
            IMediaProcessor processor = GetLatestMediaProcessorByName(Constants.AzureMediaHyperlapse);

            Hyperlapse form = new Hyperlapse(_context, processor.Version)
            {
                HyperlapseJobName = "Hyperlapse processing of " + Constants.NameconvInputasset,
                HyperlapseOutputAssetName = Constants.NameconvInputasset + " - Hyperlapsed",
                HyperlapseInputAssetName = (SelectedAssets.Count > 1) ? SelectedAssets.Count + " assets have been selected for Hyperlapse processing." : "Asset '" + SelectedAssets.FirstOrDefault().Name + "' will be processed by Hyperlapse.",
            };

            string taskname = "Hyperlapse processing of " + Constants.NameconvInputasset;

            if (form.ShowDialog() == DialogResult.OK)
            {
                string configHyperlapse = Hyperlapse.LoadAndUpdateHyperlapseConfiguration(
                Path.Combine(_configurationXMLFiles, @"Hyperlapse.xml"),
                form.HyperlapseStartFrame,
                form.HyperlapseNumFrames,
                form.HyperlapseSpeed
                );

                LaunchJobs_OneJobPerInputAsset_OneTaskPerfConfig(processor, SelectedAssets, form.HyperlapseJobName, form.JobOptions.Priority, taskname, form.HyperlapseOutputAssetName, new List<string> { configHyperlapse }, form.JobOptions.OutputAssetsCreationOptions, form.JobOptions.TasksOptionsSetting, form.JobOptions.StorageSelected);
            }
        }
        private void DoMenuHyperlapseAssets()
        {
            List<IAsset> SelectedAssets = ReturnSelectedAssets();

            if (SelectedAssets.Count == 0 || SelectedAssets.FirstOrDefault() == null)
            {
                MessageBox.Show("No asset was selected");
                return;
            }

            if (SelectedAssets.Any(a => a.AssetFiles.Count() != 1)
                ||
                SelectedAssets.Any(a => a.AssetFiles.Count() == 1 && (!a.AssetFiles.FirstOrDefault().Name.EndsWith(".wmv", StringComparison.OrdinalIgnoreCase) && (!a.AssetFiles.FirstOrDefault().Name.EndsWith(".mp4", StringComparison.OrdinalIgnoreCase)))
                ))
            {
                MessageBox.Show("Source asset must be a single MP4 or WMV file.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }

            // Get the SDK extension method to  get a reference to the Azure Media Indexer.
            IMediaProcessor processor = GetLatestMediaProcessorByName(Constants.AzureMediaHyperlapse);

            Hyperlapse form = new Hyperlapse(_context)
            {
                HyperlapseJobName = "Hyperlapse processing of " + Constants.NameconvInputasset,
                HyperlapseOutputAssetName = Constants.NameconvInputasset + " - Hyperlapsed",
                HyperlapseProcessorName = "Processor: " + processor.Vendor + " / " + processor.Name + " v" + processor.Version,
                HyperlapseInputAssetName = (SelectedAssets.Count > 1) ? SelectedAssets.Count + " assets have been selected for Hyperlapse processing." : "Asset '" + SelectedAssets.FirstOrDefault().Name + "' will be processed by Hyperlapse.",
            };

            string taskname = "Hyperlapse processing of " + Constants.NameconvInputasset;

            if (form.ShowDialog() == DialogResult.OK)
            {
                string configHyperlapse = Hyperlapse.LoadAndUpdateHyperlapseConfiguration(
                Path.Combine(_configurationXMLFiles, @"Hyperlapse.xml"),
                form.HyperlapseStartFrame,
                form.HyperlapseNumFrames,
                form.HyperlapseSpeed
                );

                LaunchJobs(processor, SelectedAssets, form.HyperlapseJobName, form.JobOptions.Priority, taskname, form.HyperlapseOutputAssetName, new List<string> { configHyperlapse }, form.JobOptions.OutputAssetsCreationOptions, form.JobOptions.TasksOptionsSetting, form.JobOptions.StorageSelected);
            }
        }