Exemplo n.º 1
0
 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)
     {
     }
 }
Exemplo n.º 2
0
 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);
     }
 }
 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);
     }
 }
Exemplo n.º 4
0
 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)
     {
     }
 }
Exemplo n.º 5
0
 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)
     {
     }
 }
Exemplo n.º 6
0
        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);
            }
        }