ProcessedSteps() public method

Increase the number of processed steps by "steps".
public ProcessedSteps ( int steps ) : void
steps int Steps.
return void
Exemplo n.º 1
0
        public static void ExtractSnaphots(Settings settings, String path, List <Tuple <CardInfo, String> > allEntries, InfoProgress progress)
        {
            foreach (var entry in allEntries)
            {
                if (progress.Cancelled)
                {
                    break;
                }
                progress.ProcessedSteps(1);

                var cardInfoNameTuple = entry;
                var cardInfo          = cardInfoNameTuple.Item1;
                if (!cardInfo.HasImage())
                {
                    continue;
                }

                // create file at given path
                String outputSnapshotFilename = cardInfoNameTuple.Item2;
                String outputSnapshotFilepath = path + Path.DirectorySeparatorChar + outputSnapshotFilename;

                // get file with snapshot information -> video
                UtilsInputFiles.FileDesc videoFileDesc = cardInfo.episodeInfo.VideoFileDesc;

                // extract image
                double scaling   = UtilsVideo.GetMaxScalingByStreamInfo(cardInfo.episodeInfo.VideoStreamInfo, settings.RescaleWidth, settings.RescaleHeight, settings.RescaleMode);
                double timeStamp = UtilsCommon.GetMiddleTime(cardInfo);
                UtilsImage.GetImage(videoFileDesc.filename, timeStamp, outputSnapshotFilepath, scaling);
            }
        }
Exemplo n.º 2
0
        public static void ExtractAudio(Settings settings, String path, List <Tuple <CardInfo, String> > allEntries, InfoProgress progress)
        {
            foreach (var entry in allEntries)
            {
                progress.ProcessedSteps(1);
                if (progress.Cancelled)
                {
                    return;
                }

                CardInfo cardInfo = entry.Item1;
                if (!cardInfo.HasAudio())
                {
                    continue;
                }

                String outputAudioFilename = entry.Item2;
                String outputAudioFilepath = path + Path.DirectorySeparatorChar + outputAudioFilename;

                UtilsInputFiles.FileDesc audioFileDesc = cardInfo.episodeInfo.AudioFileDesc;
                var audioStreamInfo = cardInfo.episodeInfo.AudioStreamInfo;

                String arguments = String.Format("-v quiet -y -i \"{0}\" -map 0:{1} -ss \"{2}\" -to \"{3}\" -vn -c:a libvorbis \"{4}\"",
                                                 audioFileDesc.filename,                              // input file
                                                 audioStreamInfo.StreamIndex,                         // audio stream index
                                                 UtilsCommon.ToTimeArg(cardInfo.audioStartTimestamp), // start time
                                                 UtilsCommon.ToTimeArg(cardInfo.audioEndTimestamp),   // end time
                                                 outputAudioFilepath                                  // output file
                                                 );
                UtilsCommon.StartProcessAndGetOutput(InstanceSettings.systemSettings.formatConvertCommand, arguments);
            }
        }
		public static void ExtractSnaphots(Settings settings, String path, List<Tuple<CardInfo, String>> allEntries, InfoProgress progress) {
			foreach(var entry in allEntries) {
				if(progress.Cancelled) break;
				progress.ProcessedSteps(1);

				var cardInfoNameTuple = entry;
				var cardInfo = cardInfoNameTuple.Item1;
				if(!cardInfo.HasImage()) continue;

				// create file at given path
				String outputSnapshotFilename = cardInfoNameTuple.Item2;
				String outputSnapshotFilepath = path + Path.DirectorySeparatorChar + outputSnapshotFilename;

				// get file with snapshot information -> video
				UtilsInputFiles.FileDesc videoFileDesc = cardInfo.episodeInfo.VideoFileDesc;

				// extract image
				double scaling = UtilsVideo.GetMaxScalingByStreamInfo(cardInfo.episodeInfo.VideoStreamInfo, settings.RescaleWidth, settings.RescaleHeight, settings.RescaleMode);
				double timeStamp = UtilsCommon.GetMiddleTime (cardInfo);
				UtilsImage.GetImage (videoFileDesc.filename, timeStamp, outputSnapshotFilepath, scaling);

			}
		}
Exemplo n.º 4
0
		public static void ExtractAudio(Settings settings, String path, List<Tuple<CardInfo, String>> allEntries, InfoProgress progress) {
			foreach(var entry in allEntries) {
				progress.ProcessedSteps(1);
				if(progress.Cancelled) return;

				CardInfo cardInfo = entry.Item1;
				if(!cardInfo.HasAudio()) continue;

				String outputAudioFilename = entry.Item2;
				String outputAudioFilepath = path + Path.DirectorySeparatorChar + outputAudioFilename;

				UtilsInputFiles.FileDesc audioFileDesc = cardInfo.episodeInfo.AudioFileDesc;
				var audioStreamInfo = cardInfo.episodeInfo.AudioStreamInfo;

				String arguments = String.Format ("-v quiet -y -i \"{0}\" -map 0:{1} -ss \"{2}\" -to \"{3}\" -vn -c:a libvorbis \"{4}\"",
					audioFileDesc.filename, // input file
					audioStreamInfo.StreamIndex, // audio stream index
					UtilsCommon.ToTimeArg(cardInfo.audioStartTimestamp), // start time
					UtilsCommon.ToTimeArg(cardInfo.audioEndTimestamp), // end time
					outputAudioFilepath // output file
				);
				UtilsCommon.StartProcessAndGetOutput(InstanceSettings.systemSettings.formatConvertCommand, arguments);
			}
		}
Exemplo n.º 5
0
        public void ExportData(Settings settings, InfoProgress progressInfo)
        {
            var activeCardList = GetActiveCards();

            progressInfo.AddSection("Exporting text file", 1);
            progressInfo.AddSection("Exporting snapshots", activeCardList.Count);
            progressInfo.AddSection("Exporting audio files", activeCardList.Count);
            if (settings.NormalizeAudio)
            {
                progressInfo.AddSection("Normalize audio files", activeCardList.Count);
            }
            progressInfo.Update();

            ExportTextFile(activeCardList, settings, progressInfo);

            progressInfo.ProcessedSteps(1);

            var cardSnapshotNameTupleList = new List <Tuple <CardInfo, String> >(activeCardList.Count);
            var cardAudioNameTupleList    = new List <Tuple <CardInfo, String> >(activeCardList.Count);

            foreach (var cardInfo in activeCardList)
            {
                cardSnapshotNameTupleList.Add(new Tuple <CardInfo, String>(cardInfo, GetSnapshotFileName(settings, cardInfo)));
                cardAudioNameTupleList.Add(new Tuple <CardInfo, String>(cardInfo, GetAudioFileName(settings, cardInfo)));
            }

            if (progressInfo.Cancelled)
            {
                return;
            }

            // extract images
            String snapshotsPath = settings.OutputDirectoryPath + Path.DirectorySeparatorChar + settings.DeckName + "_snapshots" + Path.DirectorySeparatorChar;

            UtilsCommon.ClearDirectory(snapshotsPath);
            WorkerSnapshot.ExtractSnaphots(settings, snapshotsPath, cardSnapshotNameTupleList, progressInfo);

            if (progressInfo.Cancelled)
            {
                return;
            }

            // extract audio
            String audioPath = settings.OutputDirectoryPath + Path.DirectorySeparatorChar + settings.DeckName + "_audio" + Path.DirectorySeparatorChar;

            UtilsCommon.ClearDirectory(audioPath);
            WorkerAudio.ExtractAudio(settings, audioPath, cardAudioNameTupleList, progressInfo);

            if (progressInfo.Cancelled)
            {
                return;
            }

            if (settings.NormalizeAudio)
            {
                // normalize all audio files
                foreach (var entry in cardAudioNameTupleList)
                {
                    if (progressInfo.Cancelled)
                    {
                        return;
                    }
                    progressInfo.ProcessedSteps(1);

                    var cardInfo = entry.Item1;
                    if (!cardInfo.HasAudio())
                    {
                        continue;
                    }

                    var filepath         = audioPath + entry.Item2;
                    var audioStreamInfos = StreamInfo.ReadAllStreams(filepath);
                    audioStreamInfos.RemoveAll(streamInfo => streamInfo.StreamTypeValue != StreamInfo.StreamType.ST_AUDIO);
                    if (audioStreamInfos.Count != 1)
                    {
                        Console.WriteLine("Skipped normalizing file \"{0}\" because it contains {1} audio streams", filepath, audioStreamInfos.Count);
                        continue;
                    }
                    try {
                        UtilsAudio.NormalizeAudio(filepath, audioStreamInfos[0]);
                    } catch (Exception e) {
                        Console.WriteLine(e.ToString());
                        continue;
                    }
                }
            }
        }
        public void ExportData(Settings settings, InfoProgress progressInfo)
        {
          var activeCardList = GetActiveCards();

          progressInfo.AddSection("Exporting text file", 1);
          progressInfo.AddSection("Exporting snapshots", activeCardList.Count);
          progressInfo.AddSection("Exporting audio files", activeCardList.Count);
          if(settings.NormalizeAudio) progressInfo.AddSection("Normalize audio files", activeCardList.Count);
          progressInfo.Update();

          ExportTextFile(activeCardList, settings, progressInfo);

          progressInfo.ProcessedSteps(1);

          var cardSnapshotNameTupleList = new List<Tuple<CardInfo, String>>(activeCardList.Count);
          var cardAudioNameTupleList = new List<Tuple<CardInfo, String>>(activeCardList.Count);
          foreach(var cardInfo in activeCardList) {
            cardSnapshotNameTupleList.Add(new Tuple<CardInfo, String>(cardInfo, GetSnapshotFileName(settings, cardInfo)));
            cardAudioNameTupleList.Add(new Tuple<CardInfo, String>(cardInfo, GetAudioFileName(settings, cardInfo)));
          }

          if(progressInfo.Cancelled) return;

          // extract images
          String snapshotsPath = settings.OutputDirectoryPath + Path.DirectorySeparatorChar + settings.DeckName + "_snapshots" + Path.DirectorySeparatorChar;
          UtilsCommon.ClearDirectory(snapshotsPath);
          WorkerSnapshot.ExtractSnaphots(settings, snapshotsPath, cardSnapshotNameTupleList, progressInfo);

          if(progressInfo.Cancelled) return;

          // extract audio
          String audioPath = settings.OutputDirectoryPath + Path.DirectorySeparatorChar + settings.DeckName + "_audio" + Path.DirectorySeparatorChar;
          UtilsCommon.ClearDirectory(audioPath);
          WorkerAudio.ExtractAudio(settings, audioPath, cardAudioNameTupleList, progressInfo);

          if(progressInfo.Cancelled) return;

          if(settings.NormalizeAudio) {
            // normalize all audio files
            foreach(var entry in cardAudioNameTupleList) {
              if(progressInfo.Cancelled) return;
              progressInfo.ProcessedSteps(1);

              var cardInfo = entry.Item1;
              if(!cardInfo.HasAudio()) continue;

              var filepath = audioPath + entry.Item2;
              var audioStreamInfos = StreamInfo.ReadAllStreams(filepath);
              audioStreamInfos.RemoveAll(streamInfo => streamInfo.StreamTypeValue != StreamInfo.StreamType.ST_AUDIO);
              if(audioStreamInfos.Count != 1) {
                Console.WriteLine("Skipped normalizing file \"{0}\" because it contains {1} audio streams", filepath, audioStreamInfos.Count);
                continue;
              }
              try {
                UtilsAudio.NormalizeAudio(filepath, audioStreamInfos[0]);
              } catch(Exception e) {
                Console.WriteLine(e.ToString());
                continue;
              }
            }
          }
        }
Exemplo n.º 7
0
		/// <summary>
		/// Reads all subtitle files.
		/// </summary>
		/// <returns>Every entry in the outer list refers to exactly one subtitle file and for every file there is a list of all lines in it.</returns>
		/// <param name="settings">Settings.</param>
		/// <param name="attributedFilePaths">Attributed file path string.</param>
		private static List<List<LineInfo>> ReadAllSubtitleFiles (Settings settings, PerSubtitleSettings thisSubtitleSettings, List<EpisodeInfo> episodeInfos, int subtileIndex, InfoProgress progressInfo)
		{
			// read all lines in every subtitle file
			List<List<LineInfo>> lineInfosPerEpisode = new List<List<LineInfo>> ();
			foreach (EpisodeInfo episodeInfo in episodeInfos) {
				UtilsInputFiles.FileDesc fileDesc = episodeInfo.SubsFileDesc [subtileIndex];
				if (fileDesc == null || String.IsNullOrWhiteSpace (fileDesc.filename))
					lineInfosPerEpisode.Add (null);
				else
					lineInfosPerEpisode.Add (UtilsSubtitle.ParseSubtitleWithPostProcessing (settings, thisSubtitleSettings, fileDesc.filename, fileDesc.properties));
				progressInfo.ProcessedSteps (1);

				if (progressInfo.Cancelled)
					return null;
			}

			return lineInfosPerEpisode;
		}
Exemplo n.º 8
0
		/// <summary>
		/// This reads all subtitles, matches them and saves them to the "m_cardInfos"
		/// </summary>
		/// <param name="settings">Settings.</param>
		private static List<CardInfo> GenerateCardInfo(Settings settings, List<EpisodeInfo> episodeInfos, InfoProgress progressInfo) {

			// read subtitles
			List<List<LineInfo>> lineInfosPerEpisode_TargetLanguage = ReadAllSubtitleFiles(settings, settings.PerSubtitleSettings[0], episodeInfos, 0, progressInfo);
			List<List<LineInfo>> lineInfosPerEpisode_NativeLanguage = ReadAllSubtitleFiles(settings, settings.PerSubtitleSettings[1], episodeInfos, 1, progressInfo);

			if (progressInfo.Cancelled)
				return null;

			List<CardInfo> allCardInfos = new List<CardInfo> ();
			for(int episodeIndex = 0; episodeIndex < lineInfosPerEpisode_TargetLanguage.Count; episodeIndex++) {
				List<LineInfo> list1 = lineInfosPerEpisode_TargetLanguage[episodeIndex];
				List<LineInfo> list2 = lineInfosPerEpisode_NativeLanguage[episodeIndex];
				var episodeInfo = episodeInfos[episodeIndex];

				if(episodeInfo.HasSub2()) {
					// make sure that "other" subtitle has been shifted when aligning "this" subtitle to it
					if(settings.PerSubtitleSettings[0].AlignMode == PerSubtitleSettings.AlignModes.ToSubtitle) {
						UtilsCommon.AlignSub(list2, list1, episodeInfo, settings, settings.PerSubtitleSettings[1]);
						UtilsCommon.AlignSub(list1, list2, episodeInfo, settings, settings.PerSubtitleSettings[0]);
					} else {
						UtilsCommon.AlignSub(list1, list2, episodeInfo, settings, settings.PerSubtitleSettings[0]);
						UtilsCommon.AlignSub(list2, list1, episodeInfo, settings, settings.PerSubtitleSettings[1]);
					}
					var subtitleMatcherParameters = SubtitleMatcher.GetParameterCache (list1, list2);
					var matchedLinesList = SubtitleMatcher.MatchSubtitles(subtitleMatcherParameters);
					var thisEpisodeCardInfos = UtilsSubtitle.GetCardInfo(settings, episodeInfo, matchedLinesList);
					allCardInfos.AddRange(thisEpisodeCardInfos);
				} else {
					UtilsCommon.AlignSub(list1, list2, episodeInfo, settings, settings.PerSubtitleSettings[0]);
					allCardInfos.AddRange(UtilsSubtitle.GetCardInfo(settings, episodeInfo, list1));
				}

				progressInfo.ProcessedSteps (1);

				if (progressInfo.Cancelled)
					return null;
			}

			return allCardInfos;
		}
Exemplo n.º 9
0
		private void ComputationThread(Settings settings) {

			InfoProgress progressInfo = new InfoProgress(ProgressHandler);
			m_progressAndCancellable = progressInfo;

			// find sub1, sub2, audio and video file per episode
			var episodeInfo = new List<EpisodeInfo>();
			episodeInfo.AddRange(GenerateEpisodeInfos(settings));

			// fill in progress sections
			for(int i = 0; i < episodeInfo.Count; i++)
			progressInfo.AddSection(String.Format("Episode {0:00.}: Extracting Sub1", i + 1), 1);
			for(int i = 0; i < episodeInfo.Count; i++)
			progressInfo.AddSection(String.Format("Episode {0:00.}: Extracting Sub2", i + 1), 1);
			for(int i = 0; i < episodeInfo.Count; i++)
			progressInfo.AddSection(String.Format("Episode {0:00.}: Matching subtitles", i + 1), 1);

			progressInfo.AddSection("Preparing data presentation", 1);
			progressInfo.StartProgressing();


			// read all sub-files, match them and create a list for user that can be presented in preview window
			var cardInfos = new List<CardInfo>();
			cardInfos.AddRange(GenerateCardInfo(settings, episodeInfo, progressInfo) ?? new List<CardInfo>());

			m_previewListModel = new PreviewListModel(cardInfos);

			if(!progressInfo.Cancelled) {

				// finish this last step
				progressInfo.ProcessedSteps(1);

				PopulatePreviewList();
			}

			// close progress window, free pending operation variable
			CloseProgressWindow ();

		}