Remove CDA support from code.

This commit is contained in:
Yamagi Burmeister 2018-07-16 14:17:52 +02:00
parent 759bc1be18
commit 15898a2330
11 changed files with 11 additions and 643 deletions

View File

@ -1,532 +0,0 @@
/*
* Copyright (C) 2001 Robert Bäuml
* Copyright (C) 2002 W. P. va Paassen
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or (at
* your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
* See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
* 02111-1307, USA.
*
* =======================================================================
*
* Audio-CD backend in SDL
*
* =======================================================================
*/
#ifdef CDA
#include <stdio.h>
#ifdef _WIN32
#include "SDL/SDL.h"
#elif defined(__APPLE__)
#include <SDL/SDL.h>
#else
#include "SDL.h"
#endif
#include "../../client/header/client.h"
static qboolean cdValid = false;
static qboolean initialized = false;
static qboolean enabled = true;
static qboolean playLooping = false;
static SDL_CD *cd_id;
static float cdvolume = 1.0;
static int lastTrack = 0;
cvar_t *cd_volume;
cvar_t *cd_nocd;
cvar_t *cd_dev;
static void CD_f();
static void
CDAudio_Eject()
{
if (!cd_id || !enabled)
{
return;
}
if (SDL_CDEject(cd_id))
{
Com_DPrintf("Unable to eject CD-ROM tray.\n");
}
}
void
CDAudio_Play(int track, qboolean looping)
{
CDstatus cd_stat;
lastTrack = track + 1;
if (!cd_id || !enabled)
{
return;
}
cd_stat = SDL_CDStatus(cd_id);
if (!cdValid)
{
if (!CD_INDRIVE(cd_stat) || (!cd_id->numtracks))
{
return;
}
cdValid = true;
}
if ((track < 1) || (track >= cd_id->numtracks))
{
Com_DPrintf("CDAudio: Bad track number: %d\n", track);
return;
}
track--;
if (cd_stat == CD_PLAYING)
{
if (cd_id->cur_track == track)
{
return;
}
CDAudio_Stop();
}
if (SDL_CDPlay(cd_id, cd_id->track[track].offset,
cd_id->track[track].length))
{
Com_DPrintf("CDAudio_Play: Unable to play track: %d (%s)\n",
track + 1, SDL_GetError());
return;
}
playLooping = looping;
}
void
CDAudio_RandomPlay(void)
{
int track, i = 0, free_tracks = 0;
float f;
CDstatus cd_stat;
byte *track_bools;
if (!cd_id || !enabled)
{
return;
}
track_bools = (byte *)malloc(cd_id->numtracks * sizeof(byte));
if (track_bools == 0)
{
return;
}
/* create an array of available audio tracknumbers */
for ( ; i < cd_id->numtracks; i++)
{
track_bools[i] = cd_id->track[i].type == SDL_AUDIO_TRACK;
free_tracks += track_bools[i];
}
if (!free_tracks)
{
Com_DPrintf("CDAudio_RandomPlay: Unable to find and play a random audio track, insert an audio cd please");
goto free_end;
}
/*choose random audio track */
do
{
do
{
f = ((float)randk()) / ((float)RAND_MAX + 1.0);
track = (int)(cd_id->numtracks * f);
}
while (!track_bools[track]);
lastTrack = track + 1;
cd_stat = SDL_CDStatus(cd_id);
if (!cdValid)
{
if (!CD_INDRIVE(cd_stat) || (!cd_id->numtracks))
{
goto free_end;
}
cdValid = true;
}
if (cd_stat == CD_PLAYING)
{
if (cd_id->cur_track == track + 1)
{
goto free_end;
}
CDAudio_Stop();
}
if (SDL_CDPlay(cd_id, cd_id->track[track].offset,
cd_id->track[track].length))
{
track_bools[track] = 0;
free_tracks--;
}
else
{
playLooping = true;
break;
}
}
while (free_tracks > 0);
free_end:
free((void *)track_bools);
}
void
CDAudio_Stop()
{
int cdstate;
if (!cd_id || !enabled)
{
return;
}
cdstate = SDL_CDStatus(cd_id);
if ((cdstate != CD_PLAYING) && (cdstate != CD_PAUSED))
{
return;
}
if (SDL_CDStop(cd_id))
{
Com_DPrintf("CDAudio_Stop: Failed to stop track.\n");
}
playLooping = 0;
}
void
CDAudio_Pause()
{
if (!cd_id || !enabled)
{
return;
}
if (SDL_CDStatus(cd_id) != CD_PLAYING)
{
return;
}
if (SDL_CDPause(cd_id))
{
Com_DPrintf("CDAudio_Pause: Failed to pause track.\n");
}
}
void
CDAudio_Resume()
{
if (!cd_id || !enabled)
{
return;
}
if (SDL_CDStatus(cd_id) != CD_PAUSED)
{
return;
}
if (SDL_CDResume(cd_id))
{
Com_DPrintf("CDAudio_Resume: Failed to resume track.\n");
}
}
void
CDAudio_Update()
{
static int cnt = 0;
if (!cd_id || !enabled)
{
return;
}
if (cd_volume && (cd_volume->value != cdvolume))
{
if (cdvolume)
{
Cvar_SetValue("cd_volume", 0.0);
CDAudio_Pause();
}
else
{
Cvar_SetValue("cd_volume", 1.0);
CDAudio_Resume();
}
cdvolume = cd_volume->value;
return;
}
/* this causes too much overhead to be executed every frame */
if (++cnt == 16)
{
cnt = 0;
if (cd_nocd->value)
{
CDAudio_Stop();
return;
}
if (playLooping &&
(SDL_CDStatus(cd_id) != CD_PLAYING) &&
(SDL_CDStatus(cd_id) != CD_PAUSED))
{
CDAudio_Play(lastTrack, true);
}
}
}
int
CDAudio_Init()
{
cvar_t *cv;
if (initialized)
{
return 0;
}
cv = Cvar_Get("nocdaudio", "0", CVAR_NOSET);
if (cv->value)
{
return -1;
}
#ifdef OGG
cd_nocd = Cvar_Get("cd_nocd", "1", CVAR_ARCHIVE);
#else
cd_nocd = Cvar_Get("cd_nocd", "0", CVAR_ARCHIVE);
#endif
if (cd_nocd->value)
{
return -1;
}
cd_volume = Cvar_Get("cd_volume", "1", CVAR_ARCHIVE);
if (SDL_WasInit(SDL_INIT_EVERYTHING) == 0)
{
if (SDL_Init(SDL_INIT_CDROM) < 0)
{
Com_Printf("Couldn't init SDL cdrom: %s\n", SDL_GetError());
return -1;
}
}
else if (SDL_WasInit(SDL_INIT_CDROM) == 0)
{
if (SDL_InitSubSystem(SDL_INIT_CDROM) < 0)
{
Com_Printf("Couldn't init SDL cdrom: %s\n", SDL_GetError());
return -1;
}
}
cd_id = SDL_CDOpen(0);
if (!cd_id)
{
Com_Printf("CDAudio_Init: Unable to open default CD-ROM drive: %s\n",
SDL_GetError());
return -1;
}
initialized = true;
enabled = true;
cdValid = true;
if (!CD_INDRIVE(SDL_CDStatus(cd_id)))
{
Com_Printf("CDAudio_Init: No CD in drive.\n");
cdValid = false;
}
if (!cd_id->numtracks)
{
Com_Printf("CDAudio_Init: CD contains no audio tracks.\n");
cdValid = false;
}
Cmd_AddCommand("cd", CD_f);
Com_Printf("CD Audio Initialized.\n");
return 0;
}
void
CDAudio_Shutdown()
{
if (!cd_id)
{
return;
}
CDAudio_Stop();
SDL_CDClose(cd_id);
cd_id = NULL;
if (SDL_WasInit(SDL_INIT_EVERYTHING) == SDL_INIT_CDROM)
{
SDL_Quit();
}
else
{
SDL_QuitSubSystem(SDL_INIT_CDROM);
}
initialized = false;
}
static void
CD_f()
{
char *command;
int cdstate;
if (Cmd_Argc() < 2)
{
return;
}
command = Cmd_Argv(1);
if (!Q_strcasecmp(command, "on"))
{
enabled = true;
}
if (!Q_strcasecmp(command, "off"))
{
if (!cd_id)
{
return;
}
cdstate = SDL_CDStatus(cd_id);
if ((cdstate == CD_PLAYING) || (cdstate == CD_PAUSED))
{
CDAudio_Stop();
}
enabled = false;
return;
}
if (!Q_strcasecmp(command, "play"))
{
CDAudio_Play((byte)(int)strtol(Cmd_Argv(2), (char **)NULL, 10), false);
return;
}
if (!Q_strcasecmp(command, "loop"))
{
CDAudio_Play((byte)(int)strtol(Cmd_Argv(2), (char **)NULL, 10), true);
return;
}
if (!Q_strcasecmp(command, "stop"))
{
CDAudio_Stop();
return;
}
if (!Q_strcasecmp(command, "pause"))
{
CDAudio_Pause();
return;
}
if (!Q_strcasecmp(command, "resume"))
{
CDAudio_Resume();
return;
}
if (!Q_strcasecmp(command, "eject"))
{
CDAudio_Eject();
return;
}
if (!Q_strcasecmp(command, "info"))
{
if (!cd_id)
{
return;
}
cdstate = SDL_CDStatus(cd_id);
Com_Printf("%d tracks\n", cd_id->numtracks);
if (cdstate == CD_PLAYING)
{
Com_Printf("Currently %s track %d\n",
playLooping ? "looping" : "playing",
cd_id->cur_track + 1);
}
else
if (cdstate == CD_PAUSED)
{
Com_Printf("Paused %s track %d\n",
playLooping ? "looping" : "playing",
cd_id->cur_track + 1);
}
return;
}
}
void
CDAudio_Activate(qboolean active)
{
if (active)
{
CDAudio_Resume();
}
else
{
CDAudio_Pause();
}
}
#endif /* CDA */

View File

@ -630,9 +630,6 @@ SCR_PlayCinematic(char *arg)
In_FlushQueue();
/* make sure background music is not playing */
#ifdef CDA
CDAudio_Stop();
#endif
#ifdef OGG
OGG_Stop();
#endif

View File

@ -814,10 +814,6 @@ CL_Frame(int packetdelta, int renderdelta, int timedelta, qboolean packetframe,
/* update audio */
S_Update(cl.refdef.vieworg, cl.v_forward, cl.v_right, cl.v_up);
#ifdef CDA
CDAudio_Update();
#endif
/* advance local effects for next frame */
CL_RunDLights();
CL_RunLightStyles();
@ -886,10 +882,6 @@ CL_Init(void)
cls.disable_screen = true; /* don't draw yet */
#ifdef CDA
CDAudio_Init();
#endif
CL_InitLocal();
Cbuf_Execute();
@ -914,9 +906,6 @@ CL_Shutdown(void)
Key_WriteConsoleHistory();
#ifdef CDA
CDAudio_Shutdown();
#endif
#ifdef OGG
OGG_Stop();
#endif

View File

@ -320,12 +320,10 @@ CL_Disconnect(void)
cls.connect_time = 0;
SCR_StopCinematic();
#ifdef OGG
OGG_Stop();
#endif
#ifdef CDA
CDAudio_Stop();
#endif
if (cls.demorecording)
{

View File

@ -1078,22 +1078,15 @@ CL_ParseConfigString(void)
{
CL_SetLightstyle(i - CS_LIGHTS);
}
#ifdef OGG
else if (i == CS_CDTRACK)
{
if (cl.refresh_prepped)
{
int track = (int)strtol(cl.configstrings[CS_CDTRACK], (char **)NULL, 10);
#ifdef CDA
CDAudio_Play(track, true);
#endif
#ifdef OGG
OGG_PlayTrack(track);
#endif
OGG_PlayTrack((int)strtol(cl.configstrings[CS_CDTRACK], (char **)NULL, 10));
}
}
#endif
else if ((i >= CS_MODELS) && (i < CS_MODELS + MAX_MODELS))
{
if (cl.refresh_prepped)

View File

@ -567,9 +567,6 @@ SCR_BeginLoadingPlaque(void)
{
S_StopAllSounds();
cl.sound_prepped = false; /* don't play ambients */
#ifdef CDA
CDAudio_Stop();
#endif
#ifdef OGG
OGG_Stop();
#endif

View File

@ -361,34 +361,18 @@ CL_PrepRefresh(void)
cl.refresh_prepped = true;
cl.force_refdef = true; /* make sure we have a valid refdef */
#if defined(OGG) || defined(CDA)
#if defined(OGG)
int track = (int)strtol(cl.configstrings[CS_CDTRACK], (char **)NULL, 10);
/* start the cd track */
if (Cvar_VariableValue("cd_shuffle"))
{
#ifdef CDA
CDAudio_RandomPlay();
#endif
#ifdef OGG
OGG_PlayTrack(track);
#endif
}
else
{
#ifdef CDA
CDAudio_Play(track, (char **)NULL, 10), true);
#endif
#ifdef OGG
OGG_PlayTrack(track);
#endif
}
#endif
}

View File

@ -53,7 +53,6 @@
#include "keyboard.h"
#include "console.h"
#include "../sound/header/cdaudio.h"
#include "../sound/header/sound.h"
#include "../sound/header/vorbis.h"

View File

@ -1055,7 +1055,7 @@ static menuslider_s s_options_sfxvolume_slider;
#ifdef SDL2
static menuslider_s s_options_haptic_slider;
#endif
#if defined(OGG) || defined(CDA)
#if defined(OGG)
static menulist_s s_options_cdshuffle_box;
#endif
#ifdef OGG
@ -1124,7 +1124,7 @@ ControlsSetMenuItemValues(void)
{
s_options_sfxvolume_slider.curvalue = Cvar_VariableValue("s_volume") * 10;
#if defined(OGG) || defined(CDA)
#if defined(OGG)
s_options_cdshuffle_box.curvalue = (Cvar_VariableValue("cd_shuffle") != 0);
#endif
@ -1192,13 +1192,12 @@ UpdateVolumeFunc(void *unused)
Cvar_SetValue("s_volume", s_options_sfxvolume_slider.curvalue / 10);
}
#if defined(OGG) || defined(CDA)
#if defined(OGG)
static void
CDShuffleFunc(void *unused)
{
Cvar_SetValue("cd_shuffle", s_options_cdshuffle_box.curvalue);
#ifdef OGG
cvar_t *ogg_enable= Cvar_Get("ogg_enable", "1", CVAR_ARCHIVE);
int track = (int)strtol(cl.configstrings[CS_CDTRACK], (char **)NULL, 10);
@ -1215,9 +1214,7 @@ CDShuffleFunc(void *unused)
{
OGG_PlayTrack(track);
}
#endif
}
#endif
#ifdef OGG
@ -1232,17 +1229,11 @@ static void
EnableOGGMusic(void *unused)
{
Cvar_SetValue("ogg_enable", (float)s_options_enableogg_box.curvalue);
#ifdef CDA
Cvar_SetValue("cd_nocd", 1);
#endif
if (s_options_enableogg_box.curvalue)
{
#ifdef CDA
CDAudio_Stop();
#endif
OGG_Init();
OGG_InitTrackList();
OGG_InitTrackList();
OGG_Stop();
int track = (int)strtol(cl.configstrings[CS_CDTRACK], (char **)NULL, 10);
@ -1321,7 +1312,7 @@ Options_MenuInit(void)
};
#endif
#if defined(OGG) || defined(CDA)
#if defined(OGG)
static const char *cd_shuffle[] =
{
"disabled",
@ -1387,7 +1378,7 @@ Options_MenuInit(void)
s_options_enableogg_box.itemnames = ogg_music_items;
#endif
#if defined(OGG) || defined(CDA)
#if defined(OGG)
s_options_cdshuffle_box.generic.type = MTYPE_SPINCONTROL;
s_options_cdshuffle_box.generic.x = 0;
s_options_cdshuffle_box.generic.y = 30;
@ -1481,8 +1472,6 @@ Options_MenuInit(void)
#ifdef OGG
Menu_AddItem(&s_options_menu, (void *)&s_options_oggvolume_slider);
Menu_AddItem(&s_options_menu, (void *)&s_options_enableogg_box);
#endif
#if defined(OGG) || defined(CDA)
Menu_AddItem(&s_options_menu, (void *)&s_options_cdshuffle_box);
#endif
Menu_AddItem(&s_options_menu, (void *)&s_options_quality_list);

View File

@ -1,41 +0,0 @@
/*
* Copyright (C) 1997-2001 Id Software, Inc.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or (at
* your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
* See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*
* =======================================================================
*
* Function prototypes for the Audio-CD playback
*
* =======================================================================
*/
#ifdef CDA
#ifndef CL_SOUND_CDAUDIO_H
#define CL_SOUND_CDAUDIO_H
int CDAudio_Init(void);
void CDAudio_Shutdown(void);
void CDAudio_Play(int track, qboolean looping);
void CDAudio_Stop(void);
void CDAudio_Update(void);
void CDAudio_Activate (qboolean active);
void CDAudio_RandomPlay(void);
#endif
#endif

View File

@ -107,11 +107,6 @@ Qcommon_Buildstring(void)
printf(" - SDL2 (using 1.2)\n");
#endif
#ifdef CDA
printf(" + CD audio\n");
#else
printf(" - CD audio\n");
#endif
#ifdef OGG
printf(" + OGG/Vorbis\n");
#else