亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? opengl.c

?? VLC Player Source Code
?? C
?? 第 1 頁 / 共 3 頁
字號:
/***************************************************************************** * opengl.c: OpenGL video output ***************************************************************************** * Copyright (C) 2004 the VideoLAN team * $Id$ * * Authors: Cyril Deguet <asmax@videolan.org> *          Gildas Bazin <gbazin@videolan.org> *          Eric Petit <titer@m0k.org> *          Cedric Cocquebert <cedric.cocquebert@supelec.fr> * * 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 of the License, 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 this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************//***************************************************************************** * Preamble *****************************************************************************/#ifdef HAVE_CONFIG_H# include "config.h"#endif#include <errno.h>                                                 /* ENOMEM */#include <vlc_common.h>#include <vlc_plugin.h>#include <vlc_vout.h>#ifdef __APPLE__#include <OpenGL/gl.h>#include <OpenGL/glext.h>/* On OS X, use GL_TEXTURE_RECTANGLE_EXT instead of GL_TEXTURE_2D.   This allows sizes which are not powers of 2 */#define VLCGL_TARGET GL_TEXTURE_RECTANGLE_EXT/* OS X OpenGL supports YUV. Hehe. */#define VLCGL_FORMAT GL_YCBCR_422_APPLE#define VLCGL_TYPE   GL_UNSIGNED_SHORT_8_8_APPLE#else#include <GL/gl.h>#define VLCGL_TARGET GL_TEXTURE_2D/* RV16 */#ifndef GL_UNSIGNED_SHORT_5_6_5#define GL_UNSIGNED_SHORT_5_6_5 0x8363#endif//#define VLCGL_RGB_FORMAT GL_RGB//#define VLCGL_RGB_TYPE GL_UNSIGNED_SHORT_5_6_5/* RV24 *///#define VLCGL_RGB_FORMAT GL_RGB//#define VLCGL_RGB_TYPE GL_UNSIGNED_BYTE/* RV32 */#define VLCGL_RGB_FORMAT GL_RGBA#define VLCGL_RGB_TYPE GL_UNSIGNED_BYTE/* YUY2 */#ifndef YCBCR_MESA#define YCBCR_MESA 0x8757#endif#ifndef UNSIGNED_SHORT_8_8_MESA#define UNSIGNED_SHORT_8_8_MESA 0x85BA#endif#define VLCGL_YUV_FORMAT YCBCR_MESA#define VLCGL_YUV_TYPE UNSIGNED_SHORT_8_8_MESA/* Use RGB on Win32/GLX */#define VLCGL_FORMAT VLCGL_RGB_FORMAT#define VLCGL_TYPE   VLCGL_RGB_TYPE//#define VLCGL_FORMAT VLCGL_YUV_FORMAT//#define VLCGL_TYPE   VLCGL_YUV_TYPE#endif#ifndef GL_CLAMP_TO_EDGE#   define GL_CLAMP_TO_EDGE 0x812F#endif/* OpenGL effects */#define OPENGL_EFFECT_NONE             1#define OPENGL_EFFECT_CUBE             2#define OPENGL_EFFECT_TRANSPARENT_CUBE 4#if defined( HAVE_GL_GLU_H ) || defined( __APPLE__ )    #define OPENGL_MORE_EFFECT           8#endif#ifdef OPENGL_MORE_EFFECT    #include <math.h>    #ifdef __APPLE__        #include <OpenGL/glu.h>    #else        #include <GL/glu.h>    #endif/* 3D MODEL */    #define CYLINDER 8    #define TORUS     16    #define SPHERE   32/*GRID2D TRANSFORMATION */    #define SQUAREXY 64    #define SQUARER  128    #define ASINXY   256    #define ASINR    512    #define SINEXY   1024    #define SINER    2048    #define INIFILE     4096                    // not used, just for mark end ...    #define SIGN(x)     (x < 0 ? (-1) : 1)    #define PID2     1.570796326794896619231322    static const char *const ppsz_effects[] = {            "none", "cube", "transparent-cube", "cylinder", "torus", "sphere","SQUAREXY","SQUARER", "ASINXY", "ASINR", "SINEXY", "SINER" };    static const char *const ppsz_effects_text[] = {            N_("None"), N_("Cube"), N_("Transparent Cube"),            N_("Cylinder"), N_("Torus"), N_("Sphere"), N_("SQUAREXY"),N_("SQUARER"), N_("ASINXY"), N_("ASINR"), N_("SINEXY"), N_("SINER") };#endif/***************************************************************************** * Vout interface *****************************************************************************/static int  CreateVout   ( vlc_object_t * );static void DestroyVout  ( vlc_object_t * );static int  Init         ( vout_thread_t * );static void End          ( vout_thread_t * );static int  Manage       ( vout_thread_t * );static void Render       ( vout_thread_t *, picture_t * );static void DisplayVideo ( vout_thread_t *, picture_t * );static int  Control      ( vout_thread_t *, int, va_list );static inline int GetAlignedSize( int );static int InitTextures  ( vout_thread_t * );static int SendEvents    ( vlc_object_t *, char const *,                           vlc_value_t, vlc_value_t, void * );#ifdef OPENGL_MORE_EFFECTstatic float Z_Compute   ( float, int, float, float );static void Transform    ( int, float, float, int, int, int, int, double *, double * );/***************************************************************************** * Module descriptor *****************************************************************************/#define ACCURACY_TEXT N_( "OpenGL sampling accuracy " )#define ACCURACY_LONGTEXT N_( "Select the accuracy of 3D object sampling(1 = min and 10 = max)" )#define RADIUS_TEXT N_( "OpenGL Cylinder radius" )#define RADIUS_LONGTEXT N_( "Radius of the OpenGL cylinder effect, if enabled" )#define POV_X_TEXT N_("Point of view x-coordinate")#define POV_X_LONGTEXT N_("Point of view (X coordinate) of the cube/cylinder "\                           "effect, if enabled.")#define POV_Y_TEXT N_("Point of view y-coordinate")#define POV_Y_LONGTEXT N_("Point of view (Y coordinate) of the cube/cylinder "\                           "effect, if enabled.")#define POV_Z_TEXT N_("Point of view z-coordinate")#define POV_Z_LONGTEXT N_("Point of view (Z coordinate) of the cube/cylinder "\                           "effect, if enabled.")#endif#define PROVIDER_TEXT N_("OpenGL Provider")#define PROVIDER_LONGTEXT N_("Allows you to modify what OpenGL provider should be used")#define SPEED_TEXT N_( "OpenGL cube rotation speed" )#define SPEED_LONGTEXT N_( "Rotation speed of the OpenGL cube effect, if " \        "enabled." )#define EFFECT_TEXT N_("Effect")#define EFFECT_LONGTEXT N_( \    "Several visual OpenGL effects are available." )#ifndef OPENGL_MORE_EFFECTstatic const char *const ppsz_effects[] = {        "none", "cube", "transparent-cube" };static const char *const ppsz_effects_text[] = {        N_("None"), N_("Cube"), N_("Transparent Cube") };#endifvlc_module_begin();    set_shortname( "OpenGL" );    set_category( CAT_VIDEO );    set_subcategory( SUBCAT_VIDEO_VOUT );    set_description( N_("OpenGL video output") );#ifdef __APPLE__    set_capability( "video output", 200 );#else    set_capability( "video output", 20 );#endif    add_shortcut( "opengl" );    add_float( "opengl-cube-speed", 2.0, NULL, SPEED_TEXT,                    SPEED_LONGTEXT, true );#ifdef OPENGL_MORE_EFFECT    add_integer_with_range( "opengl-accuracy", 4, 1, 10, NULL, ACCURACY_TEXT,                    ACCURACY_LONGTEXT, true );    add_float_with_range( "opengl-pov-x", 0.0, -1.0, 1.0, NULL, POV_X_TEXT,                    POV_X_LONGTEXT, true );    add_float_with_range( "opengl-pov-y", 0.0, -1.0, 1.0, NULL, POV_Y_TEXT,                    POV_Y_LONGTEXT, true );    add_float_with_range( "opengl-pov-z", -1.0, -1.0, 1.0, NULL, POV_Z_TEXT,                    POV_Z_LONGTEXT, true );    add_float( "opengl-cylinder-radius", -100.0, NULL, RADIUS_TEXT,                    RADIUS_LONGTEXT, true );#endif    /* Allow opengl provider plugin selection */    add_string( "opengl-provider", "default", NULL, PROVIDER_TEXT,                     PROVIDER_LONGTEXT, true );    set_callbacks( CreateVout, DestroyVout );    add_string( "opengl-effect", "none", NULL, EFFECT_TEXT,                 EFFECT_LONGTEXT, false );        change_string_list( ppsz_effects, ppsz_effects_text, 0 );vlc_module_end();/***************************************************************************** * vout_sys_t: video output method descriptor ***************************************************************************** * This structure is part of the video output thread descriptor. * It describes the OpenGL specific properties of the output thread. *****************************************************************************/struct vout_sys_t{    vout_thread_t *p_vout;    uint8_t    *pp_buffer[2];    int         i_index;    int         i_tex_width;    int         i_tex_height;    GLuint      p_textures[2];    int         i_effect;    float       f_speed;    float       f_radius;};/***************************************************************************** * CreateVout: This function allocates and initializes the OpenGL vout method. *****************************************************************************/static int CreateVout( vlc_object_t *p_this ){    vout_thread_t *p_vout = (vout_thread_t *)p_this;    vout_sys_t *p_sys;    char * psz;    /* Allocate structure */    p_vout->p_sys = p_sys = malloc( sizeof( vout_sys_t ) );    if( p_sys == NULL )        return VLC_ENOMEM;    var_Create( p_vout, "opengl-effect", VLC_VAR_STRING | VLC_VAR_DOINHERIT );    p_sys->i_index = 0;#ifdef __APPLE__    p_sys->i_tex_width  = p_vout->fmt_in.i_width;    p_sys->i_tex_height = p_vout->fmt_in.i_height;#else    /* A texture must have a size aligned on a power of 2 */    p_sys->i_tex_width  = GetAlignedSize( p_vout->fmt_in.i_width );    p_sys->i_tex_height = GetAlignedSize( p_vout->fmt_in.i_height );#endif    msg_Dbg( p_vout, "Texture size: %dx%d", p_sys->i_tex_width,             p_sys->i_tex_height );    /* Get window */    p_sys->p_vout =        (vout_thread_t *)vlc_object_create( p_this, VLC_OBJECT_OPENGL );    if( p_sys->p_vout == NULL )    {        msg_Err( p_vout, "out of memory" );        return VLC_ENOMEM;    }    vlc_object_attach( p_sys->p_vout, p_this );    p_sys->p_vout->i_window_width = p_vout->i_window_width;    p_sys->p_vout->i_window_height = p_vout->i_window_height;    p_sys->p_vout->b_fullscreen = p_vout->b_fullscreen;    p_sys->p_vout->render.i_width = p_vout->render.i_width;    p_sys->p_vout->render.i_height = p_vout->render.i_height;    p_sys->p_vout->render.i_aspect = p_vout->render.i_aspect;    p_sys->p_vout->fmt_render = p_vout->fmt_render;    p_sys->p_vout->fmt_in = p_vout->fmt_in;    p_sys->p_vout->b_scale = p_vout->b_scale;    p_sys->p_vout->i_alignment = p_vout->i_alignment;    psz = config_GetPsz( p_vout, "opengl-provider" );    msg_Dbg( p_vout, "requesting \"%s\" opengl provider",                      psz ? psz : "default" );    p_sys->p_vout->p_module =        module_Need( p_sys->p_vout, "opengl provider", psz, 0 );    free( psz );    if( p_sys->p_vout->p_module == NULL )    {        msg_Warn( p_vout, "No OpenGL provider found" );        vlc_object_detach( p_sys->p_vout );        vlc_object_release( p_sys->p_vout );        return VLC_ENOOBJ;    }    p_sys->f_speed = var_CreateGetFloat( p_vout, "opengl-cube-speed" );    p_sys->f_radius = var_CreateGetFloat( p_vout, "opengl-cylinder-radius" );    p_vout->pf_init = Init;    p_vout->pf_end = End;    p_vout->pf_manage = Manage;    p_vout->pf_render = Render;    p_vout->pf_display = DisplayVideo;    p_vout->pf_control = Control;    /* Forward events from the opengl provider */    var_Create( p_sys->p_vout, "mouse-x", VLC_VAR_INTEGER );    var_Create( p_sys->p_vout, "mouse-y", VLC_VAR_INTEGER );    var_Create( p_sys->p_vout, "mouse-moved", VLC_VAR_BOOL );    var_Create( p_sys->p_vout, "mouse-clicked", VLC_VAR_INTEGER );    var_Create( p_sys->p_vout, "mouse-button-down", VLC_VAR_INTEGER );    var_Create( p_sys->p_vout, "video-on-top",                VLC_VAR_BOOL | VLC_VAR_DOINHERIT );    var_AddCallback( p_sys->p_vout, "mouse-x", SendEvents, p_vout );    var_AddCallback( p_sys->p_vout, "mouse-y", SendEvents, p_vout );    var_AddCallback( p_sys->p_vout, "mouse-moved", SendEvents, p_vout );    var_AddCallback( p_sys->p_vout, "mouse-clicked", SendEvents, p_vout );    var_AddCallback( p_sys->p_vout, "mouse-button-down", SendEvents, p_vout );    return VLC_SUCCESS;}/***************************************************************************** * Init: initialize the OpenGL video thread output method *****************************************************************************/static int Init( vout_thread_t *p_vout ){    vout_sys_t *p_sys = p_vout->p_sys;    int i_pixel_pitch;    vlc_value_t val;    p_sys->p_vout->pf_init( p_sys->p_vout );/* TODO: We use YCbCr on Mac which is Y422, but on OSX it seems to == YUY2. Verify */#if ( defined( WORDS_BIGENDIAN ) && VLCGL_FORMAT == GL_YCBCR_422_APPLE ) || (VLCGL_FORMAT == YCBCR_MESA)    p_vout->output.i_chroma = VLC_FOURCC('Y','U','Y','2');    i_pixel_pitch = 2;#elif (VLCGL_FORMAT == GL_YCBCR_422_APPLE)    p_vout->output.i_chroma = VLC_FOURCC('U','Y','V','Y');    i_pixel_pitch = 2;#elif VLCGL_FORMAT == GL_RGB#   if VLCGL_TYPE == GL_UNSIGNED_BYTE    p_vout->output.i_chroma = VLC_FOURCC('R','V','2','4');#       if defined( WORDS_BIGENDIAN )    p_vout->output.i_rmask = 0x00ff0000;    p_vout->output.i_gmask = 0x0000ff00;    p_vout->output.i_bmask = 0x000000ff;#       else    p_vout->output.i_rmask = 0x000000ff;    p_vout->output.i_gmask = 0x0000ff00;    p_vout->output.i_bmask = 0x00ff0000;#       endif    i_pixel_pitch = 3;#   else

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
天天综合色天天综合色h| 欧美日韩国产乱码电影| 国产精品资源站在线| 老司机免费视频一区二区| 日韩av成人高清| 亚洲国产成人av网| 亚洲成人高清在线| 午夜影院在线观看欧美| 五月天激情小说综合| 天天av天天翘天天综合网 | 另类成人小视频在线| 日韩有码一区二区三区| 日韩高清电影一区| 色综合av在线| 色香蕉成人二区免费| 欧洲精品一区二区| 欧美精品aⅴ在线视频| 91精品国模一区二区三区| 3d动漫精品啪啪一区二区竹菊 | 精品国产一区二区精华| 26uuu国产日韩综合| 久久精品人人做人人综合| 国产精品久久久久久久蜜臀| 亚洲天堂av一区| 亚洲午夜精品一区二区三区他趣| 日韩高清电影一区| 国产一区二区三区蝌蚪| 成人动漫一区二区| 欧美自拍偷拍午夜视频| 91精品国产一区二区三区蜜臀 | 国产精品色噜噜| 日韩理论片在线| 五月天激情小说综合| 精品一区二区三区在线播放视频| 国产自产2019最新不卡| 成人福利视频在线看| 欧美午夜免费电影| 久久中文字幕电影| 亚洲欧洲日韩在线| 日韩中文字幕不卡| 风流少妇一区二区| 欧美日韩另类国产亚洲欧美一级| 2021国产精品久久精品 | 99视频在线观看一区三区| 欧美中文字幕一区二区三区亚洲 | 亚洲成人av在线电影| 精品综合免费视频观看| 91免费精品国自产拍在线不卡 | 一区二区三区四区不卡在线| 日本中文字幕不卡| 99麻豆久久久国产精品免费| 欧美美女网站色| 国产精品乱码妇女bbbb| 亚洲一区二区三区四区在线 | 色婷婷激情综合| 欧美成人高清电影在线| 亚洲欧美日韩国产一区二区三区| 日本女优在线视频一区二区| 成人动漫在线一区| 精品国产一区二区精华| 亚洲午夜精品久久久久久久久| 国产一区免费电影| 欧美美女一区二区三区| 亚洲欧美一区二区在线观看| 久久精品国产在热久久| 91农村精品一区二区在线| 久久综合狠狠综合| 午夜精品一区二区三区三上悠亚 | 国产欧美一区二区三区在线看蜜臀| 亚洲黄色在线视频| 丁香亚洲综合激情啪啪综合| 4438亚洲最大| 亚洲国产精品影院| av影院午夜一区| 亚洲一区二区三区中文字幕| 风间由美性色一区二区三区| 日韩欧美国产系列| 亚洲韩国一区二区三区| 97se亚洲国产综合在线| 国产亚洲一区二区三区四区| 日本中文一区二区三区| 欧美三级午夜理伦三级中视频| 国产精品久久久久影院色老大| 国产剧情av麻豆香蕉精品| 日韩视频永久免费| 午夜视频在线观看一区二区三区| 91小视频在线观看| 国产精品久久久久久久久免费樱桃| 国内成+人亚洲+欧美+综合在线| 在线91免费看| 午夜影视日本亚洲欧洲精品| 欧美亚洲动漫精品| 亚洲精选视频免费看| 91啪九色porn原创视频在线观看| 中文字幕欧美激情一区| 国产精品一区二区在线观看不卡| 精品美女一区二区| 九九热在线视频观看这里只有精品| 欧美一区二区精品在线| 日日摸夜夜添夜夜添精品视频| 欧美艳星brazzers| 一区二区欧美精品| 91成人免费电影| 一区二区日韩av| 精品视频123区在线观看| 亚洲一区二区中文在线| 在线视频国内一区二区| 亚洲欧美日韩久久精品| 91久久精品国产91性色tv| 亚洲精品高清在线观看| 在线观看日韩电影| 亚洲综合免费观看高清完整版在线 | 日韩手机在线导航| 免费高清成人在线| 日韩一区二区三区免费看 | 国产欧美日韩另类视频免费观看| 国产精品1区2区| 国产日韩av一区| av一区二区三区在线| 有码一区二区三区| 在线播放中文字幕一区| 蜜桃一区二区三区四区| 2023国产精品自拍| 国产精品一二三四五| 亚洲欧美影音先锋| 欧美三级三级三级爽爽爽| 日韩国产精品久久久久久亚洲| 欧美精品粉嫩高潮一区二区| 人人爽香蕉精品| 久久久亚洲精品石原莉奈| 成人免费视频国产在线观看| 亚洲欧美一区二区三区孕妇| 欧美综合欧美视频| 久久国产精品99久久人人澡| 国产午夜精品一区二区| 97精品久久久午夜一区二区三区| 亚洲尤物视频在线| 精品国产成人系列| 成人午夜视频免费看| 一区二区三区小说| 日韩一区二区麻豆国产| 国产一区二区三区美女| 亚洲视频在线一区| 3atv在线一区二区三区| 国产一区二区精品久久91| 亚洲精品伦理在线| 精品黑人一区二区三区久久| 99久久99精品久久久久久| 日韩福利电影在线观看| 亚洲国产精品av| 欧美顶级少妇做爰| 成人综合婷婷国产精品久久| 香蕉加勒比综合久久| 国产精品视频看| 欧美日本不卡视频| www.欧美日韩| 日韩二区三区四区| 中文字幕中文在线不卡住| 欧美日本国产一区| 成人精品gif动图一区| 日韩影视精彩在线| 国产精品国产三级国产有无不卡| 欧美日韩精品一区二区三区四区 | 欧美v日韩v国产v| 91网址在线看| 国产综合成人久久大片91| 一区二区激情视频| 日本一区二区不卡视频| 日韩三级电影网址| 色婷婷综合中文久久一本| 国产一区二区伦理| 日本免费在线视频不卡一不卡二| 中文字幕在线一区免费| 日韩欧美国产不卡| 欧美专区日韩专区| 97se亚洲国产综合在线| 国产福利精品一区二区| 爽好多水快深点欧美视频| 综合分类小说区另类春色亚洲小说欧美| 3751色影院一区二区三区| 色综合天天性综合| 国产99一区视频免费 | 337p亚洲精品色噜噜狠狠| 成人av动漫网站| 国产精一品亚洲二区在线视频| 日韩综合小视频| 一区二区三区.www| 日韩理论电影院| 中文文精品字幕一区二区| 精品久久一区二区| 制服丝袜亚洲色图| 欧美在线你懂的| 色综合视频一区二区三区高清| 国产二区国产一区在线观看| 男男gaygay亚洲| 日韩国产一区二| 午夜久久久影院| 亚洲电影一区二区| 亚洲一区二区三区在线看| 亚洲免费观看高清|