index ce644a70a77c70f10a23deaf6d654544beefd43a..78214e8c8a51f3b20b3bd2ace5c1003ea06ffd08 100644 (file)
+(* Copyright (C) Doom 2D: Forever Developers
+ *
+ * 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 3 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, see <http://www.gnu.org/licenses/>.
+ *)
interface
uses
sdl2,
SDL2_mixer,
+ {$IFDEF USE_MEMPOOL}mempool,{$ENDIF}
e_log,
SysUtils;
nRefs: Integer;
end;
- TBasicSound = class (TObject)
+ TBasicSound = class{$IFDEF USE_MEMPOOL}(TPoolObject){$ENDIF}
private
FChanNum: Integer; // <0: no channel allocated
const
NO_SOUND_ID = DWORD(-1);
-function e_InitSoundSystem(): Boolean;
+function e_InitSoundSystem(NoOutput: Boolean = False): Boolean;
function e_LoadSound(FileName: string; var ID: DWORD; isMusic: Boolean): Boolean;
function e_LoadSoundMem(pData: Pointer; Length: Integer; var ID: DWORD; isMusic: Boolean): Boolean;
end;
end;
-function e_InitSoundSystem(): Boolean;
+function e_InitSoundSystem(NoOutput: Boolean = False): Boolean;
var
res, i: Integer;
rfreq: Integer;
Result := False;
SoundInitialized := False;
+ if NoOutput then begin Result := true; Exit end;
+
// wow, this is actually MIDI player!
// we need module player
res := Mix_Init(MIX_INIT_FLAC or MIX_INIT_MOD or MIX_INIT_MODPLUG or MIX_INIT_MP3 or MIX_INIT_OGG or MIX_INIT_FLUIDSYNTH);
if (res and MIX_INIT_OGG) <> 0 then e_WriteLog('SDL: OGG playback is active', MSG_NOTIFY);
if (res and MIX_INIT_FLUIDSYNTH) <> 0 then e_WriteLog('SDL: FLUIDSYNTH playback is active', MSG_NOTIFY);
- res := Mix_OpenAudio(44100, AUDIO_S16LSB, 2, 2048);
+ e_WriteLog(Format('SDL: initializing mixer at %d with buffer %d', [gsSDLSampleRate, gsSDLBufferSize]), MSG_NOTIFY);
+ res := Mix_OpenAudio(gsSDLSampleRate, AUDIO_S16LSB, 2, gsSDLBufferSize);
if res = -1 then
begin
e_WriteLog('Error initializing SDL mixer:', MSG_FATALERROR);