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; }
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(); }
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; }
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(); }
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(); } }
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(); } }
public static bool IsFullRange(this YuvColorimetric colorimetric) { return(!IsLimitedRange(colorimetric)); }
private void Apply() { m_OutputLevels = RendererSettings.OutputLevels; Player.OsdText.Show("Colour space: " + RendererSettings.OutputLevels.ToDescription()); Player.Config.Refresh(); }
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(); }
public ColorimetricProcess(YuvColorimetric?colorimetric = null, bool?limitedRange = null, bool?limitChroma = null) { Colorimetric = colorimetric ?? Renderer.Colorimetric; OutputLimitedRange = limitedRange ?? Renderer.OutputLimitedRange; OutputLimitChroma = limitChroma ?? Renderer.LimitChroma; }
public YuvFilter(IFilter inputFilter, YuvColorimetric? colorimetric = null, bool? limitedRange = null) : base(inputFilter) { Colorimetric = colorimetric ?? Renderer.Colorimetric; OutputLimitedRange = limitedRange ?? Renderer.OutputLimitedRange; }
public YuvFilter(IFilter inputFilter, YuvColorimetric?colorimetric = null, bool?limitedRange = null) : base(inputFilter) { Colorimetric = colorimetric ?? Renderer.Colorimetric; OutputLimitedRange = limitedRange ?? Renderer.OutputLimitedRange; }