diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/LinuxRendererGLES.cpp b/xbmc/cores/VideoPlayer/VideoRenderers/LinuxRendererGLES.cpp index c7e581f6655cf..afa3ffc891207 100644 --- a/xbmc/cores/VideoPlayer/VideoRenderers/LinuxRendererGLES.cpp +++ b/xbmc/cores/VideoPlayer/VideoRenderers/LinuxRendererGLES.cpp @@ -876,6 +876,7 @@ void CLinuxRendererGLES::RenderSinglePass(int index, int field) pYUVShader->SetField(0); pYUVShader->SetMatrices(glMatrixProject.Get(), glMatrixModview.Get()); + pYUVShader->SetForceLimitedColorRange(false); pYUVShader->Enable(); GLubyte idx[4] = {0, 1, 3, 2}; //determines order of triangle strip diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/VideoShaders/YUV2RGBShader.cpp b/xbmc/cores/VideoPlayer/VideoRenderers/VideoShaders/YUV2RGBShader.cpp index 43a7036e97bad..60ec7b7808984 100644 --- a/xbmc/cores/VideoPlayer/VideoRenderers/VideoShaders/YUV2RGBShader.cpp +++ b/xbmc/cores/VideoPlayer/VideoRenderers/VideoShaders/YUV2RGBShader.cpp @@ -289,7 +289,7 @@ bool BaseYUV2RGBGLSLShader::OnEnabled() GLfloat matrix[4][4]; // keep video levels - CalculateYUVMatrixGL(matrix, m_flags, m_format, m_black, m_contrast, true); + CalculateYUVMatrixGL(matrix, m_flags, m_format, m_black, m_contrast, m_forceLimitedColorRange); glUniformMatrix4fv(m_hMatrix, 1, GL_FALSE, (GLfloat*)matrix); #if HAS_GLES == 2 diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/VideoShaders/YUV2RGBShader.h b/xbmc/cores/VideoPlayer/VideoRenderers/VideoShaders/YUV2RGBShader.h index b9737cbe7f044..e3e66649ee6dc 100644 --- a/xbmc/cores/VideoPlayer/VideoRenderers/VideoShaders/YUV2RGBShader.h +++ b/xbmc/cores/VideoPlayer/VideoRenderers/VideoShaders/YUV2RGBShader.h @@ -46,6 +46,7 @@ namespace Shaders { : virtual public CShaderProgram { public: + BaseYUV2RGBShader() : m_forceLimitedColorRange(true) {}; virtual ~BaseYUV2RGBShader() {}; virtual void SetField(int field) {}; virtual void SetWidth(int width) {}; @@ -63,6 +64,10 @@ namespace Shaders { virtual void SetMatrices(GLfloat *p, GLfloat *m) {}; virtual void SetAlpha(GLfloat alpha) {}; #endif + void SetForceLimitedColorRange(bool forceLimitedColorRange) { m_forceLimitedColorRange = forceLimitedColorRange; } + + protected: + bool m_forceLimitedColorRange; };