]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - cl_video.c
fix skybox loading, _ft and _bk were swapped (and all others had to be flipped accord...
[xonotic/darkplaces.git] / cl_video.c
index 1afbb87fb8c468e96bb3c272afc00d5716703859..130a58ffd3ce5ca4b552b7ccc8686ce6299c32af 100644 (file)
@@ -20,18 +20,12 @@ int cl_videoimagedata_bmask;
 int cl_videoimagedata_bytesperpixel;
 void *cl_videoimagedata;
 
-int cl_videosoundrate;
-int cl_videosoundlength;
-short *cl_videosounddata;
-int cl_videosoundresamplelength;
-short *cl_videosoundresampledata;
-
 rtexture_t *cl_videotexture;
 rtexturepool_t *cl_videotexturepool;
 
 void CL_VideoFrame(void)
 {
-       int frames, framenum, samples, s;
+       int frames, framenum;
        if (!cl_videoplaying)
                return;
        framenum = (realtime - cl_videostarttime) * cl_videoframerate;
@@ -54,35 +48,6 @@ void CL_VideoFrame(void)
                R_UpdateTexture(cl_videotexture, cl_videoimagedata);
                //Draw_NewPic("engine_videoframe", cl_videoimagewidth, cl_videoimageheight, false, cl_videoimagedata);
        }
-       if (cl_videosoundrate && (samples = S_RawSamples_QueueWantsMore()))
-       {
-               Con_Printf("%i = S_RawSamples_QueueWantsMore()\n", samples);
-
-               // calculate how much source data we need to fill the output...
-               s = samples * cl_videosoundrate / shm->speed;
-
-               // reallocate processing buffer if needed
-               if (cl_videosoundresamplelength < samples)
-               {
-                       cl_videosoundresamplelength = samples + 100;
-                       if (cl_videosoundresampledata)
-                               Mem_Free(cl_videosoundresampledata);
-                       cl_videosoundresampledata = Mem_Alloc(clvideomempool, cl_videosoundresamplelength * sizeof(short[2]));
-               }
-
-               // reallocate loading buffer if needed
-               if (cl_videosoundlength < s)
-               {
-                       cl_videosoundlength = s + 100;
-                       if (cl_videosounddata)
-                               Mem_Free(cl_videosounddata);
-                       cl_videosounddata = Mem_Alloc(clvideomempool, cl_videosoundlength * sizeof(short[2]));
-               }
-
-               dpvsimpledecode_audio(cl_videostream, cl_videosounddata, s);
-               S_ResampleBuffer16Stereo(cl_videosounddata, s, cl_videosoundresampledata, samples);
-               S_RawSamples_Enqueue(cl_videosoundresampledata, samples);
-       }
 }
 
 void CL_DrawVideo(void)
@@ -90,65 +55,31 @@ void CL_DrawVideo(void)
        if (cl_videoplaying)
        {
                drawqueuemesh_t mesh;
-               int indices[6];
-               float vertices[12];
-               float texcoords[8];
-               qbyte colorsb[16];
+               float vertex3f[12];
+               float texcoord2f[8];
+               float color4f[16];
                float s1, t1, s2, t2, x1, y1, x2, y2;
-               indices[0] = 0;
-               indices[1] = 1;
-               indices[2] = 2;
-               indices[3] = 0;
-               indices[4] = 2;
-               indices[5] = 3;
                x1 = 0;
                y1 = 0;
                x2 = vid.conwidth;
                y2 = vid.conheight;
-               vertices[0] = y1;
-               vertices[1] = y1;
-               vertices[2] = 0;
-               vertices[3] = x2;
-               vertices[4] = y1;
-               vertices[5] = 0;
-               vertices[6] = x2;
-               vertices[7] = y2;
-               vertices[8] = 0;
-               vertices[9] = x1;
-               vertices[10] = y2;
-               vertices[11] = 0;
                R_FragmentLocation(cl_videotexture, NULL, NULL, &s1, &t1, &s2, &t2);
-               texcoords[0] = s1;
-               texcoords[1] = t1;
-               texcoords[2] = s2;
-               texcoords[3] = t1;
-               texcoords[4] = s2;
-               texcoords[5] = t2;
-               texcoords[6] = s1;
-               texcoords[7] = t2;
-               colorsb[0] = 255 >> v_overbrightbits.integer;
-               colorsb[1] = 255 >> v_overbrightbits.integer;
-               colorsb[2] = 255 >> v_overbrightbits.integer;
-               colorsb[3] = 255;
-               colorsb[4] = 255 >> v_overbrightbits.integer;
-               colorsb[5] = 255 >> v_overbrightbits.integer;
-               colorsb[6] = 255 >> v_overbrightbits.integer;
-               colorsb[7] = 255;
-               colorsb[8] = 255 >> v_overbrightbits.integer;
-               colorsb[9] = 255 >> v_overbrightbits.integer;
-               colorsb[10] = 255 >> v_overbrightbits.integer;
-               colorsb[11] = 255;
-               colorsb[12] = 255 >> v_overbrightbits.integer;
-               colorsb[13] = 255 >> v_overbrightbits.integer;
-               colorsb[14] = 255 >> v_overbrightbits.integer;
-               colorsb[15] = 255;
+               texcoord2f[0] = s1;texcoord2f[1] = t1;
+               texcoord2f[2] = s2;texcoord2f[3] = t1;
+               texcoord2f[4] = s2;texcoord2f[5] = t2;
+               texcoord2f[6] = s1;texcoord2f[7] = t2;
+               R_FillColors(color4f, 4, 1, 1, 1, 1);
+               vertex3f[ 0] = x1;vertex3f[ 1] = y1;vertex3f[ 2] = 0;
+               vertex3f[ 3] = x2;vertex3f[ 4] = y1;vertex3f[ 5] = 0;
+               vertex3f[ 6] = x2;vertex3f[ 7] = y2;vertex3f[ 8] = 0;
+               vertex3f[ 9] = x1;vertex3f[10] = y2;vertex3f[11] = 0;
                mesh.texture = cl_videotexture;
-               mesh.numindices = 6;
-               mesh.numvertices = 4;
-               mesh.indices = indices;
-               mesh.vertices = vertices;
-               mesh.texcoords = texcoords;
-               mesh.colors = colorsb;
+               mesh.num_triangles = 2;
+               mesh.num_vertices = 4;
+               mesh.data_element3i = polygonelements;
+               mesh.data_vertex3f = vertex3f;
+               mesh.data_texcoord2f = texcoord2f;
+               mesh.data_color4f = color4f;
                DrawQ_Mesh(&mesh, 0);
                //DrawQ_Pic(0, 0, "engine_videoframe", vid.conwidth, vid.conheight, 1, 1, 1, 1, 0);
        }
@@ -179,22 +110,14 @@ void CL_VideoStart(char *filename)
        cl_videoimagedata = Mem_Alloc(clvideomempool, cl_videoimagewidth * cl_videoimageheight * cl_videoimagedata_bytesperpixel);
        //memset(cl_videoimagedata, 97, cl_videoimagewidth * cl_videoimageheight * cl_videoimagedata_bytesperpixel);
 
-       cl_videosoundrate = dpvsimpledecode_getsoundrate(cl_videostream);
-       cl_videosoundlength = 0;
-       cl_videosounddata = NULL;
-       cl_videosoundresamplelength = 0;
-       cl_videosoundresampledata = NULL;
-
        cl_videotexturepool = R_AllocTexturePool();
-       cl_videotexture = R_LoadTexture(cl_videotexturepool, "videotexture", cl_videoimagewidth, cl_videoimageheight, NULL, TEXTYPE_RGBA, TEXF_FRAGMENT);
+       cl_videotexture = R_LoadTexture2D(cl_videotexturepool, "videotexture", cl_videoimagewidth, cl_videoimageheight, NULL, TEXTYPE_RGBA, TEXF_FRAGMENT, NULL);
 }
 
 void CL_VideoStop(void)
 {
        cl_videoplaying = false;
 
-       S_RawSamples_ClearQueue();
-
        if (cl_videostream)
                dpvsimpledecode_close(cl_videostream);
        cl_videostream = NULL;
@@ -203,14 +126,6 @@ void CL_VideoStop(void)
                Mem_Free(cl_videoimagedata);
        cl_videoimagedata = NULL;
 
-       if (cl_videosounddata)
-               Mem_Free(cl_videosounddata);
-       cl_videosounddata = NULL;
-
-       if (cl_videosoundresampledata)
-               Mem_Free(cl_videosoundresampledata);
-       cl_videosoundresampledata = NULL;
-
        cl_videotexture = NULL;
        R_FreeTexturePool(&cl_videotexturepool);
 
@@ -223,11 +138,11 @@ static void CL_PlayVideo_f(void)
 
        if (Cmd_Argc() != 2)
        {
-               Con_Print("usage: playvideo <videoname>\nplays video named video/<videoname>.dpv\n");
+               Con_Print("usage: playvideo <videoname>\nplays video named video/<videoname>.dpv\n");
                return;
        }
 
-       sprintf(name, "%s/video/%s.dpv", com_gamedir, Cmd_Argv(1));
+       sprintf(name, "video/%s.dpv", Cmd_Argv(1));
        CL_VideoStart(name);
 }
 
@@ -241,5 +156,5 @@ void CL_Video_Init(void)
        Cmd_AddCommand("playvideo", CL_PlayVideo_f);
        Cmd_AddCommand("stopvideo", CL_StopVideo_f);
 
-       clvideomempool = Mem_AllocPool("CL_Video");
+       clvideomempool = Mem_AllocPool("CL_Video", 0, NULL);
 }