MCPcopy Create free account
hub / github.com/ObEngine/ObEngine / getAudio

Method getAudio

extlibs/soloud/src/audiosource/wav/soloud_wavstream.cpp:235–337  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

233
234
235 unsigned int WavStreamInstance::getAudio(float *aBuffer, unsigned int aSamplesToRead, unsigned int aBufferSize)
236 {
237 unsigned int offset = 0;
238 if (mFile == NULL)
239 return 0;
240 switch (mParent->mFiletype)
241 {
242 case WAVSTREAM_FLAC:
243 {
244 unsigned int i, j, k;
245
246 for (i = 0; i < aSamplesToRead; i += 512)
247 {
248 float tmp[512 * MAX_CHANNELS];
249 unsigned int blockSize = (aSamplesToRead - i) > 512 ? 512 : aSamplesToRead - i;
250 offset += (unsigned int)drflac_read_pcm_frames_f32(mCodec.mFlac, blockSize, tmp);
251
252 for (j = 0; j < blockSize; j++)
253 {
254 for (k = 0; k < mChannels; k++)
255 {
256 aBuffer[k * aSamplesToRead + i + j] = tmp[j * mCodec.mFlac->channels + k];
257 }
258 }
259 }
260 mOffset += offset;
261 return offset;
262 }
263 break;
264 case WAVSTREAM_MP3:
265 {
266 unsigned int i, j, k;
267
268 for (i = 0; i < aSamplesToRead; i += 512)
269 {
270 float tmp[512 * MAX_CHANNELS];
271 unsigned int blockSize = (aSamplesToRead - i) > 512 ? 512 : aSamplesToRead - i;
272 offset += (unsigned int)drmp3_read_pcm_frames_f32(mCodec.mMp3, blockSize, tmp);
273
274 for (j = 0; j < blockSize; j++)
275 {
276 for (k = 0; k < mChannels; k++)
277 {
278 aBuffer[k * aSamplesToRead + i + j] = tmp[j * mCodec.mMp3->channels + k];
279 }
280 }
281 }
282 mOffset += offset;
283 return offset;
284 }
285 break;
286 case WAVSTREAM_OGG:
287 {
288 if (mOggFrameOffset < mOggFrameSize)
289 {
290 int b = getOggData(mOggOutputs, aBuffer, aSamplesToRead, aBufferSize, mOggFrameSize, mOggFrameOffset, mChannels);
291 mOffset += b;
292 offset += b;

Callers

nothing calls this directly

Calls 5

getOggDataFunction · 0.85

Tested by

no test coverage detected