summaryrefslogtreecommitdiffhomepage
path: root/src/raudio.c
diff options
context:
space:
mode:
authorUneven Prankster <[email protected]>2021-09-22 16:55:13 -0300
committerGitHub <[email protected]>2021-09-22 21:55:13 +0200
commit19ef765382438432eb3c1e3a6dd9271fe9c023c9 (patch)
treea26a8275913079669906da18d2b900fc50a03351 /src/raudio.c
parent9607ea5c0a28d1a3f5812c6fdc4822ab4b48cde2 (diff)
downloadraylib-19ef765382438432eb3c1e3a6dd9271fe9c023c9.tar.gz
raylib-19ef765382438432eb3c1e3a6dd9271fe9c023c9.zip
`SeekMusicStream` initial implementation (#2006)
Diffstat (limited to 'src/raudio.c')
-rw-r--r--src/raudio.c22
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)
{