private static object CoerceBitrateValue(DependencyObject sender, object basevalue)
        {
            EncodingQualitySliderControl encodingQualitySliderControl = sender as EncodingQualitySliderControl;

            return(encodingQualitySliderControl.GetNearestTickValue((double)basevalue));
        }
        private static void OnEncodingModeValueChanged(DependencyObject sender, DependencyPropertyChangedEventArgs eventArgs)
        {
            EncodingQualitySliderControl encodingQualitySliderControl = sender as EncodingQualitySliderControl;
            Slider sliderControl = encodingQualitySliderControl.slider;

            switch (encodingQualitySliderControl.EncodingMode)
            {
            case EncodingMode.Mp3VBR:
            {
                sliderControl.Minimum        = 65;
                sliderControl.Maximum        = 245;
                sliderControl.SelectionStart = 115;
                sliderControl.SelectionEnd   = 245;
                sliderControl.Ticks.Clear();
                sliderControl.Ticks.Add(65);
                sliderControl.Ticks.Add(85);
                sliderControl.Ticks.Add(100);
                sliderControl.Ticks.Add(115);
                sliderControl.Ticks.Add(130);
                sliderControl.Ticks.Add(165);
                sliderControl.Ticks.Add(175);
                sliderControl.Ticks.Add(190);
                sliderControl.Ticks.Add(225);
                sliderControl.Ticks.Add(245);
                break;
            }

            case EncodingMode.Mp3CBR:
            {
                sliderControl.Minimum        = 8;
                sliderControl.Maximum        = 320;
                sliderControl.SelectionStart = 128;
                sliderControl.SelectionEnd   = 256;
                sliderControl.Ticks.Clear();
                sliderControl.Ticks.Add(8);
                sliderControl.Ticks.Add(16);
                sliderControl.Ticks.Add(24);
                sliderControl.Ticks.Add(32);
                sliderControl.Ticks.Add(40);
                sliderControl.Ticks.Add(48);
                sliderControl.Ticks.Add(64);
                sliderControl.Ticks.Add(80);
                sliderControl.Ticks.Add(96);
                sliderControl.Ticks.Add(112);
                sliderControl.Ticks.Add(128);
                sliderControl.Ticks.Add(160);
                sliderControl.Ticks.Add(192);
                sliderControl.Ticks.Add(224);
                sliderControl.Ticks.Add(256);
                sliderControl.Ticks.Add(320);
                break;
            }

            case EncodingMode.OggVBR:
            {
                sliderControl.Minimum        = 32;
                sliderControl.Maximum        = 500;
                sliderControl.SelectionStart = 80;
                sliderControl.SelectionEnd   = 192;
                sliderControl.Ticks.Clear();
                sliderControl.Ticks.Add(32);
                sliderControl.Ticks.Add(48);
                sliderControl.Ticks.Add(64);
                sliderControl.Ticks.Add(80);
                sliderControl.Ticks.Add(96);
                sliderControl.Ticks.Add(112);
                sliderControl.Ticks.Add(128);
                sliderControl.Ticks.Add(160);
                sliderControl.Ticks.Add(192);
                sliderControl.Ticks.Add(224);
                sliderControl.Ticks.Add(256);
                sliderControl.Ticks.Add(320);
                sliderControl.Ticks.Add(500);
                break;
            }

            case EncodingMode.AacVBR:
            {
                sliderControl.Minimum        = 16;
                sliderControl.Maximum        = 460;
                sliderControl.SelectionStart = 96;
                sliderControl.SelectionEnd   = 256;
                sliderControl.Ticks.Clear();
                sliderControl.Ticks.Add(16);
                sliderControl.Ticks.Add(32);
                sliderControl.Ticks.Add(48);
                sliderControl.Ticks.Add(64);
                sliderControl.Ticks.Add(80);
                sliderControl.Ticks.Add(96);
                sliderControl.Ticks.Add(112);
                sliderControl.Ticks.Add(128);
                sliderControl.Ticks.Add(155);
                sliderControl.Ticks.Add(192);
                sliderControl.Ticks.Add(224);
                sliderControl.Ticks.Add(256);
                sliderControl.Ticks.Add(340);
                sliderControl.Ticks.Add(460);
                break;
            }
            }

            encodingQualitySliderControl.CoerceValue(EncodingQualitySliderControl.BitrateProperty);
        }
        private static void OnBitrateValueChanged(DependencyObject sender, DependencyPropertyChangedEventArgs eventArgs)
        {
            EncodingQualitySliderControl encodingQualitySliderControl = sender as EncodingQualitySliderControl;

            encodingQualitySliderControl.slider.Value = (double)eventArgs.NewValue;
        }