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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? opengl.c

?? uclinux 下的vlc播放器源代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
#       endif    i_pixel_pitch = 2;#   endif#else    p_vout->output.i_chroma = VLC_FOURCC('R','V','3','2');#       if defined( WORDS_BIGENDIAN )    p_vout->output.i_rmask = 0xff000000;    p_vout->output.i_gmask = 0x00ff0000;    p_vout->output.i_bmask = 0x0000ff00;#       else    p_vout->output.i_rmask = 0x000000ff;    p_vout->output.i_gmask = 0x0000ff00;    p_vout->output.i_bmask = 0x00ff0000;#       endif    i_pixel_pitch = 4;#endif    /* Since OpenGL can do rescaling for us, stick to the default     * coordinates and aspect. */    p_vout->output.i_width  = p_vout->render.i_width;    p_vout->output.i_height = p_vout->render.i_height;    p_vout->output.i_aspect = p_vout->render.i_aspect;    p_vout->fmt_out = p_vout->fmt_in;    p_vout->fmt_out.i_chroma = p_vout->output.i_chroma;    /* We know the chroma, allocate one buffer which will be used     * directly by the decoder */    p_sys->pp_buffer[0] =        malloc( p_sys->i_tex_width * p_sys->i_tex_height * i_pixel_pitch );    if( !p_sys->pp_buffer[0] )    {        msg_Err( p_vout, "out of memory" );        return -1;    }    p_sys->pp_buffer[1] =        malloc( p_sys->i_tex_width * p_sys->i_tex_height * i_pixel_pitch );    if( !p_sys->pp_buffer[1] )    {        msg_Err( p_vout, "out of memory" );        return -1;    }    p_vout->p_picture[0].i_planes = 1;    p_vout->p_picture[0].p->p_pixels = p_sys->pp_buffer[0];    p_vout->p_picture[0].p->i_lines = p_vout->output.i_height;    p_vout->p_picture[0].p->i_visible_lines = p_vout->output.i_height;    p_vout->p_picture[0].p->i_pixel_pitch = i_pixel_pitch;    p_vout->p_picture[0].p->i_pitch = p_vout->output.i_width *        p_vout->p_picture[0].p->i_pixel_pitch;    p_vout->p_picture[0].p->i_visible_pitch = p_vout->output.i_width *        p_vout->p_picture[0].p->i_pixel_pitch;    p_vout->p_picture[0].i_status = DESTROYED_PICTURE;    p_vout->p_picture[0].i_type   = DIRECT_PICTURE;    PP_OUTPUTPICTURE[ 0 ] = &p_vout->p_picture[0];    I_OUTPUTPICTURES = 1;    if( p_sys->p_vout->pf_lock &&        p_sys->p_vout->pf_lock( p_sys->p_vout ) )    {        msg_Warn( p_vout, "could not lock OpenGL provider" );        return 0;    }    InitTextures( p_vout );    glDisable(GL_BLEND);    glDisable(GL_DEPTH_TEST);    glDepthMask(GL_FALSE);    glDisable(GL_CULL_FACE);    glClearColor( 0.0f, 0.0f, 0.0f, 1.0f );    glClear( GL_COLOR_BUFFER_BIT );    /* Check if the user asked for useless visual effects */    var_Get( p_vout, "opengl-effect", &val );    if( !val.psz_string || !strcmp( val.psz_string, "none" ))    {        p_sys->i_effect = OPENGL_EFFECT_NONE;    }    else if( !strcmp( val.psz_string, "cube" ) )    {        p_sys->i_effect = OPENGL_EFFECT_CUBE;        glEnable( GL_CULL_FACE);    }    else if( !strcmp( val.psz_string, "transparent-cube" ) )    {        p_sys->i_effect = OPENGL_EFFECT_TRANSPARENT_CUBE;        glDisable( GL_DEPTH_TEST );        glEnable( GL_BLEND );        glBlendFunc( GL_SRC_ALPHA, GL_ONE );    }    else    {#ifdef OPENGL_MORE_EFFECT		p_sys->i_effect = 3;        while (( strcmp( val.psz_string, ppsz_effects[p_sys->i_effect]) ) && (pow(2,p_sys->i_effect) < INIFILE))        {            p_sys->i_effect ++;        }		if (pow(2,p_sys->i_effect) < INIFILE) 			p_sys->i_effect = pow(2,p_sys->i_effect);		else if ( strcmp( val.psz_string, ppsz_effects[p_sys->i_effect]))		{			msg_Warn( p_vout, "no valid opengl effect provided, using "					  "\"none\"" );			p_sys->i_effect = OPENGL_EFFECT_NONE;		}#else        msg_Warn( p_vout, "no valid opengl effect provided, using "                  "\"none\"" );        p_sys->i_effect = OPENGL_EFFECT_NONE;#endif    }    if( val.psz_string ) free( val.psz_string );    if( p_sys->i_effect & ( OPENGL_EFFECT_CUBE |                OPENGL_EFFECT_TRANSPARENT_CUBE ) )    {        /* Set the perpective */        glMatrixMode( GL_PROJECTION );        glLoadIdentity();        glFrustum( -1.0, 1.0, -1.0, 1.0, 3.0, 20.0 );        glMatrixMode( GL_MODELVIEW );        glLoadIdentity();        glTranslatef( 0.0, 0.0, - 5.0 );    }#ifdef OPENGL_MORE_EFFECT	else     {        /* Set the perpective */        glMatrixMode( GL_PROJECTION );        glLoadIdentity();        glFrustum( -1.0, 1.0, -1.0, 1.0, 3.0, 20.0 );        glMatrixMode( GL_MODELVIEW );        glLoadIdentity();        glTranslatef( 0.0, 0.0, -3.0 );		float f_pov_x, f_pov_y, f_pov_z;		f_pov_x = var_CreateGetFloat( p_vout, "opengl-pov-x");		f_pov_y = var_CreateGetFloat( p_vout, "opengl-pov-y");		f_pov_z = var_CreateGetFloat( p_vout, "opengl-pov-z");		gluLookAt(0, 0, 0, f_pov_x, f_pov_y, f_pov_z, 0, 1, 0);    }#endif    if( p_sys->p_vout->pf_unlock )    {        p_sys->p_vout->pf_unlock( p_sys->p_vout );    }    return 0;}/***************************************************************************** * End: terminate GLX video thread output method *****************************************************************************/static void End( vout_thread_t *p_vout ){    vout_sys_t *p_sys = p_vout->p_sys;    if( p_sys->p_vout->pf_lock &&        p_sys->p_vout->pf_lock( p_sys->p_vout ) )    {        msg_Warn( p_vout, "could not lock OpenGL provider" );        return;    }    glFinish();    glFlush();    /* Free the texture buffer*/    glDeleteTextures( 2, p_sys->p_textures );    if( p_sys->pp_buffer[0] ) free( p_sys->pp_buffer[0] );    if( p_sys->pp_buffer[1] ) free( p_sys->pp_buffer[1] );    if( p_sys->p_vout->pf_unlock )    {        p_sys->p_vout->pf_unlock( p_sys->p_vout );    }}/***************************************************************************** * Destroy: destroy GLX video thread output method ***************************************************************************** * Terminate an output method created by CreateVout *****************************************************************************/static void DestroyVout( vlc_object_t *p_this ){    vout_thread_t *p_vout = (vout_thread_t *)p_this;    vout_sys_t *p_sys = p_vout->p_sys;    module_Unneed( p_sys->p_vout, p_sys->p_vout->p_module );    vlc_object_detach( p_sys->p_vout );    vlc_object_destroy( p_sys->p_vout );    free( p_sys );}/***************************************************************************** * Manage: handle Sys events ***************************************************************************** * This function should be called regularly by video output thread. It returns * a non null value if an error occurred. *****************************************************************************/static int Manage( vout_thread_t *p_vout ){    vout_sys_t *p_sys = p_vout->p_sys;    int i_ret, i_fullscreen_change;    i_fullscreen_change = ( p_vout->i_changes & VOUT_FULLSCREEN_CHANGE );    p_vout->fmt_out.i_x_offset = p_sys->p_vout->fmt_in.i_x_offset =        p_vout->fmt_in.i_x_offset;    p_vout->fmt_out.i_y_offset = p_sys->p_vout->fmt_in.i_y_offset =        p_vout->fmt_in.i_y_offset;    p_vout->fmt_out.i_visible_width = p_sys->p_vout->fmt_in.i_visible_width =        p_vout->fmt_in.i_visible_width;    p_vout->fmt_out.i_visible_height = p_sys->p_vout->fmt_in.i_visible_height =        p_vout->fmt_in.i_visible_height;    p_vout->fmt_out.i_aspect = p_sys->p_vout->fmt_in.i_aspect =        p_vout->fmt_in.i_aspect;    p_vout->fmt_out.i_sar_num = p_sys->p_vout->fmt_in.i_sar_num =        p_vout->fmt_in.i_sar_num;    p_vout->fmt_out.i_sar_den = p_sys->p_vout->fmt_in.i_sar_den =        p_vout->fmt_in.i_sar_den;    p_vout->output.i_aspect = p_vout->fmt_in.i_aspect;    p_sys->p_vout->i_changes = p_vout->i_changes;    i_ret = p_sys->p_vout->pf_manage( p_sys->p_vout );    p_vout->i_changes = p_sys->p_vout->i_changes;#ifdef __APPLE__    if( p_sys->p_vout->pf_lock &&        p_sys->p_vout->pf_lock( p_sys->p_vout ) )    {        msg_Warn( p_vout, "could not lock OpenGL provider" );        return i_ret;    }    /* On OS X, we create the window and the GL view when entering       fullscreen - the textures have to be inited again */    if( i_fullscreen_change )    {        InitTextures( p_vout );        switch( p_sys->i_effect )        {            case OPENGL_EFFECT_CUBE:#ifdef OPENGL_MORE_EFFECT			case CYLINDER:			case TORUS:			case SPHERE:			case SQUAREXY:			case SQUARER:			case ASINXY:			case ASINR:			case SINEXY:			case SINER:#endif                            glEnable( GL_CULL_FACE );                break;            case OPENGL_EFFECT_TRANSPARENT_CUBE:                glDisable( GL_DEPTH_TEST );                glEnable( GL_BLEND );                glBlendFunc( GL_SRC_ALPHA, GL_ONE );                break;        }        if( p_sys->i_effect & ( OPENGL_EFFECT_CUBE |                    OPENGL_EFFECT_TRANSPARENT_CUBE ) )        {            /* Set the perpective */            glMatrixMode( GL_PROJECTION );            glLoadIdentity();            glFrustum( -1.0, 1.0, -1.0, 1.0, 3.0, 20.0 );            glMatrixMode( GL_MODELVIEW );            glLoadIdentity();            glTranslatef( 0.0, 0.0, - 5.0 );        }#ifdef OPENGL_MORE_EFFECT		else 	    {	        glMatrixMode( GL_PROJECTION );	        glLoadIdentity();	        glFrustum( -1.0, 1.0, -1.0, 1.0, 3.0, 20.0 );	        glMatrixMode( GL_MODELVIEW );	        glLoadIdentity();	        glTranslatef( 0.0, 0.0, -3.0 );				float f_pov_x, f_pov_y, f_pov_z;			f_pov_x = var_CreateGetFloat( p_vout, "opengl-pov-x");			f_pov_y = var_CreateGetFloat( p_vout, "opengl-pov-y");			f_pov_z = var_CreateGetFloat( p_vout, "opengl-pov-z");			gluLookAt(0, 0, 0, f_pov_x, f_pov_y, f_pov_z, 0, 1, 0);	    }#endif            }    if( p_sys->p_vout->pf_unlock )    {        p_sys->p_vout->pf_unlock( p_sys->p_vout );    }#endif// to align in real time in OPENGL	if (p_sys->p_vout->i_alignment != p_vout->i_alignment)	{		p_vout->i_changes = VOUT_CROP_CHANGE;		//to force change    	p_sys->p_vout->i_alignment = p_vout->i_alignment;		}	    return i_ret;}/***************************************************************************** * Render: render previously calculated output *****************************************************************************/static void Render( vout_thread_t *p_vout, picture_t *p_pic ){    vout_sys_t *p_sys = p_vout->p_sys;    /* On Win32/GLX, we do this the usual way:       + Fill the buffer with new content,       + Reload the texture,       + Use the texture.       On OS X with VRAM or AGP texturing, the order has to be:       + Reload the texture,       + Fill the buffer with new content,       + Use the texture.       (Thanks to gcc from the Arstechnica forums for the tip)       Therefore, we have to use two buffers and textures. On Win32/GLX,       we reload the texture to be displayed and use it right away. On       OS X, we first render, then reload the texture to be used next       time. */    if( p_sys->p_vout->pf_lock &&        p_sys->p_vout->pf_lock( p_sys->p_vout ) )    {        msg_Warn( p_vout, "could not lock OpenGL provider" );        return;    }#ifdef __APPLE__    int i_new_index;    i_new_index = ( p_sys->i_index + 1 ) & 1;    /* Update the texture */    glBindTexture( VLCGL_TARGET, p_sys->p_textures[i_new_index] );    glTexSubImage2D( VLCGL_TARGET, 0, 0, 0,                     p_vout->fmt_out.i_width,                     p_vout->fmt_out.i_height,                     VLCGL_FORMAT, VLCGL_TYPE, p_sys->pp_buffer[i_new_index] );    /* Bind to the previous texture for drawing */    glBindTexture( VLCGL_TARGET, p_sys->p_textures[p_sys->i_index] );    /* Switch buffers */    p_sys->i_index = i_new_index;    p_pic->p->p_pixels = p_sys->pp_buffer[p_sys->i_index];

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区高清免费观看影视大全 | 偷拍一区二区三区| 欧美电影免费观看完整版| 日本道色综合久久| 久久精品国产亚洲一区二区三区| 一区二区成人在线| 日韩一区在线看| 国产精品久久夜| 欧美日韩美少妇| 91蝌蚪国产九色| 99v久久综合狠狠综合久久| 国产99精品在线观看| 久久99热狠狠色一区二区| 日韩精品一级二级| 午夜视频一区在线观看| 亚洲欧美一区二区三区久本道91| 中文字幕av不卡| 中文字幕av一区二区三区高 | 亚洲精选在线视频| 最新日韩av在线| 成人免费在线播放视频| 国产精品久久777777| 久久精品日产第一区二区三区高清版| 91精品国产综合久久福利软件| 欧美日韩国产美| 欧美福利电影网| 亚洲乱码日产精品bd| 欧美视频一区二| 东方aⅴ免费观看久久av| 偷窥少妇高潮呻吟av久久免费| 亚洲精品国产a久久久久久| √…a在线天堂一区| 亚洲免费观看高清完整版在线观看| 日韩视频在线观看一区二区| 7777精品伊人久久久大香线蕉的| 91精品蜜臀在线一区尤物| 日韩一区二区精品葵司在线| 日韩欧美一级二级| 国产免费久久精品| 亚洲人成精品久久久久久| 国产精品午夜免费| 一区二区高清视频在线观看| 视频在线观看一区| 麻豆成人免费电影| 九九久久精品视频| 成人久久18免费网站麻豆| 99久久久免费精品国产一区二区 | 欧美日韩亚洲综合在线| 欧美午夜精品免费| 日韩欧美一级二级三级| 欧美国产丝袜视频| 亚洲一区二区中文在线| 综合分类小说区另类春色亚洲小说欧美 | 欧美日韩中文国产| 日韩精品中文字幕在线一区| 久久婷婷色综合| 自拍偷在线精品自拍偷无码专区| 精品中文字幕一区二区小辣椒| 国产乱人伦偷精品视频免下载| 成人av在线网站| 欧美三区在线视频| 国产日韩欧美精品电影三级在线| 亚洲欧洲中文日韩久久av乱码| 日本午夜精品视频在线观看| 国产在线一区二区| 色综合 综合色| 精品免费一区二区三区| 国产精品国产三级国产普通话三级 | 成人小视频免费在线观看| 国产精品影视天天线| 一本色道a无线码一区v| 日韩一区二区精品在线观看| 国产精品高清亚洲| 麻豆91精品视频| 国产成+人+日韩+欧美+亚洲| 欧美视频在线一区二区三区| 国产欧美日本一区二区三区| 日韩黄色免费网站| www.久久精品| 欧美va亚洲va香蕉在线| 亚洲综合另类小说| 成人性生交大片免费| 91精品国产综合久久福利 | 在线看不卡av| 日韩欧美123| 亚洲一区二区三区中文字幕在线| 精品在线观看视频| 欧美在线free| 26uuuu精品一区二区| 性做久久久久久久久| 国产成人综合网站| 欧美一区二区三区不卡| 国产精品丝袜91| 久久97超碰色| 制服丝袜激情欧洲亚洲| 亚洲视频免费观看| 大桥未久av一区二区三区中文| 欧美成人一区二区| 天堂久久一区二区三区| 国产999精品久久| 精品国产伦一区二区三区观看体验 | 亚洲综合自拍偷拍| 国产精品 欧美精品| 91精品综合久久久久久| 国产精品久久久久久久久免费相片| 青青国产91久久久久久| 在线欧美日韩国产| 国产精品国产精品国产专区不片| 黄色精品一二区| 日韩欧美国产一区二区在线播放| 亚洲一区二区三区中文字幕 | 成人一道本在线| 久久五月婷婷丁香社区| 国产真实乱子伦精品视频| 91精品国产色综合久久ai换脸 | 色综合久久久久网| 国产精品免费丝袜| 国产传媒一区在线| 国产丝袜美腿一区二区三区| 激情综合网最新| 日韩欧美国产一区二区三区| 国产91在线|亚洲| 久久精品网站免费观看| 国产黄色精品视频| 国产午夜亚洲精品羞羞网站| 狠狠久久亚洲欧美| 欧美精品一区视频| 国产成人精品三级| 欧美激情一区二区三区蜜桃视频| 国产99久久久国产精品潘金| 国产欧美精品一区二区三区四区| 懂色av一区二区三区免费观看| 亚洲国产精品成人综合色在线婷婷| 国产**成人网毛片九色 | 一区二区三区欧美久久| 欧美午夜在线一二页| 日韩精品色哟哟| 精品国产91久久久久久久妲己| 国模娜娜一区二区三区| 欧美高清在线一区二区| a美女胸又www黄视频久久| 一区二区三区在线高清| 欧美日韩不卡在线| 人人精品人人爱| 久久精品男人天堂av| 成人av资源网站| 一区二区成人在线| 欧美一区二区福利视频| 日日欢夜夜爽一区| 精品国产亚洲在线| 成人福利视频网站| 亚洲一区二区三区四区的| 欧美亚洲禁片免费| 午夜精品福利一区二区蜜股av | 精品av久久707| av在线这里只有精品| 一级精品视频在线观看宜春院| 日本丶国产丶欧美色综合| 天堂精品中文字幕在线| 日韩欧美你懂的| 成人国产精品免费观看视频| 亚洲第一二三四区| 久久亚洲精精品中文字幕早川悠里| 波多野洁衣一区| 天堂在线一区二区| 欧美国产日韩亚洲一区| 欧美日韩一区二区三区在线| 久久精品99国产精品日本| 综合精品久久久| 日韩你懂的在线观看| 成人av电影在线网| 无码av免费一区二区三区试看| 久久久精品国产免大香伊| 91视频免费播放| 国产精品一级片在线观看| 蜜桃av一区二区| 亚洲成人免费在线| 亚洲免费观看在线视频| 国产欧美一区二区精品性| 日韩网站在线看片你懂的| 欧亚洲嫩模精品一区三区| av福利精品导航| 成人午夜私人影院| 国产一区999| 久久99精品一区二区三区三区| 亚洲成人激情av| 一区二区三区在线观看动漫 | 国产麻豆精品视频| 日本成人中文字幕| 午夜精品123| 午夜视频在线观看一区二区| 一区二区三区四区在线| 亚洲欧美日韩国产一区二区三区| 久久精品夜色噜噜亚洲aⅴ| www国产亚洲精品久久麻豆| 这里是久久伊人| 欧美精品久久久久久久多人混战| 在线观看视频一区| 欧美性色黄大片手机版| 欧美专区日韩专区|