⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 uclinux 下的vlc播放器源代码
💻 C
📖 第 1 页 / 共 3 页
字号:
            glBegin(GL_LINE_STRIP);            for ( x=0;x<numsamples;x++)            {                glVertex3f((x*texsize)/(double)numsamples, pcmdataR[x]*20*fWaveScale+texsize*(wave_y_temp-(wave_y*wave_y*.5)),-1);            }            glEnd();            glPopMatrix();            break;        default:            glBegin(GL_LINE_LOOP);            for ( x=0;x<512;x++)            {                theta=(x)*(6.28/512.0);                r= (texsize/5.0+pcmdataL[x]*.002);                glVertex3f(r*cos(theta)+(wave_x*texsize),r*sin(theta)+(wave_y*texsize),-1);            }            glEnd();            glBegin(GL_LINE_STRIP);            for ( x=0;x<512;x++)            {                glVertex3f(x*scale, pcmdataL[x]*20*fWaveScale+(texsize*(wave_x+.1)),-1);            }            glEnd();            glBegin(GL_LINE_STRIP);            for ( x=0;x<512;x++)            {                glVertex3f(x*scale, pcmdataR[x]*20*fWaveScale+(texsize*(wave_x-.1)),-1);            }            glEnd();            break;            if (bWaveThick==1)  glLineWidth(2*texsize/512);    }    glLineWidth(texsize/512);    glDisable(GL_LINE_STIPPLE);}void maximize_colors(){    float wave_r_switch=0,wave_g_switch=0,wave_b_switch=0;    //wave color brightening    //    //forces max color value to 1.0 and scales    // the rest accordingly    if (bMaximizeWaveColor==1)    {        if(wave_r>=wave_g && wave_r>=wave_b)   //red brightest        {            wave_b_switch=wave_b*(1/wave_r);            wave_g_switch=wave_g*(1/wave_r);            wave_r_switch=1.0;        }        else if   (wave_b>=wave_g && wave_b>=wave_r)         //blue brightest        {            wave_r_switch=wave_r*(1/wave_b);            wave_g_switch=wave_g*(1/wave_b);            wave_b_switch=1.0;        }        else  if (wave_g>=wave_b && wave_g>=wave_r)         //green brightest        {            wave_b_switch=wave_b*(1/wave_g);            wave_r_switch=wave_r*(1/wave_g);            wave_g_switch=1.0;        }        glColor4f(wave_r_switch, wave_g_switch, wave_b_switch, wave_o);    }    else    {        glColor4f(wave_r, wave_g, wave_b, wave_o);    }}void modulate_opacity_by_volume(){    //modulate volume by opacity    //    //set an upper and lower bound and linearly    //calculate the opacity from 0=lower to 1=upper    //based on current volume    if (bModWaveAlphaByVolume==1)    {if (vol<=fModWaveAlphaStart)  wave_o=0.0;        else if (vol>=fModWaveAlphaEnd) wave_o=fWaveAlpha;        else wave_o=fWaveAlpha*((vol-fModWaveAlphaStart)/(fModWaveAlphaEnd-fModWaveAlphaStart));}    else wave_o=fWaveAlpha;}void draw_motion_vectors(){    int x,y;    double offsetx=mv_dx*texsize, intervalx=texsize/(double)mv_x;    double offsety=mv_dy*texsize, intervaly=texsize/(double)mv_y;    glPointSize(mv_l);    glColor4f(mv_r, mv_g, mv_b, mv_a);    glBegin(GL_POINTS);    for (x=0;x<mv_x;x++){        for(y=0;y<mv_y;y++){            glVertex3f(offsetx+x*intervalx,offsety+y*intervaly,-1);        }}    glEnd();}void draw_borders(){    //no additive drawing for borders    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);    glTranslatef(0,0,-1);    //Draw Borders    double of=texsize*ob_size*.5;    double iff=(texsize*ib_size*.5);    double texof=texsize-of;    glColor4d(ob_r,ob_g,ob_b,ob_a);    glRectd(0,0,of,texsize);    glRectd(of,0,texof,of);    glRectd(texof,0,texsize,texsize);    glRectd(of,texsize,texof,texof);    glColor4d(ib_r,ib_g,ib_b,ib_a);    glRectd(of,of,of+iff,texof);    glRectd(of+iff,of,texof-iff,of+iff);    glRectd(texof-iff,of,texof,texof);    glRectd(of+iff,texof,texof-iff,texof-iff);}//Here we render the interpolated mesh, and then apply the texture to it.//Well, we actually do the inverse, but its all the same.void render_interpolation(){    int x,y;    glMatrixMode(GL_MODELVIEW);    glLoadIdentity();    glTranslated(0, 0, -9);    glColor4f(0.0, 0.0, 0.0,decay);    glEnable(GL_TEXTURE_2D);    for (x=0;x<gx-1;x++)    {        glBegin(GL_TRIANGLE_STRIP);        for(y=0;y<gy;y++)        {            glTexCoord4f(x_mesh[x][y], y_mesh[x][y],-1,1); glVertex4f(gridx[x][y], gridy[x][y],-1,1);            glTexCoord4f(x_mesh[x+1][y], y_mesh[x+1][y],-1,1); glVertex4f(gridx[x+1][y], gridy[x+1][y],-1,1);        }        glEnd();    }    glDisable(GL_TEXTURE_2D);}void do_per_frame(){    //Texture wrapping( clamp vs. wrap)    if (bTexWrap==0)    {        glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);        glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);    }    else    {        glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);        glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);    }    //      glRasterPos2i(0,0);    //      glClear(GL_COLOR_BUFFER_BIT);    //      glColor4d(0.0, 0.0, 0.0,1.0);    //      glMatrixMode(GL_TEXTURE);    //  glLoadIdentity();    glRasterPos2i(0,0);    glClear(GL_COLOR_BUFFER_BIT);    glColor4d(0.0, 0.0, 0.0,1.0);    glMatrixMode(GL_TEXTURE);    glLoadIdentity();    glTranslatef(cx,cy, 0);    if(correction)  glScalef(1,vw/(double)vh,1);    if(!isPerPixelEqn(ROT_OP))    {        //    printf("ROTATING: rot = %f\n", rot);        glRotatef(rot*90, 0, 0, 1);    }    if(!isPerPixelEqn(SX_OP)) glScalef(1/sx,1,1);    if(!isPerPixelEqn(SY_OP)) glScalef(1,1/sy,1);    if(correction) glScalef(1,vh/(double)vw,1);    glTranslatef((-cx) ,(-cy),0);    if(!isPerPixelEqn(DX_OP)) glTranslatef(-dx,0,0);    if(!isPerPixelEqn(DY_OP)) glTranslatef(0 ,-dy,0);}//Actually draws the texture to the screen////The Video Echo effect is also applied herevoid render_texture_to_screen(){    glMatrixMode(GL_TEXTURE);    glLoadIdentity();    glMatrixMode(GL_MODELVIEW);    glLoadIdentity();    glTranslatef(0, 0, -9);    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);    glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE,  GL_DECAL);    glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST);    //       glClear(GL_ACCUM_BUFFER_BIT);    glColor4d(0.0, 0.0, 0.0,1.0f);    glBegin(GL_QUADS);    glVertex4d(-vw*.5,-vh*.5,-1,1);    glVertex4d(-vw*.5,  vh*.5,-1,1);    glVertex4d(vw*.5,  vh*.5,-1,1);    glVertex4d(vw*.5, -vh*.5,-1,1);    glEnd();    //      glBindTexture( GL_TEXTURE_2D, tex2 );    glEnable(GL_TEXTURE_2D);    // glAccum(GL_LOAD,0);    // if (bDarken==1)  glBlendFunc(GL_SRC_COLOR,GL_ZERO);    //Draw giant rectangle and texture it with our texture!    glBegin(GL_QUADS);    glTexCoord4d(0, 1,0,1); glVertex4d(-vw*.5,-vh*.5,-1,1);    glTexCoord4d(0, 0,0,1); glVertex4d(-vw*.5,  vh*.5,-1,1);    glTexCoord4d(1, 0,0,1); glVertex4d(vw*.5,  vh*.5,-1,1);    glTexCoord4d(1, 1,0,1); glVertex4d(vw*.5, -vh*.5,-1,1);    glEnd();    glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);    //  if (bDarken==1)  glBlendFunc(GL_SRC_COLOR,GL_ONE_MINUS_SRC_ALPHA);    // if (bDarken==1) { glAccum(GL_ACCUM,1-fVideoEchoAlpha); glBlendFunc(GL_SRC_COLOR,GL_ZERO); }    glMatrixMode(GL_TEXTURE);    //draw video echo    glColor4f(0.0, 0.0, 0.0,fVideoEchoAlpha);    glTranslated(.5,.5,0);    glScaled(1/fVideoEchoZoom,1/fVideoEchoZoom,1);    glTranslated(-.5,-.5,0);    int flipx=1,flipy=1;    switch (((int)nVideoEchoOrientation))    {        case 0: flipx=1;flipy=1;break;        case 1: flipx=-1;flipy=1;break;        case 2: flipx=1;flipy=-1;break;        case 3: flipx=-1;flipy=-1;break;        default: flipx=1;flipy=1; break;    }    glBegin(GL_QUADS);    glTexCoord4d(0, 1,0,1); glVertex4f(-vw*.5*flipx,-vh*.5*flipy,-1,1);    glTexCoord4d(0, 0,0,1); glVertex4f(-vw*.5*flipx,  vh*.5*flipy,-1,1);    glTexCoord4d(1, 0,0,1); glVertex4f(vw*.5*flipx,  vh*.5*flipy,-1,1);    glTexCoord4d(1, 1,0,1); glVertex4f(vw*.5*flipx, -vh*.5*flipy,-1,1);    glEnd();    glDisable(GL_TEXTURE_2D);    glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);    // if (bDarken==1) { glAccum(GL_ACCUM,fVideoEchoAlpha); glAccum(GL_RETURN,1);}    if (bInvert==1)    {        glColor4f(1.0, 1.0, 1.0,1.0);        glBlendFunc(GL_ONE_MINUS_DST_COLOR,GL_ZERO);        glBegin(GL_QUADS);        glVertex4f(-vw*.5*flipx,-vh*.5*flipy,-1,1);        glVertex4f(-vw*.5*flipx,  vh*.5*flipy,-1,1);        glVertex4f(vw*.5*flipx,  vh*.5*flipy,-1,1);        glVertex4f(vw*.5*flipx, -vh*.5*flipy,-1,1);        glEnd();        glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);    }}void render_texture_to_studio(){    glMatrixMode(GL_TEXTURE);    glLoadIdentity();    glMatrixMode(GL_MODELVIEW);    glLoadIdentity();    glTranslatef(0, 0, -9);    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);    glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE,  GL_DECAL);    glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST);    //       glClear(GL_ACCUM_BUFFER_BIT);    glColor4f(0.0, 0.0, 0.0,0.04);    glVertex4d(-vw*.5,-vh*.5,-1,1);    glVertex4d(-vw*.5,  vh*.5,-1,1);    glVertex4d(vw*.5,  vh*.5,-1,1);    glVertex4d(vw*.5, -vh*.5,-1,1);    glEnd();    glColor4f(0.0, 0.0, 0.0,1.0);    glBegin(GL_QUADS);    glVertex4d(-vw*.5,0,-1,1);    glVertex4d(-vw*.5,  vh*.5,-1,1);    glVertex4d(vw*.5,  vh*.5,-1,1);    glVertex4d(vw*.5, 0,-1,1);    glEnd();    glBegin(GL_QUADS);    glVertex4d(0,-vh*.5,-1,1);    glVertex4d(0,  vh*.5,-1,1);    glVertex4d(vw*.5,  vh*.5,-1,1);    glVertex4d(vw*.5, -vh*.5,-1,1);    glEnd();    glPushMatrix();    glTranslatef(.25*vw, .25*vh, 0);    glScalef(.5,.5,1);    //      glBindTexture( GL_TEXTURE_2D, tex2 );    glEnable(GL_TEXTURE_2D);    // glAccum(GL_LOAD,0);    // if (bDarken==1)  glBlendFunc(GL_SRC_COLOR,GL_ZERO);    //Draw giant rectangle and texture it with our texture!    glBegin(GL_QUADS);    glTexCoord4d(0, 1,0,1); glVertex4d(-vw*.5,-vh*.5,-1,1);    glTexCoord4d(0, 0,0,1); glVertex4d(-vw*.5,  vh*.5,-1,1);    glTexCoord4d(1, 0,0,1); glVertex4d(vw*.5,  vh*.5,-1,1);    glTexCoord4d(1, 1,0,1); glVertex4d(vw*.5, -vh*.5,-1,1);    glEnd();    glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);    //  if (bDarken==1)  glBlendFunc(GL_SRC_COLOR,GL_ONE_MINUS_SRC_ALPHA);    // if (bDarken==1) { glAccum(GL_ACCUM,1-fVideoEchoAlpha); glBlendFunc(GL_SRC_COLOR,GL_ZERO); }    glMatrixMode(GL_TEXTURE);    //draw video echo    glColor4f(0.0, 0.0, 0.0,fVideoEchoAlpha);    glTranslated(.5,.5,0);    glScaled(1/fVideoEchoZoom,1/fVideoEchoZoom,1);    glTranslated(-.5,-.5,0);    int flipx=1,flipy=1;    switch (((int)nVideoEchoOrientation))    {        case 0: flipx=1;flipy=1;break;        case 1: flipx=-1;flipy=1;break;        case 2: flipx=1;flipy=-1;break;        case 3: flipx=-1;flipy=-1;break;        default: flipx=1;flipy=1; break;    }    glBegin(GL_QUADS);    glTexCoord4d(0, 1,0,1); glVertex4f(-vw*.5*flipx,-vh*.5*flipy,-1,1);    glTexCoord4d(0, 0,0,1); glVertex4f(-vw*.5*flipx,  vh*.5*flipy,-1,1);    glTexCoord4d(1, 0,0,1); glVertex4f(vw*.5*flipx,  vh*.5*flipy,-1,1);    glTexCoord4d(1, 1,0,1); glVertex4f(vw*.5*flipx, -vh*.5*flipy,-1,1);    glEnd();    glDisable(GL_TEXTURE_2D);    glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);    // if (bDarken==1) { glAccum(GL_ACCUM,fVideoEchoAlpha); glAccum(GL_RETURN,1);}    if (bInvert==1)    {        glColor4f(1.0, 1.0, 1.0,1.0);        glBlendFunc(GL_ONE_MINUS_DST_COLOR,GL_ZERO);        glBegin(GL_QUADS);        glVertex4f(-vw*.5*flipx,-vh*.5*flipy,-1,1);        glVertex4f(-vw*.5*flipx,  vh*.5*flipy,-1,1);        glVertex4f(vw*.5*flipx,  vh*.5*flipy,-1,1);        glVertex4f(vw*.5*flipx, -vh*.5*flipy,-1,1);        glEnd();        glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);    }    //  glTranslated(.5,.5,0);    //  glScaled(1/fVideoEchoZoom,1/fVideoEchoZoom,1);    //   glTranslated(-.5,-.5,0);    //glTranslatef(0,.5*vh,0);    //per_pixel monitor    //glBlendFunc(GL_ONE_MINUS_DST_COLOR,GL_ZERO);    int x,y;    glMatrixMode(GL_MODELVIEW);    glPopMatrix();    glPushMatrix();    glTranslatef(.25*vw, -.25*vh, 0);    glScalef(.5,.5,1);    glColor4f(1,1,1,.6);    for (x=0;x<gx;x++)    {        glBegin(GL_LINE_STRIP);        for(y=0;y<gy;y++)        {            glVertex4f((x_mesh[x][y]-.5)* vw, (y_mesh[x][y]-.5)*vh,-1,1);            //glVertex4f((origx[x+1][y]-.5) * vw, (origy[x+1][y]-.5) *vh ,-1,1);        }        glEnd();    }    for (y=0;y<gy;y++)    {        glBegin(GL_LINE_STRIP);        for(x=0;x<gx;x++)        {            glVertex4f((x_mesh[x][y]-.5)* vw, (y_mesh[x][y]-.5)*vh,-1,1);            //glVertex4f((origx[x+1][y]-.5) * vw, (origy[x+1][y]-.5) *vh ,-1,1);        }        glEnd();    }    /*       for (x=0;x<gx-1;x++){       glBegin(GL_POINTS);       for(y=0;y<gy;y++){       glVertex4f((origx[x][y]-.5)* vw, (origy[x][y]-.5)*vh,-1,1);       glVertex4f((origx[x+1][y]-.5) * vw, (origy[x+1][y]-.5) *vh ,-1,1);       }       glEnd();       }     */    // glTranslated(-.5,-.5,0);     glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);    glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);    glMatrixMode(GL_MODELVIEW);    glPopMatrix();    glPushMatrix();    glTranslatef(-.5*vw,0, 0);    glTranslatef(0,-vh*.10, 0);    glBegin(GL_LINE_STRIP);    glColor4f(0,1.0,1.0,1.0);    glVertex3f((((totalframes%256)/551.0))*vw, treb_att*-7,-1);    glColor4f(1.0,1.0,1.0,1.0);    glVertex3f((((totalframes%256)/551.0))*vw,0 ,-1);    glColor4f(.5,1.0,1.0,1.0);    glVertex3f((((totalframes%256)/551.0))*vw, treb*7,-1);    glEnd();    glTranslatef(0,-vh*.13, 0);    glBegin(GL_LINE_STRIP);    glColor4f(0,1.0,0.0,1.0);    glVertex3f((((totalframes%256)/551.0))*vw, mid_att*-7,-1);    glColor4f(1.0,1.0,1.0,1.0);    glVertex3f((((totalframes%256)/551.0))*vw,0 ,-1);    glColor4f(.5,1.0,0.0,0.5);    glVertex3f((((totalframes%256)/551.0))*vw, mid*7,-1);    glEnd();    glTranslatef(0,-vh*.13, 0);    glBegin(GL_LINE_STRIP);    glColor4f(1.0,0.0,0.0,1.0);    glVertex3f((((totalframes%256)/551.0))*vw, bass_att*-7,-1);    glColor4f(1.0,1.0,1.0,1.0);    glVertex3f((((totalframes%256)/551.0))*vw,0 ,-1);    glColor4f(.7,0.2,0.2,1.0);    glVertex3f((((totalframes%256)/551.0))*vw, bass*7,-1);    glEnd();    glTranslatef(0,-vh*.13, 0);    glBegin(GL_LINES);    glColor4f(1.0,1.0,1.0,1.0);    glVertex3f((((totalframes%256)/551.0))*vw,0 ,-1);    glColor4f(1.0,0.6,1.0,1.0);    glVertex3f((((totalframes%256)/551.0))*vw, vol*7,-1);    glEnd();    glPopMatrix();}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -