shithub: mp3dec

Download patch

ref: 0a83e96c77757d10a83cfc73a32f8a506b34d67d
parent: c5a14126a517f90ae9459645f2747f5d5247df93
author: lieff <[email protected]>
date: Wed Feb 19 07:42:53 EST 2020

test: print fail error codes

--- a/minimp3_test.c
+++ b/minimp3_test.c
@@ -144,7 +144,7 @@
         FILE *file = fopen(input_file_name, "rb");
         uint8_t *buf = preload(file, &size);
         fclose(file);
-        res = buf ? mp3dec_load_buf(&mp3d, buf, size, &info, 0, 0) : -1;
+        res = buf ? mp3dec_load_buf(&mp3d, buf, size, &info, 0, 0) : MP3D_E_IOERROR;
         free(buf);
     } else if (MODE_LOAD_CB == mode)
     {
@@ -151,7 +151,7 @@
         uint8_t *io_buf = malloc(MINIMP3_IO_SIZE);
         FILE *file = fopen(input_file_name, "rb");
         io.read_data = io.seek_data = file;
-        res = file ? mp3dec_load_cb(&mp3d, &io, io_buf, MINIMP3_IO_SIZE, &info, 0, 0) : -1;
+        res = file ? mp3dec_load_cb(&mp3d, &io, io_buf, MINIMP3_IO_SIZE, &info, 0, 0) : MP3D_E_IOERROR;
         fclose((FILE*)io.read_data);
         free(io_buf);
     } else if (MODE_ITERATE == mode)
@@ -167,7 +167,7 @@
         fclose(file);
         frames_iterate_data d = { &mp3d, &info, 0 };
         mp3dec_init(&mp3d);
-        res = mp3dec_iterate_buf(buf, size, frames_iterate_cb, &d);
+        res = buf ? mp3dec_iterate_buf(buf, size, frames_iterate_cb, &d) : MP3D_E_IOERROR;
         free(buf);
     } else if (MODE_ITERATE_CB == mode)
     {
@@ -176,7 +176,7 @@
         io.read_data = io.seek_data = file;
         frames_iterate_data d = { &mp3d, &info, 0 };
         mp3dec_init(&mp3d);
-        res = mp3dec_iterate_cb(&io, io_buf, MINIMP3_IO_SIZE, frames_iterate_cb, &d);
+        res = file ? mp3dec_iterate_cb(&io, io_buf, MINIMP3_IO_SIZE, frames_iterate_cb, &d) : MP3D_E_IOERROR;
         fclose((FILE*)io.read_data);
         free(io_buf);
     } else if (MODE_STREAM == mode || MODE_STREAM_BUF == mode || MODE_STREAM_CB == mode)
@@ -193,16 +193,16 @@
             FILE *file = fopen(input_file_name, "rb");
             buf = preload(file, &size);
             fclose(file);
-            res = mp3dec_ex_open_buf(&dec, buf, size, MP3D_SEEK_TO_SAMPLE);
+            res = buf ? mp3dec_ex_open_buf(&dec, buf, size, MP3D_SEEK_TO_SAMPLE) : MP3D_E_IOERROR;
         } else if (MODE_STREAM_CB == mode)
         {
             FILE *file = fopen(input_file_name, "rb");
             io.read_data = io.seek_data = file;
-            res = file ? mp3dec_ex_open_cb(&dec, &io, MP3D_SEEK_TO_SAMPLE) : -1;
+            res = file ? mp3dec_ex_open_cb(&dec, &io, MP3D_SEEK_TO_SAMPLE) : MP3D_E_IOERROR;
         }
-        if (res && MP3D_E_DECODE != res)
+        if (res)
         {
-            printf("error: mp3dec_ex_open() failed\n");
+            printf("error: mp3dec_ex_open()=%d failed\n", res);
             exit(1);
         }
         info.samples = dec.samples;
@@ -228,7 +228,12 @@
             int skip_ref = MINIMP3_MIN((size_t)ref_size, position*sizeof(int16_t));
             buf_ref  += skip_ref;
             ref_size -= skip_ref;
-            mp3dec_ex_seek(&dec, position);
+            res = mp3dec_ex_seek(&dec, position);
+            if (res)
+            {
+                printf("error: mp3dec_ex_seek()=%d failed\n", res);
+                exit(1);
+            }
         }
         if (portion < 0)
         {
@@ -244,7 +249,7 @@
             readed = mp3dec_ex_read(&dec, info.buffer + samples_readed, to_read);
             if (readed != (size_t)to_read)
             {
-                printf("error: mp3dec_ex_read() readed less than expected\n");
+                printf("error: mp3dec_ex_read() readed less than expected, last_error=%d\n", dec.last_error);
                 exit(1);
             }
             samples -= to_read;
@@ -253,7 +258,7 @@
         readed = mp3dec_ex_read(&dec, info.buffer, 1);
         if (readed)
         {
-            printf("error: mp3dec_ex_read() readed more than expected\n");
+            printf("error: mp3dec_ex_read() readed more than expected, last_error=%d\n", dec.last_error);
             exit(1);
         }
         mp3dec_ex_close(&dec);
@@ -266,13 +271,10 @@
         printf("error: unknown mode\n");
         exit(1);
     }
-    if (res)
+    if (res && MP3D_E_DECODE != res)
     {
-        if (ref_size)
-        {
-            printf("error: file not found or read error\n");
-            exit(1);
-        }
+        printf("error: read function failed, code=%d\n", res);
+        exit(1);
     }
 #ifdef MINIMP3_FLOAT_OUTPUT
     int16_t *buffer = malloc(info.samples*sizeof(int16_t));