Пример #1
0
 public RgbFilter(ITextureFilter inputFilter, YuvColorimetric?colorimetric = null, bool?limitedRange = null, bool?limitChroma = null)
     : base(inputFilter)
 {
     Colorimetric       = colorimetric ?? Renderer.Colorimetric;
     OutputLimitedRange = limitedRange ?? Renderer.OutputLimitedRange;
     OutputLimitChroma  = limitChroma ?? Renderer.LimitChroma;
 }
Пример #2
0
        private void OnPlayerStateChanged(object sender, PlayerStateEventArgs args)
        {
            var enabled = (args.NewState == PlayerState.Playing || args.NewState == PlayerState.Paused) &&
                          Renderer.InputFormat.IsYuv();

            m_Enabled = enabled;

            m_LevelsMenu.Enabled       = enabled;
            m_MatrixMenu.Enabled       = enabled;
            m_ToggleLevelsMenu.Enabled = enabled;
            m_ToggleMatrixMenu.Enabled = enabled;

            if (args.OldState == PlayerState.Closed)
            {
                // Save states so we can restore the temporary settings when media is closed

                m_OriginalOutputLevels = RendererSettings.OutputLevels;
                m_OutputLevels         = m_OriginalOutputLevels;

                m_OriginalImproveChroma = RendererSettings.ImproveChromaReconstruction;
                m_ImproveChroma         = m_OriginalImproveChroma;
            }

            if (args.NewState == PlayerState.Closed)
            {
                // Restore on media close

                var refresh = false;

                if (RendererSettings.OutputLevels != m_OriginalOutputLevels)
                {
                    RendererSettings.OutputLevels = m_OriginalOutputLevels;
                    refresh = true;
                }

                if (RendererSettings.ImproveChromaReconstruction != m_OriginalImproveChroma)
                {
                    RendererSettings.ImproveChromaReconstruction = m_OriginalImproveChroma;
                    refresh = true;
                }

                if (refresh)
                {
                    Player.Config.Refresh();
                }
            }

            if (args.NewState != PlayerState.Closed && args.OldState != PlayerState.Closed)
            {
                return;
            }

            UpdateControls();
        }
Пример #3
0
        public override void Initialize()
        {
            base.Initialize();
            Player.StateChanged      += OnPlayerStateChanged;
            Player.Config.Changed    += OnSettingsChanged;
            Player.Config.Committing += OnSettingsCommitting;
            Player.Config.Committed  += OnSettingsCommitted;

            m_OriginalOutputLevels  = RendererSettings.OutputLevels;
            m_OriginalImproveChroma = RendererSettings.ImproveChromaReconstruction;
        }
Пример #4
0
        private void OnSettingsChanged(object sender, EventArgs e)
        {
            if (m_OutputLevels != RendererSettings.OutputLevels)
            {
                m_OutputLevels         = RendererSettings.OutputLevels;
                m_OriginalOutputLevels = m_OutputLevels;
            }

            if (m_ImproveChroma != RendererSettings.ImproveChromaReconstruction)
            {
                m_ImproveChroma         = RendererSettings.ImproveChromaReconstruction;
                m_OriginalImproveChroma = m_ImproveChroma;
            }

            UpdateControls();
        }
Пример #5
0
        public static bool IsLimitedRange(this YuvColorimetric colorimetric)
        {
            switch (colorimetric)
            {
            case YuvColorimetric.FullRangePc601:
            case YuvColorimetric.FullRangePc709:
            case YuvColorimetric.FullRangePc2020:
                return(false);

            case YuvColorimetric.ItuBt601:
            case YuvColorimetric.ItuBt709:
            case YuvColorimetric.ItuBt2020:
                return(true);

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Пример #6
0
        public static float[] GetYuvConsts(this YuvColorimetric colorimetric)
        {
            switch (colorimetric)
            {
            case YuvColorimetric.FullRangePc601:
            case YuvColorimetric.ItuBt601:
                return(new[] { 0.114f, 0.299f });

            case YuvColorimetric.FullRangePc709:
            case YuvColorimetric.ItuBt709:
                return(new[] { 0.0722f, 0.2126f });

            case YuvColorimetric.FullRangePc2020:
            case YuvColorimetric.ItuBt2020:
                return(new[] { 0.0593f, 0.2627f });

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Пример #7
0
 public static bool IsFullRange(this YuvColorimetric colorimetric)
 {
     return(!IsLimitedRange(colorimetric));
 }
Пример #8
0
 private void Apply()
 {
     m_OutputLevels = RendererSettings.OutputLevels;
     Player.OsdText.Show("Colour space: " + RendererSettings.OutputLevels.ToDescription());
     Player.Config.Refresh();
 }
Пример #9
0
        private void OnPlayerStateChanged(object sender, PlayerStateEventArgs args)
        {
            var enabled = (args.NewState == PlayerState.Playing || args.NewState == PlayerState.Paused) &&
                          Renderer.InputFormat.IsYuv();

            m_Enabled = enabled;

            m_LevelsMenu.Enabled = enabled;
            m_MatrixMenu.Enabled = enabled;
            m_ToggleLevelsMenu.Enabled = enabled;
            m_ToggleMatrixMenu.Enabled = enabled;
            m_ToggleImproveChromaMenu.Enabled = enabled;

            if (args.OldState == PlayerState.Closed)
            {
                // Save states so we can restore the temporary settings when media is closed

                m_OriginalOutputLevels = RendererSettings.OutputLevels;
                m_OutputLevels = m_OriginalOutputLevels;

                m_OriginalImproveChroma = RendererSettings.ImproveChromaReconstruction;
                m_ImproveChroma = m_OriginalImproveChroma;
            }

            if (args.NewState == PlayerState.Closed)
            {
                // Restore on media close

                var refresh = false;

                if (RendererSettings.OutputLevels != m_OriginalOutputLevels)
                {
                    RendererSettings.OutputLevels = m_OriginalOutputLevels;
                    refresh = true;
                }

                if (RendererSettings.ImproveChromaReconstruction != m_OriginalImproveChroma)
                {
                    RendererSettings.ImproveChromaReconstruction = m_OriginalImproveChroma;
                    refresh = true;
                }

                if (refresh)
                {
                    Player.Config.Refresh();
                }
            }

            if (args.NewState != PlayerState.Closed && args.OldState != PlayerState.Closed)
                return;

            UpdateControls();
        }
Пример #10
0
        private void OnSettingsChanged(object sender, EventArgs e)
        {
            if (m_OutputLevels != RendererSettings.OutputLevels)
            {
                m_OutputLevels = RendererSettings.OutputLevels;
                m_OriginalOutputLevels = m_OutputLevels;
            }

            if (m_ImproveChroma != RendererSettings.ImproveChromaReconstruction)
            {
                m_ImproveChroma = RendererSettings.ImproveChromaReconstruction;
                m_OriginalImproveChroma = m_ImproveChroma;
            }

            UpdateControls();
        }
Пример #11
0
 private void Apply()
 {
     m_OutputLevels = RendererSettings.OutputLevels;
     Player.OsdText.Show("Colour space: " + RendererSettings.OutputLevels.ToDescription());
     Player.Config.Refresh();
 }
Пример #12
0
        public override void Initialize()
        {
            base.Initialize();
            Player.StateChanged += OnPlayerStateChanged;
            Player.Config.Changed += OnSettingsChanged;
            Player.Config.Committing += OnSettingsCommitting;
            Player.Config.Committed += OnSettingsCommitted;

            m_OriginalOutputLevels = RendererSettings.OutputLevels;
            m_OriginalImproveChroma = RendererSettings.ImproveChromaReconstruction;
        }
Пример #13
0
 public ColorimetricProcess(YuvColorimetric?colorimetric = null, bool?limitedRange = null, bool?limitChroma = null)
 {
     Colorimetric       = colorimetric ?? Renderer.Colorimetric;
     OutputLimitedRange = limitedRange ?? Renderer.OutputLimitedRange;
     OutputLimitChroma  = limitChroma ?? Renderer.LimitChroma;
 }
Пример #14
0
 public YuvFilter(IFilter inputFilter, YuvColorimetric? colorimetric = null, bool? limitedRange = null)
     : base(inputFilter)
 {
     Colorimetric = colorimetric ?? Renderer.Colorimetric;
     OutputLimitedRange = limitedRange ?? Renderer.OutputLimitedRange;
 }
Пример #15
0
 public YuvFilter(IFilter inputFilter, YuvColorimetric?colorimetric = null, bool?limitedRange = null)
     : base(inputFilter)
 {
     Colorimetric       = colorimetric ?? Renderer.Colorimetric;
     OutputLimitedRange = limitedRange ?? Renderer.OutputLimitedRange;
 }