MCPcopy Create free account
hub / github.com/MayaPosch/NymphCast / init

Method init

src/server/gui/core/Sound.cpp:52–93  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

50}
51
52void Sound::init()
53{
54 if(mSampleData != NULL)
55 deinit();
56
57 if(mPath.empty())
58 return;
59
60 //load wav file via SDL
61 SDL_AudioSpec wave;
62 Uint8 * data = NULL;
63 Uint32 dlen = 0;
64 if (SDL_LoadWAV(mPath.c_str(), &wave, &data, &dlen) == NULL) {
65 LOG(LogError) << "Error loading sound \"" << mPath << "\"!\n" << " " << SDL_GetError();
66 return;
67 }
68 //build conversion buffer
69 SDL_AudioCVT cvt;
70 SDL_BuildAudioCVT(&cvt, wave.format, wave.channels, wave.freq, AUDIO_S16, 2, 44100);
71 //copy data to conversion buffer
72 cvt.len = dlen;
73 cvt.buf = new Uint8[cvt.len * cvt.len_mult];
74 memcpy(cvt.buf, data, dlen);
75 //convert buffer to stereo, 16bit, 44.1kHz
76 if (SDL_ConvertAudio(&cvt) < 0) {
77 LOG(LogError) << "Error converting sound \"" << mPath << "\" to 44.1kHz, 16bit, stereo format!\n" << " " << SDL_GetError();
78 delete[] cvt.buf;
79 }
80 else {
81 //worked. set up member data
82 SDL_LockAudio();
83 mSampleData = cvt.buf;
84 mSampleLength = cvt.len_cvt;
85 mSamplePos = 0;
86 mSampleFormat.channels = 2;
87 mSampleFormat.freq = 44100;
88 mSampleFormat.format = AUDIO_S16;
89 SDL_UnlockAudio();
90 }
91 //free wav data now
92 SDL_FreeWAV(data);
93}
94
95void Sound::deinit()
96{

Callers

nothing calls this directly

Calls 3

deinitFunction · 0.85
c_strMethod · 0.80
emptyMethod · 0.45

Tested by

no test coverage detected