private void buttonEditAdvancedOptions_Click(object sender, RoutedEventArgs e) { try { if (si.streamType == StreamType.Audio) { AdvancedAudioOptions aao = new AdvancedAudioOptions(); if (si.advancedOptions != null && si.advancedOptions.GetType() == typeof(AdvancedAudioOptions)) { aao = new AdvancedAudioOptions(si.advancedOptions); } AdvancedAudioOptionsWindow aaow = new AdvancedAudioOptionsWindow(aao); aaow.ShowDialog(); if (aaow.DialogResult == true) { si.advancedOptions = new AdvancedAudioOptions(aaow.advancedAudioOptions); UpdateStatusInfo(); } } else if (si.streamType == StreamType.Video) { AdvancedVideoOptions avo = new AdvancedVideoOptions(); if (si.advancedOptions != null && si.advancedOptions.GetType() == typeof(AdvancedVideoOptions)) { avo = new AdvancedVideoOptions(si.advancedOptions); } AdvancedVideoOptionsWindow avow = new AdvancedVideoOptionsWindow(avo); avow.ShowDialog(); if (avow.DialogResult == true) { si.advancedOptions = new AdvancedVideoOptions(avow.advancedVideoOptions); UpdateStatusInfo(); } } else if (si.streamType == StreamType.Subtitle) { AdvancedSubtitleOptions aso = new AdvancedSubtitleOptions(); if (si.advancedOptions != null && si.advancedOptions.GetType() == typeof(AdvancedSubtitleOptions)) { aso = new AdvancedSubtitleOptions(si.advancedOptions); } AdvancedSubtitleOptionsWindow avow = new AdvancedSubtitleOptionsWindow(aso); avow.ShowDialog(); if (avow.DialogResult == true) { si.advancedOptions = new AdvancedSubtitleOptions(avow.advancedSubtitleOptions); UpdateStatusInfo(); } } } catch (Exception) { } }
public AdvancedAudioOptionsWindow(AdvancedAudioOptions aao) { try { InitializeComponent(); this.aao = new AdvancedAudioOptions(aao); textBoxExtension.Text = aao.extension; textBoxBitrate.Text = aao.bitrate; textBoxExtraParameter.Text = aao.parameter; checkBoxAddAc3Track.IsChecked = aao.additionalAc3Track; } catch (Exception ex) { Global.ErrorMsg(ex); } }
private void menuEditAdvancedOptions_Click(object sender, RoutedEventArgs e) { try { if (comboBoxTitle.SelectedIndex > -1 && listBoxStreams.SelectedIndex > -1) { StreamInfo si = titleList[comboBoxTitle.SelectedIndex].streams[listBoxStreams.SelectedIndex]; if (si.streamType == StreamType.Audio) { AdvancedAudioOptions aao = null; if (si.advancedOptions.GetType() != typeof(AdvancedAudioOptions)) { aao = new AdvancedAudioOptions(); } else { aao = new AdvancedAudioOptions(si.advancedOptions); } AdvancedAudioOptionsWindow aaow = new AdvancedAudioOptionsWindow(aao); aaow.ShowDialog(); if (aaow.DialogResult == true) { int index = listBoxStreams.SelectedIndex; titleList[comboBoxTitle.SelectedIndex].streams[index].advancedOptions = new AdvancedAudioOptions(aaow.advancedAudioOptions); UpdateStreamList(); listBoxStreams.SelectedIndex = index; } } else if (si.streamType == StreamType.Video) { AdvancedVideoOptions avo = null; if (si.advancedOptions.GetType() != typeof(AdvancedVideoOptions)) { avo = new AdvancedVideoOptions(); } else { avo = new AdvancedVideoOptions(si.advancedOptions); } AdvancedVideoOptionsWindow avow = new AdvancedVideoOptionsWindow(avo); avow.ShowDialog(); if (avow.DialogResult == true) { int index = listBoxStreams.SelectedIndex; titleList[comboBoxTitle.SelectedIndex].streams[index].advancedOptions = new AdvancedVideoOptions(avow.advancedVideoOptions); UpdateStreamList(); listBoxStreams.SelectedIndex = index; } } else if (si.streamType == StreamType.Subtitle) { AdvancedSubtitleOptions aso = null; if (si.advancedOptions.GetType() != typeof(AdvancedSubtitleOptions)) { aso = new AdvancedSubtitleOptions(); } else { aso = new AdvancedSubtitleOptions(si.advancedOptions); } AdvancedSubtitleOptionsWindow asow = new AdvancedSubtitleOptionsWindow(aso); asow.ShowDialog(); if (asow.DialogResult == true) { int index = listBoxStreams.SelectedIndex; titleList[comboBoxTitle.SelectedIndex].streams[index].advancedOptions = new AdvancedSubtitleOptions(asow.advancedSubtitleOptions); UpdateStreamList(); listBoxStreams.SelectedIndex = index; } } } } catch (Exception) { } }
private void buttonEditAdvancedOptions_Click(object sender, RoutedEventArgs e) { try { if (si.streamType == StreamType.Audio) { AdvancedAudioOptions aao = new AdvancedAudioOptions(); if (si.advancedOptions != null && si.advancedOptions.GetType() == typeof(AdvancedAudioOptions)) aao = new AdvancedAudioOptions(si.advancedOptions); AdvancedAudioOptionsWindow aaow = new AdvancedAudioOptionsWindow(aao); aaow.ShowDialog(); if (aaow.DialogResult == true) { si.advancedOptions = new AdvancedAudioOptions(aaow.advancedAudioOptions); UpdateStatusInfo(); } } else if (si.streamType == StreamType.Video) { AdvancedVideoOptions avo = new AdvancedVideoOptions(); if (si.advancedOptions != null && si.advancedOptions.GetType() == typeof(AdvancedVideoOptions)) avo = new AdvancedVideoOptions(si.advancedOptions); AdvancedVideoOptionsWindow avow = new AdvancedVideoOptionsWindow(avo); avow.ShowDialog(); if (avow.DialogResult == true) { si.advancedOptions = new AdvancedVideoOptions(avow.advancedVideoOptions); UpdateStatusInfo(); } } else if (si.streamType == StreamType.Subtitle) { AdvancedSubtitleOptions aso = new AdvancedSubtitleOptions(); if (si.advancedOptions != null && si.advancedOptions.GetType() == typeof(AdvancedSubtitleOptions)) aso = new AdvancedSubtitleOptions(si.advancedOptions); AdvancedSubtitleOptionsWindow avow = new AdvancedSubtitleOptionsWindow(aso); avow.ShowDialog(); if (avow.DialogResult == true) { si.advancedOptions = new AdvancedSubtitleOptions(avow.advancedSubtitleOptions); UpdateStatusInfo(); } } } catch (Exception) { } }
public MuxTool(UserSettings settings, TitleInfo titleInfo) : base() { try { this.settings = settings; this.titleInfo = titleInfo; this.Path = settings.mkvmergePath; this.Parameter += "--title \"" + settings.movieTitle + "\" -o \"" + settings.targetFolder + "\\" + settings.targetFilename + ".mkv\" "; int trackId = 0; // video + chapter foreach (StreamInfo si in titleInfo.streams) { string lan = ""; if (settings.preferredAudioLanguages.Count > 0) { lan = settings.preferredAudioLanguages[0].languageShort; } if (si.streamType == StreamType.Chapter) { if (lan != "") { this.Parameter += "--chapter-language " + lan + " "; } this.Parameter += "--chapters \"" + si.filename + "\" "; } else if (si.streamType == StreamType.Video) { trackId++; if (settings.disableVideoHeaderCompression) { this.Parameter += headerCompression; } if (si.advancedOptions != null && si.advancedOptions.GetType() == typeof(AdvancedVideoOptions)) { avo = new AdvancedVideoOptions(si.advancedOptions); } if (avo != null && avo.manualAspectRatio) { this.Parameter += "--aspect-ratio 0:" + avo.aspectRatio + " "; } if (si.extraFileInfo != null && si.extraFileInfo.GetType() == typeof(VideoFileInfo)) { this.Parameter += "\"" + ((VideoFileInfo)si.extraFileInfo).encodedFile + "\" "; } } } // audio bool defaultSet = false; foreach (StreamInfo si in titleInfo.streams) { if (si.streamType == StreamType.Audio) { trackId++; string st = ""; st = getShortAudioLanguage(si.language); if (st != "") { this.Parameter += "--language 0" + ":" + st + " "; } if (settings.disableAudioHeaderCompression) { this.Parameter += headerCompression; } if (!settings.defaultSubtitle) { this.Parameter += "--default-track 0:no "; } if (settings.preferredAudioLanguages.Count > 0 && settings.preferredAudioLanguages[0].language == si.language) { if (!defaultSet) { if (settings.defaultAudio) { this.Parameter += "--default-track 0:yes "; } defaultSet = true; } } this.Parameter += "\"" + si.filename + "\" "; // add additional ac3 track if (si.advancedOptions != null && si.advancedOptions.GetType() == typeof(AdvancedAudioOptions)) { AdvancedAudioOptions aao = (AdvancedAudioOptions)si.advancedOptions; if (aao.additionalAc3Track && File.Exists(aao.additionalFilename)) { trackId++; if (st != "") { this.Parameter += "--language 0" + ":" + st + " "; } if (settings.disableAudioHeaderCompression) { this.Parameter += headerCompression; } this.Parameter += "\"" + aao.additionalFilename + "\" "; } } if (settings.addAc3ToAllDts) { // check if already added by advanced audiooptions bool ac3Added = false; if (si.advancedOptions != null && si.advancedOptions.GetType() == typeof(AdvancedAudioOptions) && ((AdvancedAudioOptions)si.advancedOptions).additionalAc3Track) { ac3Added = true; } if (!ac3Added) { if (si.advancedOptions != null && si.advancedOptions.GetType() == typeof(AdvancedAudioOptions)) { AdvancedAudioOptions aao = (AdvancedAudioOptions)si.advancedOptions; if (File.Exists(aao.additionalFilename)) { trackId++; if (st != "") { this.Parameter += "--language 0" + ":" + st + " "; } if (settings.disableAudioHeaderCompression) { this.Parameter += headerCompression; } this.Parameter += "\"" + aao.additionalFilename + "\" "; } } } } } } List <int> subsCount = new List <int>(); List <int> forcedSubsCount = new List <int>(); for (int i = 0; i < settings.preferredSubtitleLanguages.Count; i++) { subsCount.Add(0); forcedSubsCount.Add(0); } // hardcode subs? do not mux subtitles even if selected bool suptitle = false; foreach (StreamInfo si in titleInfo.streams) { if (si.streamType == StreamType.Subtitle) { if (si.advancedOptions != null && si.advancedOptions.GetType() == typeof(AdvancedSubtitleOptions)) { if (((AdvancedSubtitleOptions)si.advancedOptions).supTitle) { if (!suptitle) { suptitle = true; } } } } } if ((settings.muxSubs > 0 || settings.muxUntouchedSubs) && !suptitle) { // subtitle defaultSet = false; foreach (StreamInfo si in titleInfo.streams) { if (si.streamType == StreamType.Subtitle) { SubtitleFileInfo sfi = (SubtitleFileInfo)si.extraFileInfo; bool isForced = false; if (si.advancedOptions != null && si.advancedOptions.GetType() == typeof(AdvancedSubtitleOptions) && ((AdvancedSubtitleOptions)si.advancedOptions).isForced) { isForced = true; } bool mux = false; bool pgs = false; bool untouched = false; if (settings.muxUntouchedSubs) { if (!sfi.isSecond) { mux = true; untouched = true; } } else if (settings.muxSubs == 1) { mux = true; } else if (settings.muxSubs == 2) { if (sfi.forcedIdx != "") { mux = true; } } else if (settings.muxSubs == 3) { int lang = -1; for (int i = 0; i < settings.preferredSubtitleLanguages.Count; i++) { if (settings.preferredSubtitleLanguages[i].language == si.language) { lang = i; } } if (lang > -1) { if (sfi.normalIdx != "") { if (subsCount[lang] == 0) { mux = true; subsCount[lang]++; } } else if (sfi.forcedIdx != "") { if (forcedSubsCount[lang] == 0) { mux = true; forcedSubsCount[lang]++; } } } } else if (settings.muxSubs == 4) { mux = true; pgs = true; } else if (settings.muxSubs == 5) { if (sfi.forcedSup != "") { mux = true; pgs = true; } } else if (settings.muxSubs == 6) { int lang = -1; for (int i = 0; i < settings.preferredSubtitleLanguages.Count; i++) { if (settings.preferredSubtitleLanguages[i].language == si.language) { lang = i; } } if (lang > -1) { if (sfi.normalSup != "") { if (subsCount[lang] == 0) { mux = true; pgs = true; subsCount[lang]++; } } else if (sfi.forcedSup != "") { if (forcedSubsCount[lang] == 0) { mux = true; pgs = true; forcedSubsCount[lang]++; } } } } if (mux) { trackId++; string st = ""; st = getShortSubLanguage(si.language); if (st != "") { this.Parameter += "--language 0" + ":" + st + " "; } if (settings.preferredSubtitleLanguages.Count > 0 && settings.preferredSubtitleLanguages[0].language == si.language) { if (!defaultSet) { if (settings.defaultSubtitle) { if (!settings.defaultSubtitleForced) { this.Parameter += "--default-track 0:yes "; defaultSet = true; } else { if (hasForcedSub(si.language)) { if (!untouched && !pgs) { if (sfi.forcedIdx != "") { this.Parameter += "--default-track 0 "; if (settings.defaultForcedFlag) { this.Parameter += "--forced-track 0 "; } defaultSet = true; } } else if (!untouched && pgs) { if (sfi.forcedSup != "") { this.Parameter += "--default-track 0 "; if (settings.defaultForcedFlag) { this.Parameter += "--forced-track 0 "; } defaultSet = true; } } } } } } } if (!settings.defaultSubtitle) { this.Parameter += "--default-track 0:no "; } if (untouched) { if (si.filename != "") { this.Parameter += "\"" + si.filename + "\" "; } } else if (!settings.muxLowResSubs && !pgs) { if (sfi.normalIdx != "" && !isForced) { this.Parameter += "\"" + sfi.normalIdx + "\" "; } else if (sfi.forcedIdx != "") { this.Parameter += " --track-name 0:Forced "; this.Parameter += "\"" + sfi.forcedIdx + "\" "; } else if (sfi.normalIdx != "" && isForced) { this.Parameter += " --track-name 0:Forced "; this.Parameter += "\"" + sfi.normalIdx + "\" "; } } else if (!settings.muxLowResSubs && pgs) { if (sfi.normalSup != "" && !isForced) { this.Parameter += "\"" + sfi.normalSup + "\" "; } else if (sfi.forcedSup != "") { this.Parameter += " --track-name 0:Forced "; this.Parameter += "\"" + sfi.forcedSup + "\" "; } else if (sfi.normalSup != "") { this.Parameter += " --track-name 0:Forced "; this.Parameter += "\"" + sfi.normalSup + "\" "; } } else { if (sfi.normalIdxLowRes != "" && !isForced) { this.Parameter += "\"" + sfi.normalIdxLowRes + "\" "; } else if (sfi.forcedIdxLowRes != "") { this.Parameter += " --track-name 0:Forced "; this.Parameter += "\"" + sfi.forcedIdxLowRes + "\" "; } else if (sfi.normalIdxLowRes != "" && isForced) { this.Parameter += " --track-name 0:Forced "; this.Parameter += "\"" + sfi.normalIdxLowRes + "\" "; } } } } } } } catch (Exception ex) { Info("Exception: " + ex.Message); } }