public void ShouldRemoveAudioStreamFromSequenceAudioStreamsWhenExecutingAudioSequenceSelectionChangedCommandWithPreviouslySelectedAudio()
        {
            var viewModel = this.CreateViewModel();

            SmoothStreamingVideoAsset smoothStreamingVideoAsset = new SmoothStreamingVideoAsset();

            var spanishAudioStream = new AudioStream("audio_es", false);
            var englishAudioStream = new AudioStream("audio_en", false);

            smoothStreamingVideoAsset.AudioStreams.Add(spanishAudioStream);
            smoothStreamingVideoAsset.AudioStreams.Add(englishAudioStream);

            VideoAssetInOut videoInOut = new VideoAssetInOut(smoothStreamingVideoAsset);

            viewModel.VideoAssetInOut = videoInOut;
            viewModel.Asset           = smoothStreamingVideoAsset;

            Assert.AreEqual(1, viewModel.VideoAssetInOut.SequenceAudioStreams.Count);

            viewModel.AudioSequenceSelectionChangedCommand.Execute(
                new StreamOption {
                Name = "audio_en", SequenceSelected = true
            });

            Assert.AreEqual(2, viewModel.VideoAssetInOut.SequenceAudioStreams.Count);

            viewModel.AudioSequenceSelectionChangedCommand.Execute(new StreamOption {
                Name = "audio_en", SequenceSelected = false
            });

            Assert.AreEqual(1, viewModel.VideoAssetInOut.SequenceAudioStreams.Count);
        }
        public void ShouldChangeVideoAssetInOutPreviewAudioStreamWhenExecutingAudioPreviewSelectionChangedCommand()
        {
            var viewModel = this.CreateViewModel();

            VideoAssetInOut           videoInOut = new VideoAssetInOut(new VideoAsset());
            SmoothStreamingVideoAsset smoothStreamingVideoAsset = new SmoothStreamingVideoAsset();

            AudioStream spanishPreviewStream = new AudioStream("audio_es", true);
            AudioStream englishPreviewStream = new AudioStream("audio_es", true);

            smoothStreamingVideoAsset.AudioStreams.Add(spanishPreviewStream);
            smoothStreamingVideoAsset.AudioStreams.Add(englishPreviewStream);

            viewModel.VideoAssetInOut = videoInOut;
            viewModel.Asset           = smoothStreamingVideoAsset;

            Assert.AreSame(spanishPreviewStream, viewModel.VideoAssetInOut.PreviewAudioStream);

            viewModel.AudioPreviewSelectionChangedCommand.Execute(
                new StreamOption {
                Name = "audio_es", PreviewSelected = false
            });

            Assert.IsNotNull(viewModel.VideoAssetInOut.PreviewAudioStream);
            Assert.AreEqual("audio_es", viewModel.VideoAssetInOut.PreviewAudioStream.Name);
            Assert.IsTrue(viewModel.VideoAssetInOut.PreviewAudioStream.IsStereo);
        }
        public void BeginManifestGeneration(Action <IDictionary <Track, string> > callback)
        {
            bool downloadIsInProgress = false;

            this.actionCallback = callback;

            this.startedAllDownloads = false;

            if (this.sequenceRegistry.CurrentSequenceModel != null)
            {
                if (!this.treatGapsAsError && !this.streamsByUri.ContainsKey(this.gapUri))
                {
                    this.pendingDownloads.Add(this.gapUri);
                    this.downloaderManager.DownloadManifestAsync(this.gapUri, true, null);
                    downloadIsInProgress = true;
                }

                var tracks =
                    this.sequenceRegistry.CurrentSequenceModel.Tracks.Where(
                        t => (t.TrackType == TrackType.Visual || t.TrackType == TrackType.Audio) && t.Shots.Count > 0);

                // for each track get all elements and start downloading.
                foreach (var track in tracks)
                {
                    foreach (TimelineElement shot in track.Shots)
                    {
                        VideoAssetInOut assetInOut = shot.Asset as VideoAssetInOut;

                        bool canProcess = (assetInOut != null) ? (assetInOut.VideoAsset is SmoothStreamingVideoAsset) : (shot.Asset is SmoothStreamingVideoAsset || shot.Asset is SmoothStreamingAudioAsset);

                        if (!(this.streamsByUri.ContainsKey(shot.Asset.Source) || this.pendingDownloads.Contains(shot.Asset.Source)) && canProcess)
                        {
                            this.pendingDownloads.Add(shot.Asset.Source);
                            this.downloaderManager.DownloadManifestAsync(shot.Asset.Source, true, null);
                            downloadIsInProgress = true;
                        }
                    }
                }
            }

            this.startedAllDownloads = true;

            if (this.CanGenerateManifest() && !downloadIsInProgress)
            {
                this.GenerateManifest();
            }
        }
Пример #4
0
        /// <summary>
        /// Adds the asset to timeline.
        /// </summary>
        private void AddAssetToTimeline()
        {
            Asset selectedAsset = this.AssetsList.SelectedItem as Asset;

            if (selectedAsset != null && !(selectedAsset is FolderAsset))
            {
                if (selectedAsset is VideoAsset)
                {
                    // VideoPreview preview = this.AssetsList.GetChildControls<VideoPreview>().Where(x => x.Asset == selectedAsset).Single();
                    VideoPreview    preview         = this.AssetsList.GetChildControls <VideoPreview>().Where(x => x.Asset == selectedAsset).Single();
                    VideoAsset      videoAsset      = selectedAsset as VideoAsset;
                    VideoAssetInOut videoAssetInOut = new VideoAssetInOut(videoAsset);
                    this.Model.AddAssetToTimeline(videoAssetInOut);
                }
                else
                {
                    this.Model.AddAssetToTimeline(selectedAsset);
                }
            }
        }
        public void ShouldAddMultipleAudioStreamsToSequenceAudioStreamsWhenExecutingAudioSequenceSelectionChangedCommandWithDifferentAudios()
        {
            var viewModel = this.CreateViewModel();

            SmoothStreamingVideoAsset smoothStreamingVideoAsset = new SmoothStreamingVideoAsset();

            VideoAssetInOut videoInOut = new VideoAssetInOut(smoothStreamingVideoAsset);

            viewModel.VideoAssetInOut = videoInOut;

            var audioStreamEs       = new AudioStream("audio_es", false);
            var audioStreamEn       = new AudioStream("audio_en", false);
            var audioStreamDirector = new AudioStream("audio_director", false);

            smoothStreamingVideoAsset.AudioStreams.Add(audioStreamEs);
            smoothStreamingVideoAsset.AudioStreams.Add(audioStreamEn);
            smoothStreamingVideoAsset.AudioStreams.Add(audioStreamDirector);

            viewModel.Asset = smoothStreamingVideoAsset;

            Assert.AreEqual(1, viewModel.VideoAssetInOut.SequenceAudioStreams.Count);

            viewModel.AudioSequenceSelectionChangedCommand.Execute(
                new StreamOption {
                Name = "audio_en", SequenceSelected = true
            });

            Assert.AreEqual(2, viewModel.VideoAssetInOut.SequenceAudioStreams.Count);
            Assert.AreSame(audioStreamEn, viewModel.VideoAssetInOut.SequenceAudioStreams[1]);

            viewModel.AudioSequenceSelectionChangedCommand.Execute(new StreamOption {
                Name = "audio_director", SequenceSelected = true
            });

            Assert.AreEqual(3, viewModel.VideoAssetInOut.SequenceAudioStreams.Count);
            Assert.AreSame(audioStreamDirector, viewModel.VideoAssetInOut.SequenceAudioStreams[2]);
        }
        public void ShouldChangeSequenceVideoWhenExecutingVideoSequenceSelectionChangedCommand()
        {
            var viewModel = this.CreateViewModel();

            SmoothStreamingVideoAsset smoothStreamingVideoAsset = new SmoothStreamingVideoAsset();

            VideoAssetInOut videoInOut = new VideoAssetInOut(smoothStreamingVideoAsset);

            viewModel.VideoAssetInOut = videoInOut;

            smoothStreamingVideoAsset.VideoStreams.Add("camera1");
            smoothStreamingVideoAsset.VideoStreams.Add("camera2");

            viewModel.Asset = smoothStreamingVideoAsset;

            Assert.AreEqual("camera1", viewModel.VideoAssetInOut.SequenceVideoCamera);

            viewModel.VideoSequenceSelectionChangedCommand.Execute(new StreamOption {
                Name = "camera2"
            });

            Assert.IsNotNull(viewModel.VideoAssetInOut.SequenceVideoCamera);
            Assert.AreEqual("camera2", viewModel.VideoAssetInOut.SequenceVideoCamera);
        }