Unified · Split
| @@ -124,6 +124,15 @@ static int frames_iterate_cb(void *user_data, const uint8_t *frame, int frame_si · 123 unmodified lines | ||
| 124 | 124 | return 0; |
| 125 | 125 | } |
| 126 | 126 | |
| 127 | +static int progress_cb(void *user_data, size_t file_size, uint64_t offset, mp3dec_frame_info_t *info) | |
| 128 | +{ | |
| 129 | + (void)user_data; | |
| 130 | + (void)file_size; | |
| 131 | + (void)offset; | |
| 132 | + (void)info; | |
| 133 | + return MP3D_E_USER; | |
| 134 | +} | |
| 135 | + | |
| 127 | 136 | static void decode_file(const char *input_file_name, const unsigned char *buf_ref, int ref_size, FILE *file_out) |
| 128 | 137 | { |
| 129 | 138 | mp3dec_t mp3d; |
| @@ -372,6 +381,7 @@ static int self_test(const char *input_file_name) · 242 unmodified lines | ||
| 372 | 381 | ASSERT(MP3D_E_PARAM == ret); |
| 373 | 382 | ret = mp3dec_load_buf(&mp3d, buf, size, 0, 0, 0); |
| 374 | 383 | ASSERT(MP3D_E_PARAM == ret); |
| 384 | + | |
| 375 | 385 | memset(&finfo, 0xff, sizeof(finfo)); |
| 376 | 386 | ret = mp3dec_load_buf(&mp3d, buf, 0, &finfo, 0, 0); |
| 377 | 387 | ASSERT(0 == ret && 0 == finfo.samples); |
| @@ -444,6 +454,11 @@ static int self_test(const char *input_file_name) · 66 unmodified lines | ||
| 444 | 454 | ret = mp3dec_load(&mp3d, "not_foud", &finfo, 0, 0); |
| 445 | 455 | ASSERT(MP3D_E_IOERROR == ret); |
| 446 | 456 | |
| 457 | + memset(&mp3d, 0xff, sizeof(mp3d)); | |
| 458 | + memset(&finfo, 0xff, sizeof(finfo)); | |
| 459 | + ret = mp3dec_load(&mp3d, input_file_name, &finfo, progress_cb, 0); | |
| 460 | + ASSERT(MP3D_E_USER == ret && 2304 == finfo.samples); | |
| 461 | + | |
| 447 | 462 | ret = mp3dec_iterate(0, frames_iterate_cb, 0); |
| 448 | 463 | ASSERT(MP3D_E_PARAM == ret); |
| 449 | 464 | ret = mp3dec_iterate(input_file_name, 0, 0); |