]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - cl_video.c
fix two more fs_gamedir mixups (loading saved games should now work, as well as video...
[xonotic/darkplaces.git] / cl_video.c
index fd4c7071e8028cf3e5ff5e09f8b9fbf18f678a29..998f088f9dba532e6c1fc2cb78d095343191730a 100644 (file)
@@ -56,10 +56,10 @@ void CL_VideoFrame(void)
        }
        if (cl_videosoundrate && (samples = S_RawSamples_QueueWantsMore()))
        {
-               Con_Printf("%i = S_RawSamples_QueueWantsMore()\n", samples);
+               Con_DPrintf("%i = S_RawSamples_QueueWantsMore()\n", samples);
 
                // calculate how much source data we need to fill the output...
-               s = samples * cl_videosoundrate / shm->speed;
+               s = samples * cl_videosoundrate / S_RawSamples_SampleRate();
 
                // reallocate processing buffer if needed
                if (cl_videosoundresamplelength < samples)
@@ -90,65 +90,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, r_colorscale, r_colorscale, r_colorscale, 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.numtriangles = 2;
                mesh.numvertices = 4;
-               mesh.indices = indices;
-               mesh.vertices = vertices;
-               mesh.texcoords = texcoords;
-               mesh.colors = colorsb;
+               mesh.element3i = polygonelements;
+               mesh.vertex3f = vertex3f;
+               mesh.texcoord2f = texcoord2f;
+               mesh.color4f = color4f;
                DrawQ_Mesh(&mesh, 0);
                //DrawQ_Pic(0, 0, "engine_videoframe", vid.conwidth, vid.conheight, 1, 1, 1, 1, 0);
        }
@@ -186,13 +152,15 @@ void CL_VideoStart(char *filename)
        cl_videosoundresampledata = NULL;
 
        cl_videotexturepool = R_AllocTexturePool();
-       cl_videotexture = R_LoadTexture(cl_videotexturepool, "videotexture", cl_videoimagewidth, cl_videoimageheight, NULL, TEXTYPE_RGBA, 0);
+       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;
@@ -225,7 +193,7 @@ static void CL_PlayVideo_f(void)
                return;
        }
 
-       sprintf(name, "%s/video/%s.dpv", com_gamedir, Cmd_Argv(1));
+       sprintf(name, "video/%s.dpv", Cmd_Argv(1));
        CL_VideoStart(name);
 }