ref: c65e366f67e3975a2a0ea5f97af49511cfa6136b
parent: d607115bdbfbcb45824b9e415291efe7c8a42b0e
author: lieff <[email protected]>
date: Mon Feb 24 10:59:09 EST 2020
test: interrupt from progress_cb
--- a/minimp3_test.c
+++ b/minimp3_test.c
@@ -124,6 +124,15 @@
return 0;
}
+static int progress_cb(void *user_data, size_t file_size, uint64_t offset, mp3dec_frame_info_t *info)
+{
+ (void)user_data;
+ (void)file_size;
+ (void)offset;
+ (void)info;
+ return MP3D_E_USER;
+}
+
static void decode_file(const char *input_file_name, const unsigned char *buf_ref, int ref_size, FILE *file_out)
{
mp3dec_t mp3d;
@@ -372,6 +381,7 @@
ASSERT(MP3D_E_PARAM == ret);
ret = mp3dec_load_buf(&mp3d, buf, size, 0, 0, 0);
ASSERT(MP3D_E_PARAM == ret);
+
memset(&finfo, 0xff, sizeof(finfo));
ret = mp3dec_load_buf(&mp3d, buf, 0, &finfo, 0, 0);
ASSERT(0 == ret && 0 == finfo.samples);
@@ -443,6 +453,11 @@
ASSERT(MP3D_E_PARAM == ret);
ret = mp3dec_load(&mp3d, "not_foud", &finfo, 0, 0);
ASSERT(MP3D_E_IOERROR == ret);
+
+ memset(&mp3d, 0xff, sizeof(mp3d));
+ memset(&finfo, 0xff, sizeof(finfo));
+ ret = mp3dec_load(&mp3d, input_file_name, &finfo, progress_cb, 0);
+ ASSERT(MP3D_E_USER == ret && 2304 == finfo.samples);
ret = mp3dec_iterate(0, frames_iterate_cb, 0);
ASSERT(MP3D_E_PARAM == ret);