]> git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - client.h
protocol/dp8: Implement parting messages
[xonotic/darkplaces.git] / client.h
index 5de21ca84b66f3e40c42ebae369859aee42da6e2..3e007c70bde34b181c6f6739917f2a2e4def9d21 100644 (file)
--- a/client.h
+++ b/client.h
@@ -26,171 +26,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #include "snd_main.h"
 #include "view.h"
 #include "cap.h"
-
-// NOTE: r_stat_name[] must match this indexing
-typedef enum r_stat_e
-{
-       r_stat_timedelta,
-       r_stat_quality,
-       r_stat_renders,
-       r_stat_entities,
-       r_stat_entities_surfaces,
-       r_stat_entities_triangles,
-       r_stat_world_leafs,
-       r_stat_world_portals,
-       r_stat_world_surfaces,
-       r_stat_world_triangles,
-       r_stat_lightmapupdates,
-       r_stat_lightmapupdatepixels,
-       r_stat_particles,
-       r_stat_drawndecals,
-       r_stat_totaldecals,
-       r_stat_draws,
-       r_stat_draws_vertices,
-       r_stat_draws_elements,
-       r_stat_lights,
-       r_stat_lights_clears,
-       r_stat_lights_scissored,
-       r_stat_lights_lighttriangles,
-       r_stat_lights_shadowtriangles,
-       r_stat_lights_dynamicshadowtriangles,
-       r_stat_bouncegrid_lights,
-       r_stat_bouncegrid_particles,
-       r_stat_bouncegrid_traces,
-       r_stat_bouncegrid_hits,
-       r_stat_bouncegrid_splats,
-       r_stat_bouncegrid_bounces,
-       r_stat_photoncache_animated,
-       r_stat_photoncache_cached,
-       r_stat_photoncache_traced,
-       r_stat_bloom,
-       r_stat_bloom_copypixels,
-       r_stat_bloom_drawpixels,
-       r_stat_rendertargets_used,
-       r_stat_rendertargets_pixels,
-       r_stat_indexbufferuploadcount,
-       r_stat_indexbufferuploadsize,
-       r_stat_vertexbufferuploadcount,
-       r_stat_vertexbufferuploadsize,
-       r_stat_framedatacurrent,
-       r_stat_framedatasize,
-       r_stat_bufferdatacurrent_vertex, // R_BUFFERDATA_ types are added to this index
-       r_stat_bufferdatacurrent_index16,
-       r_stat_bufferdatacurrent_index32,
-       r_stat_bufferdatacurrent_uniform,
-       r_stat_bufferdatasize_vertex, // R_BUFFERDATA_ types are added to this index
-       r_stat_bufferdatasize_index16,
-       r_stat_bufferdatasize_index32,
-       r_stat_bufferdatasize_uniform,
-       r_stat_animcache_skeletal_count,
-       r_stat_animcache_skeletal_bones,
-       r_stat_animcache_skeletal_maxbones,
-       r_stat_animcache_shade_count,
-       r_stat_animcache_shade_vertices,
-       r_stat_animcache_shade_maxvertices,
-       r_stat_animcache_shape_count,
-       r_stat_animcache_shape_vertices,
-       r_stat_animcache_shape_maxvertices,
-       r_stat_batch_batches,
-       r_stat_batch_withgaps,
-       r_stat_batch_surfaces,
-       r_stat_batch_vertices,
-       r_stat_batch_triangles,
-       r_stat_batch_fast_batches,
-       r_stat_batch_fast_surfaces,
-       r_stat_batch_fast_vertices,
-       r_stat_batch_fast_triangles,
-       r_stat_batch_copytriangles_batches,
-       r_stat_batch_copytriangles_surfaces,
-       r_stat_batch_copytriangles_vertices,
-       r_stat_batch_copytriangles_triangles,
-       r_stat_batch_dynamic_batches,
-       r_stat_batch_dynamic_surfaces,
-       r_stat_batch_dynamic_vertices,
-       r_stat_batch_dynamic_triangles,
-       r_stat_batch_dynamicskeletal_batches,
-       r_stat_batch_dynamicskeletal_surfaces,
-       r_stat_batch_dynamicskeletal_vertices,
-       r_stat_batch_dynamicskeletal_triangles,
-       r_stat_batch_dynamic_batches_because_cvar,
-       r_stat_batch_dynamic_surfaces_because_cvar,
-       r_stat_batch_dynamic_vertices_because_cvar,
-       r_stat_batch_dynamic_triangles_because_cvar,
-       r_stat_batch_dynamic_batches_because_lightmapvertex,
-       r_stat_batch_dynamic_surfaces_because_lightmapvertex,
-       r_stat_batch_dynamic_vertices_because_lightmapvertex,
-       r_stat_batch_dynamic_triangles_because_lightmapvertex,
-       r_stat_batch_dynamic_batches_because_deformvertexes_autosprite,
-       r_stat_batch_dynamic_surfaces_because_deformvertexes_autosprite,
-       r_stat_batch_dynamic_vertices_because_deformvertexes_autosprite,
-       r_stat_batch_dynamic_triangles_because_deformvertexes_autosprite,
-       r_stat_batch_dynamic_batches_because_deformvertexes_autosprite2,
-       r_stat_batch_dynamic_surfaces_because_deformvertexes_autosprite2,
-       r_stat_batch_dynamic_vertices_because_deformvertexes_autosprite2,
-       r_stat_batch_dynamic_triangles_because_deformvertexes_autosprite2,
-       r_stat_batch_dynamic_batches_because_deformvertexes_normal,
-       r_stat_batch_dynamic_surfaces_because_deformvertexes_normal,
-       r_stat_batch_dynamic_vertices_because_deformvertexes_normal,
-       r_stat_batch_dynamic_triangles_because_deformvertexes_normal,
-       r_stat_batch_dynamic_batches_because_deformvertexes_wave,
-       r_stat_batch_dynamic_surfaces_because_deformvertexes_wave,
-       r_stat_batch_dynamic_vertices_because_deformvertexes_wave,
-       r_stat_batch_dynamic_triangles_because_deformvertexes_wave,
-       r_stat_batch_dynamic_batches_because_deformvertexes_bulge,
-       r_stat_batch_dynamic_surfaces_because_deformvertexes_bulge,
-       r_stat_batch_dynamic_vertices_because_deformvertexes_bulge,
-       r_stat_batch_dynamic_triangles_because_deformvertexes_bulge,
-       r_stat_batch_dynamic_batches_because_deformvertexes_move,
-       r_stat_batch_dynamic_surfaces_because_deformvertexes_move,
-       r_stat_batch_dynamic_vertices_because_deformvertexes_move,
-       r_stat_batch_dynamic_triangles_because_deformvertexes_move,
-       r_stat_batch_dynamic_batches_because_tcgen_lightmap,
-       r_stat_batch_dynamic_surfaces_because_tcgen_lightmap,
-       r_stat_batch_dynamic_vertices_because_tcgen_lightmap,
-       r_stat_batch_dynamic_triangles_because_tcgen_lightmap,
-       r_stat_batch_dynamic_batches_because_tcgen_vector,
-       r_stat_batch_dynamic_surfaces_because_tcgen_vector,
-       r_stat_batch_dynamic_vertices_because_tcgen_vector,
-       r_stat_batch_dynamic_triangles_because_tcgen_vector,
-       r_stat_batch_dynamic_batches_because_tcgen_environment,
-       r_stat_batch_dynamic_surfaces_because_tcgen_environment,
-       r_stat_batch_dynamic_vertices_because_tcgen_environment,
-       r_stat_batch_dynamic_triangles_because_tcgen_environment,
-       r_stat_batch_dynamic_batches_because_tcmod_turbulent,
-       r_stat_batch_dynamic_surfaces_because_tcmod_turbulent,
-       r_stat_batch_dynamic_vertices_because_tcmod_turbulent,
-       r_stat_batch_dynamic_triangles_because_tcmod_turbulent,
-       r_stat_batch_dynamic_batches_because_nogaps,
-       r_stat_batch_dynamic_surfaces_because_nogaps,
-       r_stat_batch_dynamic_vertices_because_nogaps,
-       r_stat_batch_dynamic_triangles_because_nogaps,
-       r_stat_batch_dynamic_batches_because_derived,
-       r_stat_batch_dynamic_surfaces_because_derived,
-       r_stat_batch_dynamic_vertices_because_derived,
-       r_stat_batch_dynamic_triangles_because_derived,
-       r_stat_batch_entitycache_count,
-       r_stat_batch_entitycache_surfaces,
-       r_stat_batch_entitycache_vertices,
-       r_stat_batch_entitycache_triangles,
-       r_stat_batch_entityanimate_count,
-       r_stat_batch_entityanimate_surfaces,
-       r_stat_batch_entityanimate_vertices,
-       r_stat_batch_entityanimate_triangles,
-       r_stat_batch_entityskeletal_count,
-       r_stat_batch_entityskeletal_surfaces,
-       r_stat_batch_entityskeletal_vertices,
-       r_stat_batch_entityskeletal_triangles,
-       r_stat_batch_entitystatic_count,
-       r_stat_batch_entitystatic_surfaces,
-       r_stat_batch_entitystatic_vertices,
-       r_stat_batch_entitystatic_triangles,
-       r_stat_batch_entitycustom_count,
-       r_stat_batch_entitycustom_surfaces,
-       r_stat_batch_entitycustom_vertices,
-       r_stat_batch_entitycustom_triangles,
-       r_stat_count // size of array
-}
-r_stat_t;
+#include "cl_parse.h"
+#include "cl_particles.h"
+#include "r_stats.h"
 
 // flags for rtlight rendering
 #define LIGHTFLAG_NORMALMODE 1
@@ -216,7 +54,7 @@ tridecal_t;
 
 typedef struct decalsystem_s
 {
-       dp_model_t *model;
+       model_t *model;
        double lastupdatetime;
        int maxdecals;
        int freedecal;
@@ -236,7 +74,7 @@ typedef struct effect_s
        vec3_t origin;
        double starttime;
        float framerate;
-       dp_model_t *model;
+       model_t *model;
        int startframe;
        int endframe;
        // these are for interpolation
@@ -503,7 +341,7 @@ typedef struct entity_render_s
        float transparent_offset;
 
        // NULL = no model
-       dp_model_t *model;
+       model_t *model;
        // number of the entity represents, or 0 for non-network entities
        int entitynumber;
        // literal colormap colors for renderer, if both are 0 0 0 it is not colormapped
@@ -641,40 +479,6 @@ typedef struct entity_s
 }
 entity_t;
 
-typedef struct usercmd_s
-{
-       vec3_t  viewangles;
-
-// intended velocities
-       float   forwardmove;
-       float   sidemove;
-       float   upmove;
-
-       vec3_t  cursor_screen;
-       vec3_t  cursor_start;
-       vec3_t  cursor_end;
-       vec3_t  cursor_impact;
-       vec3_t  cursor_normal;
-       vec_t   cursor_fraction;
-       int             cursor_entitynumber;
-
-       double time; // time the move is executed for (cl_movement: clienttime, non-cl_movement: receivetime)
-       double receivetime; // time the move was received at
-       double clienttime; // time to which server state the move corresponds to
-       int msec; // for predicted moves
-       int buttons;
-       int impulse;
-       unsigned int sequence;
-       qbool applied; // if false we're still accumulating a move
-       qbool predicted; // if true the sequence should be sent as 0
-
-       // derived properties
-       double frametime;
-       qbool canjump;
-       qbool jump;
-       qbool crouch;
-} usercmd_t;
-
 typedef struct lightstyle_s
 {
        int             length;
@@ -773,7 +577,7 @@ typedef struct client_static_s
        int demonum;
        // list of demos in loop
        char demos[MAX_DEMOS][MAX_DEMONAME];
-       // the actively playing demo (set by CL_PlayDemo_f)
+       // the actively playing demo (set by CL_PlayDemo)
        char demoname[MAX_QPATH];
 
 // demo recording info must be here, because record is started before
@@ -905,82 +709,6 @@ typedef struct
        qbool drawcrosshair;
 }csqc_vidvars_t;
 
-typedef enum
-{
-       PARTICLE_BILLBOARD = 0,
-       PARTICLE_SPARK = 1,
-       PARTICLE_ORIENTED_DOUBLESIDED = 2,
-       PARTICLE_VBEAM = 3,
-       PARTICLE_HBEAM = 4,
-       PARTICLE_INVALID = -1
-}
-porientation_t;
-
-typedef enum
-{
-       PBLEND_ALPHA = 0,
-       PBLEND_ADD = 1,
-       PBLEND_INVMOD = 2,
-       PBLEND_INVALID = -1
-}
-pblend_t;
-
-typedef struct particletype_s
-{
-       pblend_t blendmode;
-       porientation_t orientation;
-       qbool lighting;
-}
-particletype_t;
-
-typedef enum ptype_e
-{
-       pt_dead, pt_alphastatic, pt_static, pt_spark, pt_beam, pt_rain, pt_raindecal, pt_snow, pt_bubble, pt_blood, pt_smoke, pt_decal, pt_entityparticle, pt_total
-}
-ptype_t;
-
-typedef struct particle_s
-{
-       // for faster batch rendering, particles are rendered in groups by effect (resulting in less perfect sorting but far less state changes)
-
-       // fields used by rendering: (48 bytes)
-       vec3_t          sortorigin; // sort by this group origin, not particle org
-       vec3_t          org;
-       vec3_t          vel; // velocity of particle, or orientation of decal, or end point of beam
-       float           size;
-       float           alpha; // 0-255
-       float           stretch; // only for sparks
-
-       // fields not used by rendering:  (44 bytes)
-       float           stainsize;
-       float           stainalpha;
-       float           sizeincrease; // rate of size change per second
-       float           alphafade; // how much alpha reduces per second
-       float           time2; // used for snow fluttering and decal fade
-       float           bounce; // how much bounce-back from a surface the particle hits (0 = no physics, 1 = stop and slide, 2 = keep bouncing forever, 1.5 is typical)
-       float           gravity; // how much gravity affects this particle (1.0 = normal gravity, 0.0 = none)
-       float           airfriction; // how much air friction affects this object (objects with a low mass/size ratio tend to get more air friction)
-       float           liquidfriction; // how much liquid friction affects this object (objects with a low mass/size ratio tend to get more liquid friction)
-//     float           delayedcollisions; // time that p->bounce becomes active
-       float           delayedspawn; // time that particle appears and begins moving
-       float           die; // time when this particle should be removed, regardless of alpha
-
-       // short variables grouped to save memory (4 bytes)
-       short                   angle; // base rotation of particle
-       short                   spin; // geometry rotation speed around the particle center normal
-
-       // byte variables grouped to save memory (12 bytes)
-       unsigned char   color[3];
-       unsigned char   qualityreduction; // enables skipping of this particle according to r_refdef.view.qualityreduction
-       unsigned char   typeindex;
-       unsigned char   blendmode;
-       unsigned char   orientation;
-       unsigned char   texnum;
-       unsigned char   staincolor[3];
-       signed char     staintexnum;
-}
-particle_t;
-
 typedef enum cl_parsingtextmode_e
 {
        CL_PARSETEXTMODE_NONE,
@@ -1142,7 +870,12 @@ typedef struct client_state_s
        // how long it has been since the previous client frame in real time
        // (not game time, for that use cl.time - cl.oldtime)
        double realframetime;
-       
+
+       // used by cl_nettimesyncboundmode 7
+#define NUM_TS_ERRORS 32 // max 256
+       unsigned char ts_error_num;
+       float ts_error_stor[NUM_TS_ERRORS];
+
        // fade var for fading while dead
        float deathfade;
 
@@ -1182,10 +915,10 @@ typedef struct client_state_s
        int gametype;
 
        // models and sounds used by engine code (particularly cl_parse.c)
-       dp_model_t *model_bolt;
-       dp_model_t *model_bolt2;
-       dp_model_t *model_bolt3;
-       dp_model_t *model_beam;
+       model_t *model_bolt;
+       model_t *model_bolt2;
+       model_t *model_bolt3;
+       model_t *model_beam;
        sfx_t *sfx_wizhit;
        sfx_t *sfx_knighthit;
        sfx_t *sfx_tink1;
@@ -1313,8 +1046,8 @@ typedef struct client_state_s
        // use cl.scores[cl.playerentity-1].qw_spectator instead
        //qbool qw_spectator;
 
-       // last time an input packet was sent
-       double lastpackettime;
+       // time accumulated since an input packet was sent
+       float timesincepacket;
 
        // movement parameters for client prediction
        unsigned int moveflags;
@@ -1486,9 +1219,11 @@ double CL_Frame(double time);
 void CL_Shutdown (void);
 void CL_Init (void);
 
+void CL_StartVideo(void);
+
 void CL_EstablishConnection(const char *host, int firstarg);
 
-void CL_Disconnect (void);
+void CL_Disconnect (qbool kicked, const char *reason, ... );
 void CL_Disconnect_f(cmd_state_t *cmd);
 
 void CL_UpdateRenderEntity(entity_render_t *ent);
@@ -1516,7 +1251,7 @@ void CL_ValidateState(entity_state_t *s);
 void CL_MoveLerpEntityStates(entity_t *ent);
 void CL_LerpUpdate(entity_t *e);
 void CL_ParseTEnt (void);
-void CL_NewBeam (int ent, vec3_t start, vec3_t end, dp_model_t *m, int lightning);
+void CL_NewBeam (int ent, vec3_t start, vec3_t end, model_t *m, int lightning);
 void CL_RelinkBeams (void);
 void CL_Beam_CalculatePositions (const beam_t *b, vec3_t start, vec3_t end);
 void CL_ClientMovement_Replay(void);
@@ -1524,7 +1259,7 @@ void CL_ClientMovement_Replay(void);
 void CL_ClearTempEntities (void);
 entity_render_t *CL_NewTempEntity (double shadertime);
 
-void CL_Effect(vec3_t org, dp_model_t *model, int startframe, int framecount, float framerate);
+void CL_Effect(vec3_t org, model_t *model, int startframe, int framecount, float framerate);
 
 void CL_ClearState (void);
 void CL_ExpandEntities(int num);
@@ -1564,6 +1299,7 @@ void CL_WriteDemoMessage(sizebuf_t *mesage);
 void CL_CutDemo(unsigned char **buf, fs_offset_t *filesize);
 void CL_PasteDemo(unsigned char **buf, fs_offset_t *filesize);
 
+void CL_PlayDemo(const char *demo);
 void CL_NextDemo(void);
 void CL_Stop_f(cmd_state_t *cmd);
 void CL_Record_f(cmd_state_t *cmd);
@@ -1572,104 +1308,6 @@ void CL_TimeDemo_f(cmd_state_t *cmd);
 
 void CL_Demo_Init(void);
 
-//
-// cl_parse.c
-//
-void CL_Parse_Init(void);
-void CL_Parse_Shutdown(void);
-void CL_ParseServerMessage(void);
-void CL_Parse_DumpPacket(void);
-void CL_Parse_ErrorCleanUp(void);
-void QW_CL_StartUpload(unsigned char *data, int size);
-extern cvar_t qport;
-void CL_KeepaliveMessage(qbool readmessages); // call this during loading of large content
-
-//
-// cl_part
-//
-
-extern cvar_t cl_particles;
-extern cvar_t cl_particles_quality;
-extern cvar_t cl_particles_size;
-extern cvar_t cl_particles_quake;
-extern cvar_t cl_particles_blood;
-extern cvar_t cl_particles_blood_alpha;
-extern cvar_t cl_particles_blood_decal_alpha;
-extern cvar_t cl_particles_blood_decal_scalemin;
-extern cvar_t cl_particles_blood_decal_scalemax;
-extern cvar_t cl_particles_blood_bloodhack;
-extern cvar_t cl_particles_bulletimpacts;
-extern cvar_t cl_particles_explosions_sparks;
-extern cvar_t cl_particles_explosions_shell;
-extern cvar_t cl_particles_rain;
-extern cvar_t cl_particles_snow;
-extern cvar_t cl_particles_smoke;
-extern cvar_t cl_particles_smoke_alpha;
-extern cvar_t cl_particles_smoke_alphafade;
-extern cvar_t cl_particles_sparks;
-extern cvar_t cl_particles_bubbles;
-extern cvar_t cl_decals;
-extern cvar_t cl_decals_time;
-extern cvar_t cl_decals_fadetime;
-
-void CL_Particles_Clear(void);
-void CL_Particles_Init(void);
-void CL_Particles_Shutdown(void);
-particle_t *CL_NewParticle(const vec3_t sortorigin, unsigned short ptypeindex, int pcolor1, int pcolor2, int ptex, float psize, float psizeincrease, float palpha, float palphafade, float pgravity, float pbounce, float px, float py, float pz, float pvx, float pvy, float pvz, float pairfriction, float pliquidfriction, float originjitter, float velocityjitter, qbool pqualityreduction, float lifetime, float stretch, pblend_t blendmode, porientation_t orientation, int staincolor1, int staincolor2, int staintex, float stainalpha, float stainsize, float angle, float spin, float tint[4]);
-
-typedef enum effectnameindex_s
-{
-       EFFECT_NONE,
-       EFFECT_TE_GUNSHOT,
-       EFFECT_TE_GUNSHOTQUAD,
-       EFFECT_TE_SPIKE,
-       EFFECT_TE_SPIKEQUAD,
-       EFFECT_TE_SUPERSPIKE,
-       EFFECT_TE_SUPERSPIKEQUAD,
-       EFFECT_TE_WIZSPIKE,
-       EFFECT_TE_KNIGHTSPIKE,
-       EFFECT_TE_EXPLOSION,
-       EFFECT_TE_EXPLOSIONQUAD,
-       EFFECT_TE_TAREXPLOSION,
-       EFFECT_TE_TELEPORT,
-       EFFECT_TE_LAVASPLASH,
-       EFFECT_TE_SMALLFLASH,
-       EFFECT_TE_FLAMEJET,
-       EFFECT_EF_FLAME,
-       EFFECT_TE_BLOOD,
-       EFFECT_TE_SPARK,
-       EFFECT_TE_PLASMABURN,
-       EFFECT_TE_TEI_G3,
-       EFFECT_TE_TEI_SMOKE,
-       EFFECT_TE_TEI_BIGEXPLOSION,
-       EFFECT_TE_TEI_PLASMAHIT,
-       EFFECT_EF_STARDUST,
-       EFFECT_TR_ROCKET,
-       EFFECT_TR_GRENADE,
-       EFFECT_TR_BLOOD,
-       EFFECT_TR_WIZSPIKE,
-       EFFECT_TR_SLIGHTBLOOD,
-       EFFECT_TR_KNIGHTSPIKE,
-       EFFECT_TR_VORESPIKE,
-       EFFECT_TR_NEHAHRASMOKE,
-       EFFECT_TR_NEXUIZPLASMA,
-       EFFECT_TR_GLOWTRAIL,
-       EFFECT_SVC_PARTICLE,
-       EFFECT_TOTAL
-}
-effectnameindex_t;
-
-int CL_ParticleEffectIndexForName(const char *name);
-const char *CL_ParticleEffectNameForIndex(int i);
-void CL_ParticleEffect(int effectindex, float pcount, const vec3_t originmins, const vec3_t originmaxs, const vec3_t velocitymins, const vec3_t velocitymaxs, entity_t *ent, int palettecolor);
-void CL_ParticleTrail(int effectindex, float pcount, const vec3_t originmins, const vec3_t originmaxs, const vec3_t velocitymins, const vec3_t velocitymaxs, entity_t *ent, int palettecolor, qbool spawndlight, qbool spawnparticles, float tintmins[4], float tintmaxs[4], float fade);
-void CL_ParticleBox(int effectindex, float pcount, const vec3_t originmins, const vec3_t originmaxs, const vec3_t velocitymins, const vec3_t velocitymaxs, entity_t *ent, int palettecolor, qbool spawndlight, qbool spawnparticles, float tintmins[4], float tintmaxs[4], float fade);
-void CL_ParseParticleEffect (void);
-void CL_ParticleCube (const vec3_t mins, const vec3_t maxs, const vec3_t dir, int count, int colorbase, vec_t gravity, vec_t randomvel);
-void CL_ParticleRain (const vec3_t mins, const vec3_t maxs, const vec3_t dir, int count, int colorbase, int type);
-void CL_EntityParticles (const entity_t *ent);
-void CL_ParticleExplosion (const vec3_t org);
-void CL_ParticleExplosion2 (const vec3_t org, int colorStart, int colorLength);
 
 #include "cl_screen.h"
 
@@ -1721,7 +1359,7 @@ typedef enum meshname_e {
        NUM_MESHENTITIES,
 } meshname_t;
 extern entity_t cl_meshentities[NUM_MESHENTITIES];
-extern dp_model_t cl_meshentitymodels[NUM_MESHENTITIES];
+extern model_t cl_meshentitymodels[NUM_MESHENTITIES];
 extern const char *cl_meshentitynames[NUM_MESHENTITIES];
 #define CL_Mesh_Scene() (&cl_meshentitymodels[MESH_SCENE])
 #define CL_Mesh_UI() (&cl_meshentitymodels[MESH_UI])
@@ -1736,7 +1374,6 @@ void CL_FindNonSolidLocation(const vec3_t in, vec3_t out, vec_t radius);
 void CL_RelinkLightFlashes(void);
 void CL_Beam_AddPolygons(const beam_t *b);
 void CL_UpdateMoveVars(void);
-void SCR_CaptureVideo_SoundFrame(const portable_sampleframe_t *paintbuffer, size_t length);
 void CL_Locs_Reload_f(cmd_state_t *cmd);
 
 #endif