コード例 #1
0
        /// <summary>
        /// Trigger a Notify Property Changed on the Task to force various UI elements to update.
        /// </summary>
        public void RefreshTask(OutputFormat format)
        {
            this.NotifyOfPropertyChange(() => this.Task); // Trigger UI Refresh

            if (format == OutputFormat.Mp4)
            {
                foreach (AudioTrack track in this.Task.AudioTracks.Where(track => track.Encoder == AudioEncoder.ffflac || track.Encoder == AudioEncoder.Vorbis))
                {
                    track.Encoder = AudioEncoder.ffaac;
                }
            }

            if (format == OutputFormat.WebM)
            {
                foreach (AudioTrack track in this.Task.AudioTracks.Where(track => track.Encoder != AudioEncoder.Vorbis && track.Encoder != AudioEncoder.Opus))
                {
                    track.Encoder = AudioEncoder.Vorbis;
                }
            }

            this.AudioDefaultsViewModel.RefreshTask(format);
        }
コード例 #2
0
        /// <summary>
        /// Gets a list of audio encoders OR returns the string name of an encoder depending on the input.
        /// </summary>
        /// <param name="values">
        /// The values.
        /// </param>
        /// <param name="targetType">
        /// The target type.
        /// </param>
        /// <param name="parameter">
        /// The parameter.
        /// </param>
        /// <param name="culture">
        /// The culture.
        /// </param>
        /// <returns>
        /// IEnumerable AudioEncoder or String encoder name.
        /// </returns>
        public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
        {
            if (values.Count() >= 2)
            {
                List <AudioEncoder> encoders = EnumHelper <AudioEncoder> .GetEnumList().ToList();

                OutputFormat outputFormat = OutputFormat.Mp4;
                if (values[1].GetType() == typeof(OutputFormat))
                {
                    outputFormat = (OutputFormat)values[1];
                }
                else
                {
                    EncodeTask task = values[1] as EncodeTask;
                    if (task != null)
                    {
                        outputFormat = task.OutputFormat;
                    }
                }

                encoders.Remove(AudioEncoder.None); // Assume we never want to show this.

                if (!HandBrakeEncoderHelpers.AudioEncoders.Any(a => a.ShortName.Contains("fdk")))
                {
                    encoders.Remove(AudioEncoder.fdkaac);
                    encoders.Remove(AudioEncoder.fdkheaac);
                }

                if (!HandBrakeEncoderHelpers.AudioEncoders.Any(a => a.ShortName.Contains("ca_aac")))
                {
                    encoders.Remove(AudioEncoder.CaAac);
                    encoders.Remove(AudioEncoder.CaHaac);
                }

                if (outputFormat == OutputFormat.Mp4)
                {
                    encoders.Remove(AudioEncoder.Vorbis);
                    encoders.Remove(AudioEncoder.ffflac);
                    encoders.Remove(AudioEncoder.ffflac24);
                    encoders.Remove(AudioEncoder.FlacPassthru);
                    encoders.Remove(AudioEncoder.Opus);

                    encoders.Remove(AudioEncoder.TrueHDPassthrough);
                }
                else if (outputFormat == OutputFormat.WebM)
                {
                    encoders.RemoveAll(ae => !(ae.Equals(AudioEncoder.Vorbis) || ae.Equals(AudioEncoder.Opus)));
                }

                // Hide the Passthru options and show the "None" option
                if (parameter != null && parameter.ToString() == "True")
                {
                    encoders.Remove(AudioEncoder.DtsHDPassthrough);
                    encoders.Remove(AudioEncoder.DtsPassthrough);
                    encoders.Remove(AudioEncoder.EAc3Passthrough);
                    encoders.Remove(AudioEncoder.AacPassthru);
                    encoders.Remove(AudioEncoder.Ac3Passthrough);
                    encoders.Remove(AudioEncoder.Mp3Passthru);
                    encoders.Remove(AudioEncoder.Mp2Passthru);
                    encoders.Remove(AudioEncoder.Passthrough);
                    encoders.Remove(AudioEncoder.TrueHDPassthrough);
                    encoders.Remove(AudioEncoder.FlacPassthru);

                    encoders.Add(AudioEncoder.None);
                }

                if (values.Length == 3)
                {
                    encoders.Remove(AudioEncoder.Passthrough); // Auto passthru doesn't make sense on the main window. instead only show supported passthrus.

                    Audio sourceTrack = values[2] as Audio;
                    RemoveIfNotSupported(AudioEncoder.DtsHDPassthrough, sourceTrack, encoders);
                    RemoveIfNotSupported(AudioEncoder.DtsPassthrough, sourceTrack, encoders);
                    RemoveIfNotSupported(AudioEncoder.EAc3Passthrough, sourceTrack, encoders);
                    RemoveIfNotSupported(AudioEncoder.AacPassthru, sourceTrack, encoders);
                    RemoveIfNotSupported(AudioEncoder.Ac3Passthrough, sourceTrack, encoders);
                    RemoveIfNotSupported(AudioEncoder.Mp3Passthru, sourceTrack, encoders);
                    RemoveIfNotSupported(AudioEncoder.TrueHDPassthrough, sourceTrack, encoders);
                    RemoveIfNotSupported(AudioEncoder.FlacPassthru, sourceTrack, encoders);
                    RemoveIfNotSupported(AudioEncoder.Mp2Passthru, sourceTrack, encoders);
                }

                return(EnumHelper <AudioEncoder> .GetEnumDisplayValuesSubset(encoders));
            }

            if (values.Any() && values.First() != DependencyProperty.UnsetValue)
            {
                return(EnumHelper <AudioEncoder> .GetDisplay((AudioEncoder)values[0]));
            }

            return(EnumHelper <AudioEncoder> .GetDisplay(AudioEncoder.ffaac));
        }