Skip to content

Commit

Permalink
Merge pull request xbmc#6169 from koying/adddroiddeinterlace
Browse files Browse the repository at this point in the history
  • Loading branch information
jenkins4kodi committed Jan 21, 2015
2 parents bc25709 + 4b709f5 commit df343f3
Show file tree
Hide file tree
Showing 12 changed files with 440 additions and 154 deletions.
10 changes: 8 additions & 2 deletions system/shaders/guishader_frag_rgba.glsl
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,14 @@ varying vec4 m_cord1;
varying lowp vec4 m_colour;
uniform int m_method;

// SM_TEXTURE_NOBLEND
uniform float m_brightness;
uniform float m_contrast;

void main ()
{
gl_FragColor.rgba = texture2D(m_samp0, m_cord0.xy).rgba;
vec4 color = texture2D(m_samp0, m_cord0.xy).rgba;
color = color * m_contrast;
color = color + m_brightness;

gl_FragColor.rgba = color;
}
54 changes: 54 additions & 0 deletions system/shaders/guishader_frag_rgba_bob.glsl
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
/*
* Copyright (C) 2010-2013 Team XBMC
* http://xbmc.org
*
* This Program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* This Program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with XBMC; see the file COPYING. If not, see
* <http://www.gnu.org/licenses/>.
*
*/

precision highp float;
uniform sampler2D m_samp0;
uniform sampler2D m_samp1;
varying vec4 m_cord0;
varying vec4 m_cord1;
varying lowp vec4 m_colour;
uniform int m_method;
uniform int m_field;
uniform float m_step;

uniform float m_brightness;
uniform float m_contrast;

void main ()
{
vec2 source;
source = m_cord0.xy;

float temp1 = mod(source.y, 2.0*m_step);
float temp2 = source.y - temp1;
source.y = temp2 + m_step/2.0 - float(m_field)*m_step;

// Blend missing line
vec2 below;
float bstep = step(m_step, temp1);
below.x = source.x;
below.y = source.y + (2.0*m_step*bstep);

vec4 color = mix(texture2D(m_samp0, source), texture2D(m_samp0, below), 0.5);
color = color * m_contrast;
color = color + m_brightness;

gl_FragColor.rgba = color;
}
56 changes: 56 additions & 0 deletions system/shaders/guishader_frag_rgba_bob_oes.glsl
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
/*
* Copyright (C) 2010-2013 Team XBMC
* http://xbmc.org
*
* This Program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* This Program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with XBMC; see the file COPYING. If not, see
* <http://www.gnu.org/licenses/>.
*
*/

#extension GL_OES_EGL_image_external : require

precision highp float;
uniform samplerExternalOES m_samp0;
uniform samplerExternalOES m_samp1;
varying vec4 m_cord0;
varying vec4 m_cord1;
varying lowp vec4 m_colour;
uniform int m_method;
uniform int m_field;
uniform float m_step;

uniform float m_brightness;
uniform float m_contrast;

void main ()
{
vec2 source;
source = m_cord0.xy;

float temp1 = mod(source.y, 2.0*m_step);
float temp2 = source.y - temp1;
source.y = temp2 + m_step/2.0 - float(m_field)*m_step;

// Blend missing line
vec2 below;
float bstep = step(m_step, temp1);
below.x = source.x;
below.y = source.y + (2.0*m_step*bstep);

vec4 color = mix(texture2D(m_samp0, source), texture2D(m_samp0, below), 0.5);
color = color * m_contrast;
color = color + m_brightness;

gl_FragColor.rgba = color;
}
10 changes: 8 additions & 2 deletions system/shaders/guishader_frag_rgba_oes.glsl
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,14 @@ precision mediump float;
uniform samplerExternalOES m_samp0;
varying vec4 m_cord0;

// SM_TEXTURE_OES
uniform float m_brightness;
uniform float m_contrast;

void main ()
{
gl_FragColor.rgba = texture2D(m_samp0, m_cord0.xy).rgba;
vec4 color = texture2D(m_samp0, m_cord0.xy).rgba;
color = color * m_contrast;
color = color + m_brightness;

gl_FragColor.rgba = color;
}
33 changes: 26 additions & 7 deletions system/shaders/yuv2rgb_bob_gles.glsl
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
*
*/

precision mediump float;
precision highp float;
uniform sampler2D m_sampY;
uniform sampler2D m_sampU;
uniform sampler2D m_sampV;
Expand All @@ -38,18 +38,37 @@ void main()
vec2 offsetY;
vec2 offsetU;
vec2 offsetV;
float temp1 = mod(m_cordY.y, 2*m_stepY);
float temp1 = mod(m_cordY.y, 2.0*m_stepY);

offsetY = m_cordY;
offsetU = m_cordU;
offsetV = m_cordV;

offsetY.y -= (temp1 - m_stepY/2 + float(m_field)*m_stepY);
offsetU.y -= (temp1 - m_stepY/2 + float(m_field)*m_stepY)/2;
offsetV.y -= (temp1 - m_stepY/2 + float(m_field)*m_stepY)/2;
offsetY.y -= (temp1 - m_stepY/2.0 + float(m_field)*m_stepY);
offsetU.y -= (temp1 - m_stepY/2.0 + float(m_field)*m_stepY)/2.0;
offsetV.y -= (temp1 - m_stepY/2.0 + float(m_field)*m_stepY)/2.0;

yuv.rgba = vec4(texture2D(m_sampY, offsetY).r, texture2D(m_sampU, offsetU).r, texture2D(m_sampV, offsetV).r, 1.0);
float bstep = step(m_stepY, temp1);

// Blend missing line
vec2 belowY, belowU, belowV;

belowY.x = offsetY.x;
belowY.y = offsetY.y + (2.0*m_stepY*bstep);
belowU.x = offsetU.x;
belowU.y = offsetU.y + (m_stepY*bstep);
belowV.x = offsetV.x;
belowV.y = offsetV.y + (m_stepY*bstep);

vec4 yuvBelow, rgbBelow;

yuv.rgba = vec4(texture2D(m_sampY, offsetY).r, texture2D(m_sampU, offsetU).g, texture2D(m_sampV, offsetV).a, 1.0);
rgb = m_yuvmat * yuv;
rgb.a = m_alpha;
gl_FragColor = rgb;

yuvBelow.rgba = vec4(texture2D(m_sampY, belowY).r, texture2D(m_sampU, belowU).g, texture2D(m_sampV, belowV).a, 1.0);
rgbBelow = m_yuvmat * yuvBelow;
rgbBelow.a = m_alpha;

gl_FragColor.rgba = mix(rgb, rgbBelow, 0.5);
}
Loading

0 comments on commit df343f3

Please sign in to comment.