From 2a6e5ef4d487aaffdef827358223800c723c6bc3 Mon Sep 17 00:00:00 2001
From: Ozkan Sezer <[EMAIL REDACTED]>
Date: Mon, 10 Mar 2025 01:29:40 +0300
Subject: [PATCH] update music_drmp3.c after drmp3 api changes
---
src/codecs/music_drmp3.c | 24 ++++++++++++++++++++++--
1 file changed, 22 insertions(+), 2 deletions(-)
diff --git a/src/codecs/music_drmp3.c b/src/codecs/music_drmp3.c
index c5ec2eef..f02d4a7e 100644
--- a/src/codecs/music_drmp3.c
+++ b/src/codecs/music_drmp3.c
@@ -70,13 +70,33 @@ static size_t DRMP3_ReadCB(void *context, void *buf, size_t size)
static drmp3_bool32 DRMP3_SeekCB(void *context, int offset, drmp3_seek_origin origin)
{
DRMP3_Music *music = (DRMP3_Music *)context;
- int whence = (origin == drmp3_seek_origin_start) ? SDL_IO_SEEK_SET : SDL_IO_SEEK_CUR;
+ int whence;
+ switch (origin) {
+ case drmp3_seek_origin_start:
+ whence = SDL_IO_SEEK_SET;
+ break;
+ case drmp3_seek_origin_current:
+ whence = SDL_IO_SEEK_CUR;
+ break;
+ case drmp3_seek_origin_end:
+ whence = SDL_IO_SEEK_END;
+ break;
+ default:
+ return DRMP3_FALSE;
+ }
if (MP3_IOseek(&music->file, offset, whence) < 0) {
return DRMP3_FALSE;
}
return DRMP3_TRUE;
}
+static drmp3_bool32 DRMP3_TellCB(void *context, drmp3_int64 *pos)
+{
+ DRMP3_Music *music = (DRMP3_Music *)context;
+ *pos = MP3_IOtell(&music->file);
+ return (*pos < 0) ? DRMP3_FALSE : DRMP3_TRUE;
+}
+
static int DRMP3_Seek(void *context, double position);
static void *DRMP3_CreateFromIO(SDL_IOStream *src, bool closeio)
@@ -104,7 +124,7 @@ static void *DRMP3_CreateFromIO(SDL_IOStream *src, bool closeio)
MP3_IOseek(&music->file, 0, SDL_IO_SEEK_SET);
- if (!drmp3_init(&music->dec, DRMP3_ReadCB, DRMP3_SeekCB, music, NULL)) {
+ if (!drmp3_init(&music->dec, DRMP3_ReadCB, DRMP3_SeekCB, DRMP3_TellCB, NULL, music, NULL)) {
SDL_free(music);
SDL_SetError("music_drmp3: corrupt mp3 file (bad stream).");
return NULL;