xine-lib 1.2.12
Data Structures | Macros | Typedefs | Enumerations | Functions | Variables
video_out_opengl2.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <math.h>
#include <errno.h>
#include <ctype.h>
#include <pthread.h>
#include <xine.h>
#include <xine/video_out.h>
#include <xine/vo_scale.h>
#include <xine/xine_internal.h>
#include <xine/xineutils.h>
#include <GL/gl.h>
#include <GL/glext.h>
#include "opengl/xine_gl.h"
#include "mem_frame.h"
#include "hw_frame.h"
#include "color_matrix.c"

Data Structures

struct  opengl2_overlay_t
 
struct  opengl2_program_t
 
struct  opengl2_yuvtex_t
 
struct  opengl2_driver_t
 
struct  opengl2_class_t
 
struct  opengl2_rect_t
 
struct  opengl2_draw_info_t
 

Macros

#define LOG_MODULE   "video_out_opengl2"
 
#define GL_GLEXT_PROTOTYPES
 
#define GL_RED   0x1903
 
#define GL_RG   0x8227
 
#define OGL2_BC_LUT   1
 
#define OGL2_BC_PROG_1   2
 
#define OGL2_BC_PROG_2   4
 
#define OGL2_BC_FBO   8
 
#define MAX_EXIT_TARGETS   8
 
#define CM_LUT
 
#define CM_HAVE_YCGCO_SUPPORT   1
 
#define CM_HAVE_BT2020_SUPPORT   1
 
#define CM_DRIVER_T   opengl2_driver_t
 
#define LUTWIDTH   1000
 
#define N_SPLINES   2
 
#define CATMULLROM_SPLINE   0
 
#define COS_SPLINE   1
 
#define nv12_frag
 
#define yuv422_frag
 
#define INITWIDTH   720
 
#define INITHEIGHT   576
 

Typedefs

typedef mem_frame_t opengl2_frame_t
 

Enumerations

enum  opengl2_csc_shader_t {
  OGL2_cscs_NONE = 0 , OGL2_cscs_yuv420 , OGL2_cscs_yuv420j , OGL2_cscs_nv12 ,
  OGL2_cscs_yuv422 , OGL2_cscs_LAST
}
 
enum  opengl2_tex_t {
  OGL2_TEX_VIDEO_0 = 0 , OGL2_TEX_VIDEO_1 , OGL2_TEX_y , OGL2_TEX_u_v ,
  OGL2_TEX_u , OGL2_TEX_v , OGL2_TEX_yuv , OGL2_TEX_uv ,
  OGL2_TEX_HW0 , OGL2_TEX_HW1 , OGL2_TEX_HW2 , OGL2_TEX_LAST
}
 

Functions

static void opengl2_exit (void)
 
static void opengl2_exit_unregister (opengl2_driver_t *this)
 
static void opengl2_exit_register (opengl2_driver_t *this)
 
static void opengl2_accel_lock (vo_frame_t *frame, int lock)
 
static float compute_cos_spline (float x)
 
static float compute_catmullrom_spline (float x)
 
static int create_lut_texture (opengl2_driver_t *that)
 
static int opengl2_build_program (opengl2_driver_t *this, opengl2_program_t *prog, const char *source, const char *name, const char *const *arg_names)
 
static void opengl2_delete_program (opengl2_program_t *prog)
 
static void _config_texture (GLenum target, GLuint texture, GLsizei width, GLsizei height, GLenum format, GLenum type, GLenum minmag_filter)
 
static int opengl2_check_textures_size (opengl2_driver_t *this_gen, int w, int h, int bytes_per_pixel)
 
static void opengl2_upload_overlay (opengl2_driver_t *this, opengl2_overlay_t *o, vo_overlay_t *overlay)
 
static void opengl2_overlay_begin (vo_driver_t *this_gen, vo_frame_t *frame_gen, int changed)
 
static void opengl2_overlay_blend (vo_driver_t *this_gen, vo_frame_t *frame_gen, vo_overlay_t *overlay)
 
static void opengl2_overlay_end (vo_driver_t *this_gen, vo_frame_t *vo_img)
 
static int opengl2_redraw_needed (vo_driver_t *this_gen)
 
static void opengl2_update_csc_matrix (opengl2_driver_t *that, opengl2_frame_t *frame, int input_scale)
 
static void opengl2_update_overlays (opengl2_driver_t *that)
 
static void opengl2_rect_set (opengl2_rect_t *r, opengl2_overlay_t *o)
 
static void opengl2_rect_scale (opengl2_rect_t *r, float fx, float fy)
 
static void opengl2_draw_scaled_overlays (opengl2_driver_t *that, opengl2_frame_t *frame)
 
static void opengl2_draw_unscaled_overlays (opengl2_driver_t *that)
 
static GLuint opengl2_swap_textures (opengl2_driver_t *that, GLuint current_dest)
 
static GLuint opengl2_sharpness (opengl2_driver_t *that, opengl2_frame_t *frame, GLuint video_texture)
 
static int _opengl2_setup_bicubic (opengl2_driver_t *that, uint32_t flags)
 
static int opengl2_setup_bicubic (opengl2_driver_t *that, uint32_t flags)
 
static int opengl2_draw_video_bicubic (opengl2_driver_t *that, const opengl2_draw_info_t *info)
 
static int opengl2_draw_video_cubic_x (opengl2_driver_t *that, const opengl2_draw_info_t *info)
 
static int opengl2_draw_video_cubic_y (opengl2_driver_t *that, const opengl2_draw_info_t *info)
 
static int opengl2_draw_video_simple (opengl2_driver_t *that, const opengl2_draw_info_t *info)
 
static void opengl2_draw_video_bilinear (opengl2_driver_t *that, const opengl2_draw_info_t *info)
 
static void _upload_texture (GLenum target, GLuint tex, GLenum format, GLenum type, void *data, unsigned pitch, GLuint bpp, GLuint height, GLuint pbo)
 
static GLuint opengl2_use_csc (opengl2_driver_t *that, opengl2_csc_shader_t what)
 
static void opengl2_draw (opengl2_driver_t *that, opengl2_frame_t *frame)
 
static void opengl2_display_frame (vo_driver_t *this_gen, vo_frame_t *frame_gen)
 
static int opengl2_get_property (vo_driver_t *this_gen, int property)
 
static int opengl2_set_property (vo_driver_t *this_gen, int property, int value)
 
static void opengl2_get_property_min_max (vo_driver_t *this_gen, int property, int *min, int *max)
 
static int opengl2_gui_data_exchange (vo_driver_t *this_gen, int data_type, void *data)
 
static uint32_t opengl2_get_capabilities (vo_driver_t *this_gen)
 
static void opengl2_set_bicubic (void *this_gen, xine_cfg_entry_t *entry)
 
static void opengl2_dispose (vo_driver_t *this_gen)
 
static vo_frame_topengl2_alloc_frame (vo_driver_t *this_gen)
 
static vo_driver_topengl2_open_plugin (video_driver_class_t *class_gen, const void *visual_gen)
 
static uint32_t opengl2_check_platform (xine_t *xine, unsigned visual_type, const void *visual)
 
static void * opengl2_init_class (xine_t *xine, unsigned visual_type, const void *visual_gen)
 
static void * opengl2_init_class_x11 (xine_t *xine, const void *visual_gen)
 
static void * opengl2_init_class_wl (xine_t *xine, const void *visual_gen)
 

Variables

opengl2_driver_topengl2_exit_vector [8]
 
static const char *const bicubic_pass1_args [] = {"ARB", "tex", "lut", "spline", NULL}
 
static const char * bicubic_pass1_frag
 
static const char *const bicubic_pass2_args [] = {"ARB", "tex", "lut", "spline", NULL}
 
static const char * bicubic_pass2_frag
 
static const char *const blur_sharpen_args [] = {"ARB", "tex", "mid", "side", "corn", NULL}
 
static const char * blur_sharpen_frag
 
static const char *const yuv420_args [] = {"r_coefs", "g_coefs", "b_coefs", "texY", "texU", "texV", NULL}
 
static const char * yuv420_frag
 
static const char *const yuv420j_args [] = {"r_coefs", "g_coefs", "b_coefs", "texY", "tex_U_V", NULL}
 
static const char * yuv420j_frag
 
static const char *const nv12_args [] = {"r_coefs", "g_coefs", "b_coefs", "texY", "texUV", NULL}
 
static const char *const yuv422_args [] = {"r_coefs", "g_coefs", "b_coefs", "texYUV", "yuy2vals", NULL}
 
static const vo_info_t vo_info_opengl2
 
static const vo_info_t vo_info_opengl2_wl
 
const plugin_info_t xine_plugin_info[] EXPORTED
 

Macro Definition Documentation

◆ CATMULLROM_SPLINE

#define CATMULLROM_SPLINE   0

◆ CM_DRIVER_T

#define CM_DRIVER_T   opengl2_driver_t

◆ CM_HAVE_BT2020_SUPPORT

#define CM_HAVE_BT2020_SUPPORT   1

◆ CM_HAVE_YCGCO_SUPPORT

#define CM_HAVE_YCGCO_SUPPORT   1

◆ CM_LUT

#define CM_LUT

◆ COS_SPLINE

#define COS_SPLINE   1

◆ GL_GLEXT_PROTOTYPES

#define GL_GLEXT_PROTOTYPES

◆ GL_RED

#define GL_RED   0x1903

◆ GL_RG

#define GL_RG   0x8227

◆ INITHEIGHT

#define INITHEIGHT   576

◆ INITWIDTH

#define INITWIDTH   720

◆ LOG_MODULE

#define LOG_MODULE   "video_out_opengl2"

◆ LUTWIDTH

#define LUTWIDTH   1000

◆ MAX_EXIT_TARGETS

#define MAX_EXIT_TARGETS   8

◆ N_SPLINES

#define N_SPLINES   2

◆ nv12_frag

#define nv12_frag
Value:
"uniform sampler2D texY, texUV;\n" \
"uniform vec4 r_coefs, g_coefs, b_coefs;\n" \
"void main (void) {\n" \
" vec4 rgb;\n" \
" vec4 yuv;\n" \
" vec2 coord = gl_TexCoord[0].xy;\n" \
" yuv.r = texture2D (texY, coord).r;\n" \
" yuv.g = texture2D (texUV, coord).r;\n" \
" yuv.b = texture2D (texUV, coord).%s;\n" \
" yuv.a = 1.0;\n" \
" rgb.r = dot( yuv, r_coefs );\n" \
" rgb.g = dot( yuv, g_coefs );\n" \
" rgb.b = dot( yuv, b_coefs );\n" \
" rgb.a = 1.0;\n" \
" gl_FragColor = rgb;\n" \
"}\n"

◆ OGL2_BC_FBO

#define OGL2_BC_FBO   8

◆ OGL2_BC_LUT

#define OGL2_BC_LUT   1

◆ OGL2_BC_PROG_1

#define OGL2_BC_PROG_1   2

◆ OGL2_BC_PROG_2

#define OGL2_BC_PROG_2   4

◆ yuv422_frag

#define yuv422_frag
Value:
"uniform sampler2D texYUV;\n" \
"uniform vec4 r_coefs, g_coefs, b_coefs;\n" \
"uniform vec2 yuy2vals;\n" \
"void main(void) {\n" \
" vec4 rgba;\n" \
" vec4 yuv;\n" \
" vec4 coord = gl_TexCoord[0].xyxx;\n" \
" float group_x = floor (coord.x * yuy2vals.x);\n" \
" coord.z = (group_x + 0.25) * yuy2vals.y;\n" \
" coord.w = (group_x + 0.75) * yuy2vals.y;\n" \
" yuv.r = texture2D (texYUV, coord.xy).r;\n" \
" yuv.g = texture2D (texYUV, coord.zy).%s;\n" \
" yuv.b = texture2D (texYUV, coord.wy).%s;\n" \
" yuv.a = 1.0;\n" \
" rgba.r = dot (yuv, r_coefs);\n" \
" rgba.g = dot (yuv, g_coefs);\n" \
" rgba.b = dot (yuv, b_coefs);\n" \
" rgba.a = 1.0;\n" \
" gl_FragColor = rgba;\n" \
"}\n"

Typedef Documentation

◆ opengl2_frame_t

Enumeration Type Documentation

◆ opengl2_csc_shader_t

Enumerator
OGL2_cscs_NONE 
OGL2_cscs_yuv420 
OGL2_cscs_yuv420j 
OGL2_cscs_nv12 
OGL2_cscs_yuv422 
OGL2_cscs_LAST 

◆ opengl2_tex_t

Enumerator
OGL2_TEX_VIDEO_0 
OGL2_TEX_VIDEO_1 
OGL2_TEX_y 
OGL2_TEX_u_v 
OGL2_TEX_u 
OGL2_TEX_v 
OGL2_TEX_yuv 
OGL2_TEX_uv 
OGL2_TEX_HW0 
OGL2_TEX_HW1 
OGL2_TEX_HW2 
OGL2_TEX_LAST 

Function Documentation

◆ _config_texture()

static void _config_texture ( GLenum  target,
GLuint  texture,
GLsizei  width,
GLsizei  height,
GLenum  format,
GLenum  type,
GLenum  minmag_filter 
)
static

◆ _opengl2_setup_bicubic()

static int _opengl2_setup_bicubic ( opengl2_driver_t that,
uint32_t  flags 
)
static

◆ _upload_texture()

static void _upload_texture ( GLenum  target,
GLuint  tex,
GLenum  format,
GLenum  type,
void *  data,
unsigned  pitch,
GLuint  bpp,
GLuint  height,
GLuint  pbo 
)
static

References height, type, and xine_fast_memcpy.

Referenced by opengl2_draw().

◆ compute_catmullrom_spline()

static float compute_catmullrom_spline ( float  x)
static

Referenced by create_lut_texture().

◆ compute_cos_spline()

static float compute_cos_spline ( float  x)
static

Referenced by create_lut_texture().

◆ create_lut_texture()

static int create_lut_texture ( opengl2_driver_t that)
static

◆ opengl2_accel_lock()

static void opengl2_accel_lock ( vo_frame_t frame,
int  lock 
)
static

Referenced by opengl2_open_plugin().

◆ opengl2_alloc_frame()

static vo_frame_t * opengl2_alloc_frame ( vo_driver_t this_gen)
static

◆ opengl2_build_program()

static int opengl2_build_program ( opengl2_driver_t this,
opengl2_program_t prog,
const char *  source,
const char *  name,
const char *const *  arg_names 
)
static

◆ opengl2_check_platform()

static uint32_t opengl2_check_platform ( xine_t xine,
unsigned  visual_type,
const void *  visual 
)
static

◆ opengl2_check_textures_size()

static int opengl2_check_textures_size ( opengl2_driver_t this_gen,
int  w,
int  h,
int  bytes_per_pixel 
)
static

◆ opengl2_delete_program()

static void opengl2_delete_program ( opengl2_program_t prog)
static

◆ opengl2_display_frame()

static void opengl2_display_frame ( vo_driver_t this_gen,
vo_frame_t frame_gen 
)
static

◆ opengl2_dispose()

static void opengl2_dispose ( vo_driver_t this_gen)
static

◆ opengl2_draw()

static void opengl2_draw ( opengl2_driver_t that,
opengl2_frame_t frame 
)
static

References _upload_texture(), opengl2_program_t::args, vo_frame_s::base, opengl2_driver_t::bicubic, bits, opengl2_driver_t::changed, opengl2_driver_t::corn, opengl2_driver_t::csc_shaders, opengl2_draw_info_t::dh, vo_scale_s::displayed_height, vo_scale_s::displayed_width, vo_scale_s::displayed_xoffset, vo_scale_s::displayed_yoffset, opengl2_draw_info_t::dw, opengl2_draw_info_t::dx1, opengl2_draw_info_t::dx2, opengl2_draw_info_t::dy1, opengl2_draw_info_t::dy2, opengl2_driver_t::fbo, vo_frame_s::flags, opengl2_driver_t::flags, opengl2_driver_t::fmt_1p, opengl2_driver_t::fmt_2p, vo_frame_s::format, mem_frame_t::format, xine_hwdec_t::frame_format, xine_glconv_t::get_textures, opengl2_driver_t::gl, opengl2_driver_t::glconv, vo_scale_s::gui_height, vo_scale_s::gui_width, opengl2_draw_info_t::guih, opengl2_draw_info_t::guiw, mem_frame_t::height, opengl2_driver_t::hw, LOG_MODULE, xine_gl::make_current, opengl2_driver_t::mid, OGL2_cscs_nv12, OGL2_cscs_yuv420, OGL2_cscs_yuv420j, OGL2_cscs_yuv422, OGL2_TEX_HW0, OGL2_TEX_u, OGL2_TEX_u_v, OGL2_TEX_uv, OGL2_TEX_v, OGL2_TEX_VIDEO_0, OGL2_TEX_y, OGL2_TEX_yuv, opengl2_check_textures_size(), opengl2_draw_scaled_overlays(), opengl2_draw_unscaled_overlays(), opengl2_draw_video_bicubic(), opengl2_draw_video_bilinear(), opengl2_draw_video_cubic_x(), opengl2_draw_video_cubic_y(), opengl2_draw_video_simple(), opengl2_sharpness(), opengl2_update_csc_matrix(), opengl2_update_overlays(), opengl2_use_csc(), vo_scale_s::output_height, vo_scale_s::output_width, vo_scale_s::output_xoffset, vo_scale_s::output_yoffset, vo_frame_s::pitches, xine_gl::release_current, opengl2_yuvtex_t::relw, opengl2_driver_t::sc, opengl2_driver_t::scale, opengl2_driver_t::sharp, opengl2_driver_t::side, xine_gl::swap_buffers, opengl2_draw_info_t::sx1, opengl2_draw_info_t::sx2, opengl2_draw_info_t::sy1, opengl2_draw_info_t::sy2, opengl2_yuvtex_t::tex, opengl2_driver_t::transform, type, opengl2_driver_t::value, opengl2_draw_info_t::video_texture, opengl2_driver_t::videoPBO, mem_frame_t::vo_frame, VO_GET_FLAGS_DEPTH, mem_frame_t::width, opengl2_driver_t::xine, XINE_IMGFMT_NV12, XINE_IMGFMT_YUY2, XINE_IMGFMT_YV12, XINE_IMGFMT_YV12_DEEP, XINE_VERBOSITY_DEBUG, XINE_VERBOSITY_LOG, XINE_VO_TRANSFORM_FLIP_H, XINE_VO_TRANSFORM_FLIP_V, xprintf, opengl2_driver_t::yuvtex, opengl2_yuvtex_t::yuy2_div, and opengl2_yuvtex_t::yuy2_mul.

Referenced by opengl2_display_frame().

◆ opengl2_draw_scaled_overlays()

static void opengl2_draw_scaled_overlays ( opengl2_driver_t that,
opengl2_frame_t frame 
)
static

◆ opengl2_draw_unscaled_overlays()

static void opengl2_draw_unscaled_overlays ( opengl2_driver_t that)
static

◆ opengl2_draw_video_bicubic()

static int opengl2_draw_video_bicubic ( opengl2_driver_t that,
const opengl2_draw_info_t info 
)
static

◆ opengl2_draw_video_bilinear()

static void opengl2_draw_video_bilinear ( opengl2_driver_t that,
const opengl2_draw_info_t info 
)
static

◆ opengl2_draw_video_cubic_x()

static int opengl2_draw_video_cubic_x ( opengl2_driver_t that,
const opengl2_draw_info_t info 
)
static

◆ opengl2_draw_video_cubic_y()

static int opengl2_draw_video_cubic_y ( opengl2_driver_t that,
const opengl2_draw_info_t info 
)
static

◆ opengl2_draw_video_simple()

static int opengl2_draw_video_simple ( opengl2_driver_t that,
const opengl2_draw_info_t info 
)
static

◆ opengl2_exit()

static void opengl2_exit ( void  )
static

◆ opengl2_exit_register()

static void opengl2_exit_register ( opengl2_driver_t this)
static

◆ opengl2_exit_unregister()

static void opengl2_exit_unregister ( opengl2_driver_t this)
static

References MAX_EXIT_TARGETS, NULL, and opengl2_exit_vector.

Referenced by opengl2_dispose().

◆ opengl2_get_capabilities()

static uint32_t opengl2_get_capabilities ( vo_driver_t this_gen)
static

◆ opengl2_get_property()

static int opengl2_get_property ( vo_driver_t this_gen,
int  property 
)
static

◆ opengl2_get_property_min_max()

static void opengl2_get_property_min_max ( vo_driver_t this_gen,
int  property,
int *  min,
int *  max 
)
static

◆ opengl2_gui_data_exchange()

static int opengl2_gui_data_exchange ( vo_driver_t this_gen,
int  data_type,
void *  data 
)
static

◆ opengl2_init_class()

static void * opengl2_init_class ( xine_t xine,
unsigned  visual_type,
const void *  visual_gen 
)
static

◆ opengl2_init_class_wl()

static void * opengl2_init_class_wl ( xine_t xine,
const void *  visual_gen 
)
static

◆ opengl2_init_class_x11()

static void * opengl2_init_class_x11 ( xine_t xine,
const void *  visual_gen 
)
static

◆ opengl2_open_plugin()

static vo_driver_t * opengl2_open_plugin ( video_driver_class_t class_gen,
const void *  visual_gen 
)
static

◆ opengl2_overlay_begin()

static void opengl2_overlay_begin ( vo_driver_t this_gen,
vo_frame_t frame_gen,
int  changed 
)
static

Referenced by opengl2_open_plugin().

◆ opengl2_overlay_blend()

static void opengl2_overlay_blend ( vo_driver_t this_gen,
vo_frame_t frame_gen,
vo_overlay_t overlay 
)
static

◆ opengl2_overlay_end()

static void opengl2_overlay_end ( vo_driver_t this_gen,
vo_frame_t vo_img 
)
static

References XINE_VORAW_MAX_OVL.

Referenced by opengl2_open_plugin().

◆ opengl2_rect_scale()

static void opengl2_rect_scale ( opengl2_rect_t r,
float  fx,
float  fy 
)
static

◆ opengl2_rect_set()

static void opengl2_rect_set ( opengl2_rect_t r,
opengl2_overlay_t o 
)
static

◆ opengl2_redraw_needed()

static int opengl2_redraw_needed ( vo_driver_t this_gen)
static

◆ opengl2_set_bicubic()

static void opengl2_set_bicubic ( void *  this_gen,
xine_cfg_entry_t entry 
)
static

◆ opengl2_set_property()

static int opengl2_set_property ( vo_driver_t this_gen,
int  property,
int  value 
)
static

◆ opengl2_setup_bicubic()

static int opengl2_setup_bicubic ( opengl2_driver_t that,
uint32_t  flags 
)
inlinestatic

◆ opengl2_sharpness()

static GLuint opengl2_sharpness ( opengl2_driver_t that,
opengl2_frame_t frame,
GLuint  video_texture 
)
static

◆ opengl2_swap_textures()

static GLuint opengl2_swap_textures ( opengl2_driver_t that,
GLuint  current_dest 
)
static

◆ opengl2_update_csc_matrix()

static void opengl2_update_csc_matrix ( opengl2_driver_t that,
opengl2_frame_t frame,
int  input_scale 
)
static

◆ opengl2_update_overlays()

static void opengl2_update_overlays ( opengl2_driver_t that)
static

◆ opengl2_upload_overlay()

static void opengl2_upload_overlay ( opengl2_driver_t this,
opengl2_overlay_t o,
vo_overlay_t overlay 
)
static

◆ opengl2_use_csc()

static GLuint opengl2_use_csc ( opengl2_driver_t that,
opengl2_csc_shader_t  what 
)
static

Variable Documentation

◆ bicubic_pass1_args

const char* const bicubic_pass1_args[] = {"ARB", "tex", "lut", "spline", NULL}
static

Referenced by _opengl2_setup_bicubic().

◆ bicubic_pass1_frag

const char* bicubic_pass1_frag
static
Initial value:
=
"#extension GL_ARB_texture_rectangle : enable\n"
"uniform sampler2DRect tex, lut;\n"
"uniform float spline;\n"
"void main() {\n"
" vec2 coord = gl_TexCoord[0].xy;\n"
" vec2 TexCoord = vec2( floor( coord.x - 0.5 ) + 0.5, coord.y );\n"
" vec4 wlut = texture2DRect( lut, vec2( ( coord.x - TexCoord.x ) * 1000.0, spline ) );\n"
" vec4 sum = texture2DRect( tex, TexCoord + vec2( -1.0, 0.0) ) * wlut[0];\n"
" sum += texture2DRect( tex, TexCoord ) * wlut[1];\n"
" sum += texture2DRect( tex, TexCoord + vec2( 1.0, 0.0) ) * wlut[2];\n"
" sum += texture2DRect( tex, TexCoord + vec2( 2.0, 0.0) ) * wlut[3];\n"
" gl_FragColor = sum;\n"
"}\n"

Referenced by _opengl2_setup_bicubic().

◆ bicubic_pass2_args

const char* const bicubic_pass2_args[] = {"ARB", "tex", "lut", "spline", NULL}
static

Referenced by _opengl2_setup_bicubic().

◆ bicubic_pass2_frag

const char* bicubic_pass2_frag
static
Initial value:
=
"#extension GL_ARB_texture_rectangle : enable\n"
"uniform sampler2DRect tex, lut;\n"
"uniform float spline;\n"
"void main() {\n"
" vec2 coord = gl_TexCoord[0].xy;\n"
" vec2 TexCoord = vec2( coord.x, floor( coord.y - 0.5 ) + 0.5 );\n"
" vec4 wlut = texture2DRect( lut, vec2( ( coord.y - TexCoord.y ) * 1000.0, spline ) );\n"
" vec4 sum = texture2DRect( tex, TexCoord + vec2( 0.0, -1.0 ) ) * wlut[0];\n"
" sum += texture2DRect( tex, TexCoord ) * wlut[1];\n"
" sum += texture2DRect( tex, TexCoord + vec2( 0.0, 1.0 ) ) * wlut[2];\n"
" sum += texture2DRect( tex, TexCoord + vec2( 0.0, 2.0 ) ) * wlut[3];\n"
" gl_FragColor = sum;\n"
"}\n"

Referenced by _opengl2_setup_bicubic().

◆ blur_sharpen_args

const char* const blur_sharpen_args[] = {"ARB", "tex", "mid", "side", "corn", NULL}
static

Referenced by opengl2_sharpness().

◆ blur_sharpen_frag

const char* blur_sharpen_frag
static
Initial value:
=
"#extension GL_ARB_texture_rectangle : enable\n"
"uniform sampler2DRect tex;\n"
"uniform float mid, side, corn;\n"
"void main() {\n"
" vec2 pos = gl_TexCoord[0].xy;\n"
" vec4 c1;\n"
" c1 = texture2DRect (tex, pos) * mid\n"
" + (texture2DRect (tex, pos + vec2 (-1.0, 0.0))\n"
" + texture2DRect (tex, pos + vec2 ( 0.0, -1.0))\n"
" + texture2DRect (tex, pos + vec2 ( 1.0, 0.0))\n"
" + texture2DRect (tex, pos + vec2 ( 0.0, 1.0))) * side\n"
" + (texture2DRect (tex, pos + vec2 (-1.0, -1.0))\n"
" + texture2DRect (tex, pos + vec2 ( 1.0, -1.0))\n"
" + texture2DRect (tex, pos + vec2 (-1.0, 1.0))\n"
" + texture2DRect (tex, pos + vec2 ( 1.0, 1.0))) * corn;\n"
" gl_FragColor = c1 ;\n"
"}\n"

Referenced by opengl2_sharpness().

◆ EXPORTED

const plugin_info_t xine_plugin_info [] EXPORTED
Initial value:
= {
{ PLUGIN_NONE, 0, NULL, 0, NULL, NULL }
}
static void * opengl2_init_class_x11(xine_t *xine, const void *visual_gen)
Definition: video_out_opengl2.c:2082
static void * opengl2_init_class_wl(xine_t *xine, const void *visual_gen)
Definition: video_out_opengl2.c:2086
static const vo_info_t vo_info_opengl2
Definition: video_out_opengl2.c:2090
static const vo_info_t vo_info_opengl2_wl
Definition: video_out_opengl2.c:2095
#define XINE_VERSION_CODE
Definition: xine_internal.h:57
NULL
Definition: xine_plugin.c:78
#define PLUGIN_NONE
Definition: xine_plugin.h:29
#define PLUGIN_VIDEO_OUT
Definition: xine_plugin.h:36

◆ nv12_args

const char* const nv12_args[] = {"r_coefs", "g_coefs", "b_coefs", "texY", "texUV", NULL}
static

Referenced by opengl2_open_plugin().

◆ opengl2_exit_vector

opengl2_driver_t* opengl2_exit_vector[8]

◆ vo_info_opengl2

const vo_info_t vo_info_opengl2
static
Initial value:
= {
.priority = 8,
.visual_type = XINE_VISUAL_TYPE_X11,
}
#define XINE_VISUAL_TYPE_X11
Definition: xine.h:154

◆ vo_info_opengl2_wl

const vo_info_t vo_info_opengl2_wl
static
Initial value:
= {
.priority = 8,
.visual_type = XINE_VISUAL_TYPE_WAYLAND,
}
#define XINE_VISUAL_TYPE_WAYLAND
Definition: xine.h:166

◆ yuv420_args

const char* const yuv420_args[] = {"r_coefs", "g_coefs", "b_coefs", "texY", "texU", "texV", NULL}
static

Referenced by opengl2_open_plugin().

◆ yuv420_frag

const char* yuv420_frag
static
Initial value:
=
"uniform sampler2D texY, texU, texV;\n"
"uniform vec4 r_coefs, g_coefs, b_coefs;\n"
"void main(void) {\n"
" vec4 rgb;\n"
" vec4 yuv;\n"
" vec2 coord = gl_TexCoord[0].xy;\n"
" yuv.r = texture2D (texY, coord).r;\n"
" yuv.g = texture2D (texU, coord).r;\n"
" yuv.b = texture2D (texV, coord).r;\n"
" yuv.a = 1.0;\n"
" rgb.r = dot (yuv, r_coefs);\n"
" rgb.g = dot (yuv, g_coefs);\n"
" rgb.b = dot (yuv, b_coefs);\n"
" rgb.a = 1.0;\n"
" gl_FragColor = rgb;\n"
"}\n"

Referenced by opengl2_open_plugin().

◆ yuv420j_args

const char* const yuv420j_args[] = {"r_coefs", "g_coefs", "b_coefs", "texY", "tex_U_V", NULL}
static

Referenced by opengl2_open_plugin().

◆ yuv420j_frag

const char* yuv420j_frag
static
Initial value:
=
"uniform sampler2D texY, tex_U_V;\n"
"uniform vec4 r_coefs, g_coefs, b_coefs;\n"
"void main(void) {\n"
" vec4 rgb;\n"
" vec4 yuv;\n"
" vec2 coord_y = gl_TexCoord[0].xy;\n"
" vec2 coord_u_v = coord_y * vec2 (1.0, 0.5);\n"
" yuv.r = texture2D (texY, coord_y).r;\n"
" yuv.g = texture2D (tex_U_V, coord_u_v).r;\n"
" yuv.b = texture2D (tex_U_V, coord_u_v + vec2 (0.0, 0.5)).r;\n"
" yuv.a = 1.0;\n"
" rgb.r = dot (yuv, r_coefs);\n"
" rgb.g = dot (yuv, g_coefs);\n"
" rgb.b = dot (yuv, b_coefs);\n"
" rgb.a = 1.0;\n"
" gl_FragColor = rgb;\n"
"}\n"

Referenced by opengl2_open_plugin().

◆ yuv422_args

const char* const yuv422_args[] = {"r_coefs", "g_coefs", "b_coefs", "texYUV", "yuy2vals", NULL}
static

Referenced by opengl2_open_plugin().