Skip to content

Commit 65661df

Browse files
authored
modplug-decoding: fix nsamples calculation (#60)
1 parent ee2e047 commit 65661df

1 file changed

Lines changed: 14 additions & 5 deletions

File tree

  • audio/modplug-decoding/source

audio/modplug-decoding/source/main.c

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@ typedef struct
2222

2323
void staticDataBufferInit(StaticDataBuffer* buffer, void* data, size_t size)
2424
{
25-
memset(buffer, 0, sizeof(StaticDataBuffer));
26-
2725
buffer->data = (int16_t*)linearAlloc(size);
2826
buffer->size = size;
2927

@@ -36,6 +34,16 @@ void staticDataBufferDestroy(StaticDataBuffer* buffer)
3634
linearFree(buffer->data);
3735
}
3836

37+
void audioCallback(void *const data) {
38+
ndspWaveBuf *wbuf = data;
39+
40+
if(wbuf->status == NDSP_WBUF_DONE) {
41+
printf("Playback complete, press Start to exit\n");
42+
wbuf->status = NDSP_WBUF_FREE;
43+
return;
44+
}
45+
}
46+
3947
int main(int argc, char **argv)
4048
{
4149
gfxInitDefault();
@@ -91,7 +99,7 @@ int main(int argc, char **argv)
9199
free(buffer);
92100
fclose(file);
93101

94-
if (decoder.plug == 0)
102+
if (decoder.plug == 0)
95103
printf("Well shit, could not load file!\n");
96104
else
97105
ModPlug_SetMasterVolume(decoder.plug, 128);
@@ -120,12 +128,12 @@ int main(int argc, char **argv)
120128

121129
size_t decoded = ModPlug_Read(decoder.plug, decodedBuffer, decoderSize);
122130

123-
StaticDataBuffer staticDataBuffer;
131+
StaticDataBuffer staticDataBuffer = {0};
124132
staticDataBufferInit(&staticDataBuffer, decodedBuffer, decoded);
125133

126134
printf("Decoded Size: %zu\n", decoded);
127135

128-
waveBuf.nsamples = ((decoded / 2) / 16 / 8);
136+
waveBuf.nsamples = ((decoded / 2) / sizeof(int16_t));
129137
waveBuf.looping = false;
130138

131139
waveBuf.data_pcm16 = (int16_t*)staticDataBuffer.data;
@@ -138,6 +146,7 @@ int main(int argc, char **argv)
138146

139147
printf("Playing modplug file!\n");
140148
ndspChnWaveBufAdd(0, &waveBuf);
149+
ndspSetCallback(audioCallback, &waveBuf);
141150

142151
// Main loop
143152
while (aptMainLoop())

0 commit comments

Comments
 (0)