diff options
| author | Uneven Prankster <[email protected]> | 2021-09-22 16:55:13 -0300 |
|---|---|---|
| committer | GitHub <[email protected]> | 2021-09-22 21:55:13 +0200 |
| commit | 19ef765382438432eb3c1e3a6dd9271fe9c023c9 (patch) | |
| tree | a26a8275913079669906da18d2b900fc50a03351 /src/raudio.c | |
| parent | 9607ea5c0a28d1a3f5812c6fdc4822ab4b48cde2 (diff) | |
| download | raylib-19ef765382438432eb3c1e3a6dd9271fe9c023c9.tar.gz raylib-19ef765382438432eb3c1e3a6dd9271fe9c023c9.zip | |
`SeekMusicStream` initial implementation (#2006)
Diffstat (limited to 'src/raudio.c')
| -rw-r--r-- | src/raudio.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/raudio.c b/src/raudio.c index 7c4e9ca3..d05d1496 100644 --- a/src/raudio.c +++ b/src/raudio.c @@ -1656,6 +1656,28 @@ void StopMusicStream(Music music) } } +// Seek music to a certain position (in seconds) +void SeekMusicStream(Music music, float position) +{ + unsigned int positionInFrames = (unsigned int)(position * music.stream.sampleRate); + switch (music.ctxType) + { +#if defined(SUPPORT_FILEFORMAT_WAV) + case MUSIC_AUDIO_WAV: drwav_seek_to_pcm_frame((drwav *)music.ctxData, positionInFrames); break; +#endif +#if defined(SUPPORT_FILEFORMAT_OGG) + case MUSIC_AUDIO_OGG: stb_vorbis_seek_frame((stb_vorbis *)music.ctxData, positionInFrames); break; +#endif +#if defined(SUPPORT_FILEFORMAT_FLAC) + case MUSIC_AUDIO_FLAC: drflac_seek_to_pcm_frame((drflac *)music.ctxData, positionInFrames); break; +#endif +#if defined(SUPPORT_FILEFORMAT_MP3) + case MUSIC_AUDIO_MP3: drmp3_seek_to_pcm_frame((drmp3 *)music.ctxData, positionInFrames); break; +#endif + default: break; + } +} + // Update (re-fill) music buffers if data already processed void UpdateMusicStream(Music music) { |
