History

start test mp3dec_ex_* API

lieff committed 6 years ago

Commit 8e89e551 parent 190310f3 files · +52 −19Browse files

Unified · Split

3 files
  1. minimp3_test.c +45 −17
  2. scripts/build.sh +5 −1
  3. scripts/test_mode.sh +2 −1
minimp3_test.c+45−17
@@ -13,6 +13,10 @@ · 12 unmodified lines
1313 #include <strings.h>
1414 #endif
1515
16+#define MODE_LOAD 0
17+#define MODE_ITERATE 1
18+#define MODE_STREAM 2
19+
1620 static int16_t read16le(const void *p)
1721 {
1822 const uint8_t *src = (const uint8_t *)p;
@@ -59,7 +63,6 @@ static unsigned char *preload(FILE *file, int *data_size) · 40 unmodified lines
5963 return data;
6064 }
6165
62−#ifdef MP4_MODE
6366 typedef struct
6467 {
6568 mp3dec_t *mp3d;
@@ -91,23 +94,36 @@ static int frames_iterate_cb(void *user_data, const uint8_t *frame, int frame_si · 25 unmodified lines
9194 }
9295 return 0;
9396 }
94−#endif
9597
96−static void decode_file(const char *input_file_name, const unsigned char *buf_ref, int ref_size, FILE *file_out, const int wave_out)
98+static void decode_file(const char *input_file_name, const unsigned char *buf_ref, int ref_size, FILE *file_out, const int wave_out, const int mode)
9799 {
98100 mp3dec_t mp3d;
99− int i, data_bytes, total_samples = 0, maxdiff = 0;
101+ int i, res = -1, data_bytes, total_samples = 0, maxdiff = 0;
100102 double MSE = 0.0, psnr;
101103
102104 mp3dec_file_info_t info;
103−#ifdef MP4_MODE
104− frames_iterate_data d = { &mp3d, &info, 0 };
105− mp3dec_init(&mp3d);
106− memset(&info, 0, sizeof(info));
107− if (mp3dec_iterate(input_file_name, frames_iterate_cb, &d))
108−#else
109− if (mp3dec_load(&mp3d, input_file_name, &info, 0, 0))
110−#endif
105+ if (MODE_LOAD == mode)
106+ {
107+ res = mp3dec_load(&mp3d, input_file_name, &info, 0, 0);
108+ } else if (MODE_ITERATE == mode)
109+ {
110+ frames_iterate_data d = { &mp3d, &info, 0 };
111+ mp3dec_init(&mp3d);
112+ memset(&info, 0, sizeof(info));
113+ res = mp3dec_iterate(input_file_name, frames_iterate_cb, &d);
114+ } else if (MODE_STREAM == mode)
115+ {
116+ mp3dec_ex_t dec;
117+ res = mp3dec_ex_open(&dec, input_file_name, MP3D_SEEK_TO_SAMPLE);
118+ info.samples = dec.samples;
119+ info.buffer = malloc(dec.samples*sizeof(int16_t));
120+ mp3dec_ex_read(&dec, info.buffer, dec.samples);
121+ } else
122+ {
123+ printf("error: unknown mode");
124+ exit(1);
125+ }
126+ if (res)
111127 {
112128 if (ref_size)
113129 {
@@ -190,9 +206,21 @@ int main2(int argc, char *argv[]) · 76 unmodified lines
190206 int main(int argc, char *argv[])
191207 #endif
192208 {
193− int wave_out = 0, ref_size;
194− char *ref_file_name = (argc > 2) ? argv[2] : NULL;
195− char *output_file_name = (argc > 3) ? argv[3] : NULL;
209+ int wave_out = 0, mode = 0, i, ref_size;
210+ for(i = 1; i < argc; i++)
211+ {
212+ if (argv[i][0] != '-')
213+ break;
214+ switch (argv[i][1])
215+ {
216+ case 'm': i++; if (i < argc) mode = atoi(argv[i]); break;
217+ default:
218+ printf("error: unrecognized option\n");
219+ return 1;
220+ }
221+ }
222+ char *ref_file_name = (argc > (i + 1)) ? argv[i + 1] : NULL;
223+ char *output_file_name = (argc > (i + 2)) ? argv[i + 2] : NULL;
196224 FILE *file_out = NULL;
197225 if (output_file_name)
198226 {
@@ -211,13 +239,13 @@ int main(int argc, char *argv[]) · 12 unmodified lines
211239 __AFL_INIT();
212240 while (__AFL_LOOP(1000)) {
213241 #endif
214− char *input_file_name = (argc > 1) ? argv[1] : NULL;
242+ char *input_file_name = (argc > i) ? argv[i] : NULL;
215243 if (!input_file_name)
216244 {
217245 printf("error: no file names given\n");
218246 return 1;
219247 }
220− decode_file(input_file_name, buf_ref, ref_size, file_out, wave_out);
248+ decode_file(input_file_name, buf_ref, ref_size, file_out, wave_out, mode);
221249 #ifdef __AFL_HAVE_MANUAL_CONTROL
222250 }
223251 #endif
scripts/build.sh+5−1
@@ -11,7 +11,11 @@ CFLAGS="-O2 -std=c89 -Wall -Wextra -Wmissing-prototypes -Werror -fno-asynchronou · 10 unmodified lines
1111
1212 echo testing mp4 mode...
1313 gcc $CFLAGS -DMP4_MODE -o minimp3 minimp3_test.c -lm
14−scripts/test_mp4_mode.sh
14+scripts/test_mode.sh 1
15+
16+echo testing stream mode...
17+gcc $CFLAGS -DMP4_MODE -o minimp3 minimp3_test.c -lm
18+scripts/test_mode.sh 2
1519
1620 echo testing coverage x86 w sse...
1721 gcc -coverage -O0 -m32 -std=c89 -msse2 -DMINIMP3_TEST -DMINIMP3_NO_WAV -o minimp3 minimp3_test.c -lm
scripts/test_mode.shrenamed from scripts/test_mp4_mode.sh+2−1
@@ -5,13 +5,14 @@ CUR_DIR=$(cd $(dirname ${CUR_DIR}); pwd)/$(basename ${CUR_DIR})/ · 4 unmodified lines
55 pushd $CUR_DIR/..
66
77 APP=./minimp3
8+MODE=$1
89
910 set +e
1011 for i in vectors/l3-compl.bit vectors/l3-he_32khz.bit vectors/l3-he_44khz.bit vectors/l3-he_48khz.bit \
1112 vectors/l3-hecommon.bit vectors/l3-he_mode.bit vectors/l3-si.bit vectors/l3-si_block.bit vectors/l3-si_huff.bit \
1213 vectors/l3-sin1k0db.bit vectors/l3-test45.bit vectors/l3-test46.bit vectors/M2L3_bitrate_16_all.bit \
1314 vectors/M2L3_bitrate_22_all.bit vectors/M2L3_bitrate_24_all.bit vectors/M2L3_compl24.bit vectors/M2L3_noise.bit; do
14−$APP $i ${i%.*}.pcm
15+$APP -m $MODE $i ${i%.*}.pcm
1516 retval=$?
1617 echo $i exited with code=$retval
1718 if [ ! $retval -eq 0 ]; then

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t