DarkPlaces
Game engine based on the Quake 1 engine by id Software, developed by LadyHavoc
 
cl_video.h File Reference
#include "qtypes.h"
#include "qdefs.h"
+ Include dependency graph for cl_video.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  clvideo_t
 

Macros

#define CLTHRESHOLD   2.0
 
#define CLVIDEO_MAX_SUBTITLES   512
 
#define CLVIDEOPREFIX   "video/"
 
#define MENUOWNER   1
 

Enumerations

enum  clvideostate_t {
  CLVIDEO_UNUSED , CLVIDEO_PLAY , CLVIDEO_LOOP , CLVIDEO_PAUSE ,
  CLVIDEO_FIRSTFRAME , CLVIDEO_RESETONWAKEUP , CLVIDEO_STATECOUNT
}
 

Functions

void CL_CloseVideo (clvideo_t *video)
 
void CL_DrawVideo (void)
 
clvideo_tCL_GetVideoByName (const char *name)
 
clvideo_tCL_OpenVideo (const char *filename, const char *name, int owner, const char *subtitlesfile)
 
void CL_PurgeOwner (int owner)
 
void CL_RestartVideo (clvideo_t *video)
 
void CL_SetVideoState (clvideo_t *video, clvideostate_t state)
 
void CL_Video_Frame (void)
 
void CL_Video_Init (void)
 
void CL_Video_KeyEvent (int key, int ascii, qbool down)
 
void CL_Video_Shutdown (void)
 
void CL_VideoStart (char *filename, const char *subtitlesfile)
 
void CL_VideoStop (void)
 

Variables

struct cvar_s cl_video_brightness
 
struct cvar_s cl_video_keepaspectratio
 
struct cvar_s cl_video_scale
 
struct cvar_s cl_video_scale_vpos
 
struct cvar_s cl_video_stipple
 
struct cvar_s cl_video_subtitles
 
struct cvar_s cl_video_subtitles_lines
 
struct cvar_s cl_video_subtitles_textsize
 
int cl_videoplaying
 

Macro Definition Documentation

◆ CLTHRESHOLD

#define CLTHRESHOLD   2.0

Definition at line 9 of file cl_video.h.

Referenced by CL_Video_Frame().

◆ CLVIDEO_MAX_SUBTITLES

#define CLVIDEO_MAX_SUBTITLES   512

Definition at line 24 of file cl_video.h.

Referenced by LoadSubtitles().

◆ CLVIDEOPREFIX

#define CLVIDEOPREFIX   "video/"

Definition at line 8 of file cl_video.h.

Referenced by CL_OpenVideo(), and OpenVideo().

◆ MENUOWNER

#define MENUOWNER   1

Definition at line 11 of file cl_video.h.

Referenced by VM_cin_open(), and VM_Cmd_Reset().

Enumeration Type Documentation

◆ clvideostate_t

Enumerator
CLVIDEO_UNUSED 
CLVIDEO_PLAY 
CLVIDEO_LOOP 
CLVIDEO_PAUSE 
CLVIDEO_FIRSTFRAME 
CLVIDEO_RESETONWAKEUP 
CLVIDEO_STATECOUNT 

Definition at line 13 of file cl_video.h.

14{
clvideostate_t
Definition cl_video.h:14
@ CLVIDEO_STATECOUNT
Definition cl_video.h:21
@ CLVIDEO_UNUSED
Definition cl_video.h:15
@ CLVIDEO_LOOP
Definition cl_video.h:17
@ CLVIDEO_PAUSE
Definition cl_video.h:18
@ CLVIDEO_RESETONWAKEUP
Definition cl_video.h:20
@ CLVIDEO_FIRSTFRAME
Definition cl_video.h:19
@ CLVIDEO_PLAY
Definition cl_video.h:16

Function Documentation

◆ CL_CloseVideo()

void CL_CloseVideo ( clvideo_t * video)

Definition at line 327 of file cl_video.c.

328{
329 int i;
330
331 if (!video || video->state == CLVIDEO_UNUSED)
332 return;
333
334 // close stream
335 if (!video->suspended || video->state != CLVIDEO_FIRSTFRAME)
336 {
337 if (video->stream)
338 video->close(video->stream);
339 video->stream = NULL;
340 }
341 // unlink texture
342 if (!video->suspended)
343 UnlinkVideoTexture(video);
344 // purge subtitles
345 if (video->subtitles)
346 {
347 for (i = 0; i < video->subtitles; i++)
348 Z_Free( video->subtitle_text[i] );
349 video->subtitles = 0;
350 }
351 video->state = CLVIDEO_UNUSED;
352}
static void UnlinkVideoTexture(clvideo_t *video)
Definition cl_video.c:84
int i
#define NULL
Definition qtypes.h:12
void * stream
Definition cl_video.h:41
qbool suspended
Definition cl_video.h:73
clvideostate_t state
Definition cl_video.h:38
void(* close)(void *stream)
Definition cl_video.h:62
int subtitles
Definition cl_video.h:56
char * subtitle_text[CLVIDEO_MAX_SUBTITLES]
Definition cl_video.h:57
#define Z_Free(data)
Definition zone.h:164

References clvideo_t::close, CLVIDEO_FIRSTFRAME, CLVIDEO_UNUSED, i, NULL, clvideo_t::state, clvideo_t::stream, clvideo_t::subtitle_text, clvideo_t::subtitles, clvideo_t::suspended, UnlinkVideoTexture(), and Z_Free.

Referenced by CL_PurgeOwner(), CL_Video_Shutdown(), CL_VideoStart(), CL_VideoStop(), and VM_cin_close().

◆ CL_DrawVideo()

void CL_DrawVideo ( void )

Definition at line 460 of file cl_video.c.

461{
462 clvideo_t *video;
463 float videotime, px, py, sx, sy, st[8], b;
465 int i;
466
467 if (!cl_videoplaying)
468 return;
469
470 video = CL_GetVideoBySlot( 0 );
471
472 // fix cvars
477
478 // calc video proportions
479 px = 0;
480 py = 0;
483 st[0] = 0.0; st[1] = 0.0;
484 st[2] = 1.0; st[3] = 0.0;
485 st[4] = 0.0; st[5] = 1.0;
486 st[6] = 1.0; st[7] = 1.0;
488 {
489 float a = video->getaspectratio(video->stream) / ((float)vid.mode.width / (float)vid.mode.height);
491 {
492 // clip instead of scale
493 if (a < 1.0) // clip horizontally
494 {
495 st[1] = st[3] = (1 - a)*0.5;
496 st[5] = st[7] = 1 - (1 - a)*0.5;
497 }
498 else if (a > 1.0) // clip vertically
499 {
500 st[0] = st[4] = (1 - 1/a)*0.5;
501 st[2] = st[6] = (1/a)*0.5;
502 }
503 }
504 else if (a < 1.0) // scale horizontally
505 {
506 px += sx * (1 - a) * 0.5;
507 sx *= a;
508 }
509 else if (a > 1.0) // scale vertically
510 {
511 a = 1 / a;
512 py += sy * (1 - a);
513 sy *= a;
514 }
515 }
516
517 if (cl_video_scale.value != 1)
518 {
519 px += sx * (1 - cl_video_scale.value) * 0.5;
520 py += sy * (1 - cl_video_scale.value) * ((bound(-1, cl_video_scale_vpos.value, 1) + 1) / 2);
521 sx *= cl_video_scale.value;
522 sy *= cl_video_scale.value;
523 }
524
525 // calc brightness for fadein and fadeout effects
529 else if (cl_video_fadeout.value && ((video->starttime + video->framenum * video->framerate) - host.realtime) < cl_video_fadeout.value)
530 b = pow(((video->starttime + video->framenum * video->framerate) - host.realtime)/cl_video_fadeout.value, 2);
531
532 // draw black bg in case stipple is active or video is scaled
533 if (cl_video_stipple.integer || px != 0 || py != 0 || sx != vid_conwidth.integer || sy != vid_conheight.integer)
534 DrawQ_Fill(0, 0, vid_conwidth.integer, vid_conheight.integer, 0, 0, 0, 1, 0);
535
536 // enable video-only polygon stipple (of global stipple is not active)
538 {
539 Con_Print("FIXME: cl_video_stipple not implemented\n");
541 }
542
543 // draw video
544 if (v_glslgamma_video.value >= 1)
545 DrawQ_SuperPic(px, py, video->cachepic, sx, sy, st[0], st[1], b, b, b, 1, st[2], st[3], b, b, b, 1, st[4], st[5], b, b, b, 1, st[6], st[7], b, b, b, 1, 0);
546 else
547 {
548 DrawQ_SuperPic(px, py, video->cachepic, sx, sy, st[0], st[1], b, b, b, 1, st[2], st[3], b, b, b, 1, st[4], st[5], b, b, b, 1, st[6], st[7], b, b, b, 1, DRAWFLAG_NOGAMMA);
549 if (v_glslgamma_video.value > 0.0)
550 DrawQ_SuperPic(px, py, video->cachepic, sx, sy, st[0], st[1], b, b, b, v_glslgamma_video.value, st[2], st[3], b, b, b, v_glslgamma_video.value, st[4], st[5], b, b, b, v_glslgamma_video.value, st[6], st[7], b, b, b, v_glslgamma_video.value, 0);
551 }
552
553 // VorteX: draw subtitle_text
554 if (!video->subtitles || !cl_video_subtitles.integer)
555 return;
556
557 // find current subtitle
558 videotime = host.realtime - video->starttime;
559 for (i = 0; i < video->subtitles; i++)
560 {
561 if (videotime >= video->subtitle_start[i] && videotime <= video->subtitle_end[i])
562 {
563 // found, draw it
564 si.font = FONT_NOTIFY;
565 si.x = vid_conwidth.integer * 0.1;
567 si.width = vid_conwidth.integer * 0.8;
569 si.alignment = 0.5;
571 si.textalpha = min(1, (videotime - video->subtitle_start[i])/0.5) * min(1, ((video->subtitle_end[i] - videotime)/0.3)); // fade in and fade out
573 break;
574 }
575 }
576}
cvar_t scr_stipple
Definition cl_screen.c:88
cvar_t vid_conheight
Definition cl_screen.c:57
cvar_t vid_conwidth
Definition cl_screen.c:56
cvar_t cl_video_scale
Definition cl_video.c:9
cvar_t v_glslgamma_video
Definition cl_video.c:17
cvar_t cl_video_scale_vpos
Definition cl_video.c:10
cvar_t cl_video_subtitles_textsize
Definition cl_video.c:8
static float CL_DrawVideo_WordWidthFunc(void *passthrough, const char *w, size_t *length, float maxWidth)
Definition cl_video.c:433
cvar_t cl_video_brightness
Definition cl_video.c:12
static clvideo_t * CL_GetVideoBySlot(int slot)
Definition cl_video.c:267
cvar_t cl_video_subtitles_lines
Definition cl_video.c:7
cvar_t cl_video_subtitles
Definition cl_video.c:6
int cl_videoplaying
Definition cl_video.c:458
static int CL_DrawVideo_DisplaySubtitleLine(void *passthrough, const char *line, size_t length, float width, qbool isContinuation)
Definition cl_video.c:447
cvar_t cl_video_keepaspectratio
Definition cl_video.c:13
cvar_t cl_video_fadein
Definition cl_video.c:14
cvar_t cl_video_fadeout
Definition cl_video.c:15
cvar_t cl_video_stipple
Definition cl_video.c:11
int COM_Wordwrap(const char *string, size_t length, float continuationWidth, float maxWidth, COM_WordWidthFunc_t wordWidth, void *passthroughCW, COM_LineProcessorFunc processLine, void *passthroughPL)
Definition common.c:174
void Con_Print(const char *msg)
Prints to all appropriate console targets, and adds timestamps.
Definition console.c:1504
void Cvar_SetValueQuick(cvar_t *var, float value)
Definition cvar.c:473
void DrawQ_Fill(float x, float y, float width, float height, float red, float green, float blue, float alpha, int flags)
Definition gl_draw.c:847
void DrawQ_SuperPic(float x, float y, cachepic_t *pic, float width, float height, float s1, float t1, float r1, float g1, float b1, float a1, float s2, float t2, float r2, float g2, float b2, float a2, float s3, float t3, float r3, float g3, float b3, float a3, float s4, float t4, float r4, float g4, float b4, float a4, int flags)
Definition gl_draw.c:1380
#define FONT_NOTIFY
Definition draw.h:131
@ DRAWFLAG_NOGAMMA
Definition draw.h:82
host_static_t host
Definition host.c:41
#define max(A, B)
Definition mathlib.h:38
#define min(A, B)
Definition mathlib.h:37
#define bound(min, num, max)
Definition mathlib.h:34
float pow(float a, float b)
float strlen(string s)
precision highp float
Definition shader_glsl.h:53
dp_FragColor b
ret a
vec2 px
float subtitle_start[CLVIDEO_MAX_SUBTITLES]
Definition cl_video.h:58
double starttime
Definition cl_video.h:43
struct cachepic_s * cachepic
Definition cl_video.h:50
float subtitle_end[CLVIDEO_MAX_SUBTITLES]
Definition cl_video.h:59
int framenum
Definition cl_video.h:44
double(* getaspectratio)(void *stream)
Definition cl_video.h:66
double framerate
Definition cl_video.h:45
float value
Definition cvar.h:74
int integer
Definition cvar.h:73
double realtime
the accumulated mainloop time since application started (with filtering), without any slowmo or clamp...
Definition host.h:46
int width
Definition vid.h:60
int height
Definition vid.h:61
viddef_mode_t mode
currently active video mode
Definition vid.h:73
viddef_t vid
global video state
Definition vid_shared.c:64

References a, cl_video_subtitle_info_t::alignment, b, bound, clvideo_t::cachepic, CL_DrawVideo_DisplaySubtitleLine(), CL_DrawVideo_WordWidthFunc(), CL_GetVideoBySlot(), cl_video_brightness, cl_video_fadein, cl_video_fadeout, cl_video_keepaspectratio, cl_video_scale, cl_video_scale_vpos, cl_video_stipple, cl_video_subtitles, cl_video_subtitles_lines, cl_video_subtitles_textsize, cl_videoplaying, COM_Wordwrap(), Con_Print(), Cvar_SetValueQuick(), DRAWFLAG_NOGAMMA, DrawQ_Fill(), DrawQ_SuperPic(), float, cl_video_subtitle_info_t::font, FONT_NOTIFY, cl_video_subtitle_info_t::fontsize, clvideo_t::framenum, clvideo_t::framerate, clvideo_t::getaspectratio, cl_video_subtitle_info_t::height, viddef_mode_t::height, host, i, cvar_t::integer, max, min, viddef_t::mode, pow(), px, host_static_t::realtime, scr_stipple, clvideo_t::starttime, clvideo_t::stream, strlen(), clvideo_t::subtitle_end, clvideo_t::subtitle_start, clvideo_t::subtitle_text, clvideo_t::subtitles, cl_video_subtitle_info_t::textalpha, v_glslgamma_video, cvar_t::value, vid, vid_conheight, vid_conwidth, cl_video_subtitle_info_t::width, viddef_mode_t::width, cl_video_subtitle_info_t::x, and cl_video_subtitle_info_t::y.

Referenced by SCR_DrawScreen().

◆ CL_GetVideoByName()

clvideo_t * CL_GetVideoByName ( const char * name)

Definition at line 284 of file cl_video.c.

285{
286 int i;
287
288 for( i = 0 ; i < cl_num_videos ; i++ )
289 if( cl_videos[ i ].state != CLVIDEO_UNUSED
290 && !strcmp( cl_videos[ i ].name , name ) )
291 break;
292 if( i != cl_num_videos )
293 return CL_GetVideoBySlot( i );
294 else
295 return NULL;
296}
static int cl_num_videos
Definition cl_video.c:36
static clvideo_t cl_videos[MAXCLVIDEOS]
Definition cl_video.c:37
const GLchar * name
Definition glquake.h:601

References CL_GetVideoBySlot(), cl_num_videos, cl_videos, CLVIDEO_UNUSED, i, name, and NULL.

Referenced by VM_cin_close(), VM_cin_getstate(), VM_cin_restart(), and VM_cin_setstate().

◆ CL_OpenVideo()

clvideo_t * CL_OpenVideo ( const char * filename,
const char * name,
int owner,
const char * subtitlesfile )

Definition at line 245 of file cl_video.c.

246{
247 clvideo_t *video;
248 // sanity check
249 if( !name || !*name || strncmp( name, CLVIDEOPREFIX, sizeof( CLVIDEOPREFIX ) - 1 ) != 0 ) {
250 Con_DPrintf( "CL_OpenVideo: Bad video texture name '%s'!\n", name );
251 return NULL;
252 }
253
254 video = FindUnusedVid();
255 if( !video ) {
256 Con_Printf(CON_ERROR "CL_OpenVideo: unable to open video \"%s\" - video limit reached\n", filename );
257 return NULL;
258 }
259 video = OpenVideo( video, filename, name, owner, subtitlesfile );
260 // expand the active range to include the new entry
261 if (video) {
262 cl_num_videos = max(cl_num_videos, (int)(video - cl_videos) + 1);
263 }
264 return video;
265}
static clvideo_t * FindUnusedVid(void)
Definition cl_video.c:40
static clvideo_t * OpenVideo(clvideo_t *video, const char *filename, const char *name, int owner, const char *subtitlesfile)
Definition cl_video.c:215
#define CLVIDEOPREFIX
Definition cl_video.h:8
void Con_DPrintf(const char *fmt,...)
A Con_Printf that only shows up if the "developer" cvar is set.
Definition console.c:1544
void Con_Printf(const char *fmt,...)
Prints to all appropriate console targets.
Definition console.c:1514
#define CON_ERROR
Definition console.h:102
entity owner

References cl_num_videos, cl_videos, CLVIDEOPREFIX, Con_DPrintf(), CON_ERROR, Con_Printf(), FindUnusedVid(), max, name, NULL, OpenVideo(), and owner.

Referenced by VM_cin_open().

◆ CL_PurgeOwner()

void CL_PurgeOwner ( int owner)

Definition at line 411 of file cl_video.c.

412{
413 int i;
414
415 for (i = 0 ; i < cl_num_videos ; i++)
416 if (cl_videos[i].ownertag == owner)
418}
void CL_CloseVideo(clvideo_t *video)
Definition cl_video.c:327

References CL_CloseVideo(), cl_num_videos, cl_videos, i, and owner.

Referenced by VM_Cmd_Reset().

◆ CL_RestartVideo()

void CL_RestartVideo ( clvideo_t * video)

Definition at line 309 of file cl_video.c.

310{
311 if (!video)
312 return;
313
314 // reset time
315 video->starttime = video->lasttime = host.realtime;
316 video->framenum = -1;
317
318 // reopen stream
319 if (video->stream)
320 video->close(video->stream);
321 video->stream = NULL;
322 if (!OpenStream(video))
323 video->state = CLVIDEO_UNUSED;
324}
static qbool OpenStream(clvideo_t *video)
Definition cl_video.c:49
double lasttime
Definition cl_video.h:71

References clvideo_t::close, CLVIDEO_UNUSED, clvideo_t::framenum, host, clvideo_t::lasttime, NULL, OpenStream(), host_static_t::realtime, clvideo_t::starttime, clvideo_t::state, and clvideo_t::stream.

Referenced by CL_SetVideoState(), CL_Video_Frame(), CL_VideoStart(), and VM_cin_restart().

◆ CL_SetVideoState()

void CL_SetVideoState ( clvideo_t * video,
clvideostate_t state )

Definition at line 298 of file cl_video.c.

299{
300 if (!video)
301 return;
302
303 video->lasttime = host.realtime;
304 video->state = state;
305 if (state == CLVIDEO_FIRSTFRAME)
306 CL_RestartVideo(video);
307}
void CL_RestartVideo(clvideo_t *video)
Definition cl_video.c:309

References CL_RestartVideo(), CLVIDEO_FIRSTFRAME, host, clvideo_t::lasttime, host_static_t::realtime, and clvideo_t::state.

Referenced by CL_VideoStart(), and VM_cin_setstate().

◆ CL_Video_Frame()

void CL_Video_Frame ( void )

Definition at line 355 of file cl_video.c.

356{
357 clvideo_t *video;
358 int destframe;
359 int i;
360
361 if (!cl_num_videos)
362 return;
363 for (video = cl_videos, i = 0 ; i < cl_num_videos ; video++, i++)
364 {
365 if (video->state != CLVIDEO_UNUSED && !video->suspended)
366 {
367 if (host.realtime - video->lasttime > CLTHRESHOLD)
368 {
369 SuspendVideo(video);
370 continue;
371 }
372 if (video->state == CLVIDEO_PAUSE)
373 {
374 video->starttime = host.realtime - video->framenum * video->framerate;
375 continue;
376 }
377 // read video frame from stream if time has come
378 if (video->state == CLVIDEO_FIRSTFRAME )
379 destframe = 0;
380 else
381 destframe = (int)((host.realtime - video->starttime) * video->framerate);
382 if (destframe < 0)
383 destframe = 0;
384 if (video->framenum < destframe)
385 {
386 do {
387 video->framenum++;
389 {
390 // finished?
391 CL_RestartVideo(video);
392 if (video->state == CLVIDEO_PLAY)
393 video->state = CLVIDEO_FIRSTFRAME;
394 return;
395 }
396 } while(video->framenum < destframe);
398 }
399 }
400 }
401
402 // stop main video
404 CL_VideoStop();
405
406 // reduce range to exclude unnecessary entries
407 while(cl_num_videos > 0 && cl_videos[cl_num_videos-1].state == CLVIDEO_UNUSED)
409}
static int cl_videormask
Definition cl_video.c:31
static int cl_videobytesperpixel
Definition cl_video.c:34
static int cl_videobmask
Definition cl_video.c:32
void CL_VideoStop(void)
Definition cl_video.c:606
static void SuspendVideo(clvideo_t *video)
Definition cl_video.c:92
static int cl_videogmask
Definition cl_video.c:33
#define CLTHRESHOLD
Definition cl_video.h:9
rtexture_t * Draw_GetPicTexture(cachepic_t *pic)
Definition gl_draw.c:224
static int(ZEXPORT *qz_inflate)(z_stream *strm
void R_MarkDirtyTexture(rtexture_t *rt)
int(* decodeframe)(void *stream, void *imagedata, unsigned int Rmask, unsigned int Gmask, unsigned int Bmask, unsigned int bytesperpixel, int imagebytesperrow)
Definition cl_video.h:67
int width
Definition cl_video.h:52
void * imagedata
Definition cl_video.h:47

References clvideo_t::cachepic, cl_num_videos, CL_RestartVideo(), cl_videobmask, cl_videobytesperpixel, cl_videogmask, cl_videormask, cl_videos, CL_VideoStop(), CLTHRESHOLD, CLVIDEO_FIRSTFRAME, CLVIDEO_PAUSE, CLVIDEO_PLAY, CLVIDEO_UNUSED, clvideo_t::decodeframe, Draw_GetPicTexture(), clvideo_t::framenum, clvideo_t::framerate, host, i, clvideo_t::imagedata, int(), clvideo_t::lasttime, R_MarkDirtyTexture(), host_static_t::realtime, clvideo_t::starttime, clvideo_t::state, clvideo_t::stream, clvideo_t::suspended, SuspendVideo(), and clvideo_t::width.

Referenced by CL_Frame().

◆ CL_Video_Init()

void CL_Video_Init ( void )

Definition at line 675 of file cl_video.c.

676{
677 union
678 {
679 unsigned char b[4];
680 unsigned int i;
681 }
682 bgra;
683
684 cl_num_videos = 0;
686
687 // set masks in an endian-independent way (as they really represent bytes)
688 bgra.i = 0;bgra.b[0] = 0xFF;cl_videobmask = bgra.i;
689 bgra.i = 0;bgra.b[1] = 0xFF;cl_videogmask = bgra.i;
690 bgra.i = 0;bgra.b[2] = 0xFF;cl_videormask = bgra.i;
691
692 Cmd_AddCommand(CF_CLIENT, "playvideo", CL_PlayVideo_f, "play a .dpv video file" );
693 Cmd_AddCommand(CF_CLIENT, "stopvideo", CL_StopVideo_f, "stop playing a .dpv video file" );
694
705
707
709
711}
static void cl_video_start(void)
Definition cl_video.c:648
static void cl_video_shutdown(void)
Definition cl_video.c:660
static void cl_video_newmap(void)
Definition cl_video.c:671
static void CL_StopVideo_f(cmd_state_t *cmd)
Definition cl_video.c:643
static void CL_PlayVideo_f(cmd_state_t *cmd)
Definition cl_video.c:613
qbool LibAvW_OpenLibrary(void)
void Cmd_AddCommand(unsigned flags, const char *cmd_name, xcommand_t function, const char *description)
called by the init functions of other parts of the program to register commands and functions to call...
Definition cmd.c:1661
#define CF_CLIENT
cvar/command that only the client can change/execute
Definition cmd.h:48
void Cvar_RegisterVariable(cvar_t *variable)
registers a cvar that already has the name, string, and optionally the archive elements set.
Definition cvar.c:599
void R_RegisterModule(const char *name, void(*start)(void), void(*shutdown)(void), void(*newmap)(void), void(*devicelost)(void), void(*devicerestored)(void))
Definition r_modules.c:25

References b, CF_CLIENT, cl_num_videos, CL_PlayVideo_f(), CL_StopVideo_f(), cl_video_brightness, cl_video_fadein, cl_video_fadeout, cl_video_keepaspectratio, cl_video_newmap(), cl_video_scale, cl_video_scale_vpos, cl_video_shutdown(), cl_video_start(), cl_video_stipple, cl_video_subtitles, cl_video_subtitles_lines, cl_video_subtitles_textsize, cl_videobmask, cl_videobytesperpixel, cl_videogmask, cl_videormask, Cmd_AddCommand(), Cvar_RegisterVariable(), i, LibAvW_OpenLibrary(), NULL, R_RegisterModule(), and v_glslgamma_video.

Referenced by CL_Init().

◆ CL_Video_KeyEvent()

void CL_Video_KeyEvent ( int key,
int ascii,
qbool down )

Definition at line 596 of file cl_video.c.

597{
598 // only react to up events, to allow the user to delay the abortion point if it suddenly becomes interesting..
599 if( !down ) {
600 if( key == K_ESCAPE || key == K_ENTER || key == K_SPACE ) {
601 CL_VideoStop();
602 }
603 }
604}
float K_SPACE
Definition keycodes.qc:10
float K_ENTER
Definition keycodes.qc:8
float K_ESCAPE
Definition keycodes.qc:9

References CL_VideoStop(), K_ENTER, K_ESCAPE, and K_SPACE.

Referenced by Key_Event().

◆ CL_Video_Shutdown()

void CL_Video_Shutdown ( void )

Definition at line 713 of file cl_video.c.

714{
715 int i;
716
717 for (i = 0 ; i < cl_num_videos ; i++)
719
721}
void LibAvW_CloseLibrary(void)

References CL_CloseVideo(), cl_num_videos, cl_videos, i, and LibAvW_CloseLibrary().

Referenced by CL_Shutdown().

◆ CL_VideoStart()

void CL_VideoStart ( char * filename,
const char * subtitlesfile )

Definition at line 578 of file cl_video.c.

579{
581
584 // already contains video/
585 if( !OpenVideo( cl_videos, filename, filename, 0, subtitlesfile ) )
586 return;
587 // expand the active range to include the new entry
589
590 cl_videoplaying = true;
591
594}
void CL_StartVideo(void)
Definition cl_main.c:2786
void CL_SetVideoState(clvideo_t *video, clvideostate_t state)
Definition cl_video.c:298

References CL_CloseVideo(), cl_num_videos, CL_RestartVideo(), CL_SetVideoState(), CL_StartVideo(), cl_videoplaying, cl_videos, CLVIDEO_PLAY, CLVIDEO_UNUSED, max, OpenVideo(), and clvideo_t::state.

Referenced by CL_PlayVideo_f().

◆ CL_VideoStop()

void CL_VideoStop ( void )

Definition at line 606 of file cl_video.c.

607{
608 cl_videoplaying = false;
609
611}

References CL_CloseVideo(), cl_videoplaying, and cl_videos.

Referenced by CL_ParseServerInfo(), CL_StopVideo_f(), CL_Video_Frame(), and CL_Video_KeyEvent().

Variable Documentation

◆ cl_video_brightness

struct cvar_s cl_video_brightness
extern

Definition at line 12 of file cl_video.c.

12{CF_CLIENT | CF_ARCHIVE, "cl_video_brightness", "1", "brightness of video, 1 = fullbright, 0.75 - 3/4 etc."};
#define CF_ARCHIVE
cvar should have its set value saved to config.cfg and persist across sessions
Definition cmd.h:53

Referenced by CL_DrawVideo(), and CL_Video_Init().

◆ cl_video_keepaspectratio

struct cvar_s cl_video_keepaspectratio
extern

Definition at line 13 of file cl_video.c.

13{CF_CLIENT | CF_ARCHIVE, "cl_video_keepaspectratio", "0", "keeps aspect ratio of fullscreen videos, leaving black color on unfilled areas, a value of 2 let video to be stretched horizontally with top & bottom being sliced out"};

Referenced by CL_DrawVideo(), and CL_Video_Init().

◆ cl_video_scale

struct cvar_s cl_video_scale
extern

Definition at line 9 of file cl_video.c.

9{CF_CLIENT | CF_ARCHIVE, "cl_video_scale", "1", "scale of video, 1 = fullscreen, 0.75 - 3/4 of screen etc."};

Referenced by CL_DrawVideo(), and CL_Video_Init().

◆ cl_video_scale_vpos

struct cvar_s cl_video_scale_vpos
extern

Definition at line 10 of file cl_video.c.

10{CF_CLIENT | CF_ARCHIVE, "cl_video_scale_vpos", "0", "vertical align of scaled video, -1 is top, 1 is bottom"};

Referenced by CL_DrawVideo(), and CL_Video_Init().

◆ cl_video_stipple

struct cvar_s cl_video_stipple
extern

Definition at line 11 of file cl_video.c.

11{CF_CLIENT | CF_ARCHIVE, "cl_video_stipple", "0", "draw interlacing-like effect on videos, similar to scr_stipple but static and used only with video playing."};

Referenced by CL_DrawVideo(), and CL_Video_Init().

◆ cl_video_subtitles

struct cvar_s cl_video_subtitles
extern

Definition at line 6 of file cl_video.c.

6{CF_CLIENT | CF_ARCHIVE, "cl_video_subtitles", "0", "show subtitles for videos (if they are present)"};

Referenced by CL_DrawVideo(), and CL_Video_Init().

◆ cl_video_subtitles_lines

struct cvar_s cl_video_subtitles_lines
extern

Definition at line 7 of file cl_video.c.

7{CF_CLIENT | CF_ARCHIVE, "cl_video_subtitles_lines", "4", "how many lines to occupy for subtitles"};

Referenced by CL_DrawVideo(), and CL_Video_Init().

◆ cl_video_subtitles_textsize

struct cvar_s cl_video_subtitles_textsize
extern

Definition at line 8 of file cl_video.c.

8{CF_CLIENT | CF_ARCHIVE, "cl_video_subtitles_textsize", "16", "textsize for subtitles"};

Referenced by CL_DrawVideo(), and CL_Video_Init().

◆ cl_videoplaying

int cl_videoplaying
extern