Reviewed QOA seek PR
This commit is contained in:
parent
0a3567439d
commit
f88604e6d5
2 changed files with 10 additions and 5 deletions
4
src/external/qoaplay.c
vendored
4
src/external/qoaplay.c
vendored
|
@ -36,7 +36,7 @@
|
||||||
// QOA streaming data descriptor
|
// QOA streaming data descriptor
|
||||||
typedef struct {
|
typedef struct {
|
||||||
qoa_desc info; // QOA descriptor data
|
qoa_desc info; // QOA descriptor data
|
||||||
|
|
||||||
FILE *file; // QOA file to read, if NULL, using memory buffer -> file_data
|
FILE *file; // QOA file to read, if NULL, using memory buffer -> file_data
|
||||||
unsigned char *file_data; // QOA file data on memory
|
unsigned char *file_data; // QOA file data on memory
|
||||||
unsigned int file_data_size; // QOA file data on memory size
|
unsigned int file_data_size; // QOA file data on memory size
|
||||||
|
@ -107,7 +107,7 @@ qoaplay_desc *qoaplay_open(const char *path)
|
||||||
unsigned int sample_data_size = qoa.channels*QOA_FRAME_LEN*sizeof(short)*2;
|
unsigned int sample_data_size = qoa.channels*QOA_FRAME_LEN*sizeof(short)*2;
|
||||||
qoaplay_desc *qoa_ctx = QOA_MALLOC(sizeof(qoaplay_desc) + buffer_size + sample_data_size);
|
qoaplay_desc *qoa_ctx = QOA_MALLOC(sizeof(qoaplay_desc) + buffer_size + sample_data_size);
|
||||||
memset(qoa_ctx, 0, sizeof(qoaplay_desc));
|
memset(qoa_ctx, 0, sizeof(qoaplay_desc));
|
||||||
|
|
||||||
qoa_ctx->file = file;
|
qoa_ctx->file = file;
|
||||||
qoa_ctx->file_data = NULL;
|
qoa_ctx->file_data = NULL;
|
||||||
qoa_ctx->file_data_size = 0;
|
qoa_ctx->file_data_size = 0;
|
||||||
|
|
11
src/raudio.c
11
src/raudio.c
|
@ -1797,9 +1797,14 @@ void SeekMusicStream(Music music, float position)
|
||||||
case MUSIC_AUDIO_MP3: drmp3_seek_to_pcm_frame((drmp3 *)music.ctxData, positionInFrames); break;
|
case MUSIC_AUDIO_MP3: drmp3_seek_to_pcm_frame((drmp3 *)music.ctxData, positionInFrames); break;
|
||||||
#endif
|
#endif
|
||||||
#if defined(SUPPORT_FILEFORMAT_QOA)
|
#if defined(SUPPORT_FILEFORMAT_QOA)
|
||||||
//qoaplay_seek_frame seeks to QOA frame, not PCM frame, therefore we need to compute QOA frame number and change positionInFrames
|
case MUSIC_AUDIO_QOA:
|
||||||
case MUSIC_AUDIO_QOA: { int qoaFrame = positionInFrames/QOA_FRAME_LEN; qoaplay_seek_frame((qoaplay_desc*)music.ctxData, qoaFrame);
|
{
|
||||||
positionInFrames = ((qoaplay_desc*)music.ctxData)->sample_position; break; }
|
int qoaFrame = positionInFrames/QOA_FRAME_LEN;
|
||||||
|
qoaplay_seek_frame((qoaplay_desc *)music.ctxData, qoaFrame); // Seeks to QOA frame, not PCM frame
|
||||||
|
|
||||||
|
// We need to compute QOA frame number and update positionInFrames
|
||||||
|
positionInFrames = ((qoaplay_desc *)music.ctxData)->sample_position;
|
||||||
|
} break;
|
||||||
#endif
|
#endif
|
||||||
#if defined(SUPPORT_FILEFORMAT_FLAC)
|
#if defined(SUPPORT_FILEFORMAT_FLAC)
|
||||||
case MUSIC_AUDIO_FLAC: drflac_seek_to_pcm_frame((drflac *)music.ctxData, positionInFrames); break;
|
case MUSIC_AUDIO_FLAC: drflac_seek_to_pcm_frame((drflac *)music.ctxData, positionInFrames); break;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue