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
13 #include <strings.h>13 #include <strings.h>
14#endif14#endif
15 15
16#define MODE_LOAD 0
17#define MODE_ITERATE 1
18#define MODE_STREAM 2
19
16static int16_t read16le(const void *p)20static int16_t read16le(const void *p)
17{21{
18 const uint8_t *src = (const uint8_t *)p;22 const uint8_t *src = (const uint8_t *)p;
@@ -59,7 +63,6 @@ static unsigned char *preload(FILE *file, int *data_size) · 40 unmodified lines
59 return data;63 return data;
60}64}
61 65
62#ifdef MP4_MODE
63typedef struct66typedef struct
64{67{
65 mp3dec_t *mp3d;68 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
91 }94 }
92 return 0;95 return 0;
93}96}
94#endif
95 97
96static void decode_file(const char *input_file_name, const unsigned char *buf_ref, int ref_size, FILE *file_out, const int wave_out)98static 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)
97{99{
98 mp3dec_t mp3d;100 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;
100 double MSE = 0.0, psnr;102 double MSE = 0.0, psnr;
101 103
102 mp3dec_file_info_t info;104 mp3dec_file_info_t info;
103#ifdef MP4_MODE105 if (MODE_LOAD == mode)
104 frames_iterate_data d = { &mp3d, &info, 0 };106 {
105 mp3dec_init(&mp3d);107 res = mp3dec_load(&mp3d, input_file_name, &info, 0, 0);
106 memset(&info, 0, sizeof(info));108 } else if (MODE_ITERATE == mode)
107 if (mp3dec_iterate(input_file_name, frames_iterate_cb, &d))109 {
108#else110 frames_iterate_data d = { &mp3d, &info, 0 };
109 if (mp3dec_load(&mp3d, input_file_name, &info, 0, 0))111 mp3dec_init(&mp3d);
110#endif112 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)
111 {127 {
112 if (ref_size)128 if (ref_size)
113 {129 {
@@ -190,9 +206,21 @@ int main2(int argc, char *argv[]) · 76 unmodified lines
190int main(int argc, char *argv[])206int main(int argc, char *argv[])
191#endif207#endif
192{208{
193 int wave_out = 0, ref_size;209 int wave_out = 0, mode = 0, i, ref_size;
194 char *ref_file_name = (argc > 2) ? argv[2] : NULL;210 for(i = 1; i < argc; i++)
195 char *output_file_name = (argc > 3) ? argv[3] : NULL;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;
196 FILE *file_out = NULL;224 FILE *file_out = NULL;
197 if (output_file_name)225 if (output_file_name)
198 {226 {
@@ -211,13 +239,13 @@ int main(int argc, char *argv[]) · 12 unmodified lines
211 __AFL_INIT();239 __AFL_INIT();
212 while (__AFL_LOOP(1000)) {240 while (__AFL_LOOP(1000)) {
213#endif241#endif
214 char *input_file_name = (argc > 1) ? argv[1] : NULL;242 char *input_file_name = (argc > i) ? argv[i] : NULL;
215 if (!input_file_name)243 if (!input_file_name)
216 {244 {
217 printf("error: no file names given\n");245 printf("error: no file names given\n");
218 return 1;246 return 1;
219 }247 }
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);
221#ifdef __AFL_HAVE_MANUAL_CONTROL249#ifdef __AFL_HAVE_MANUAL_CONTROL
222 }250 }
223#endif251#endif
scripts/build.sh+5−1
@@ -11,7 +11,11 @@ CFLAGS="-O2 -std=c89 -Wall -Wextra -Wmissing-prototypes -Werror -fno-asynchronou · 10 unmodified lines
11 11
12echo testing mp4 mode...12echo testing mp4 mode...
13gcc $CFLAGS -DMP4_MODE -o minimp3 minimp3_test.c -lm13gcc $CFLAGS -DMP4_MODE -o minimp3 minimp3_test.c -lm
14scripts/test_mp4_mode.sh14scripts/test_mode.sh 1
15
16echo testing stream mode...
17gcc $CFLAGS -DMP4_MODE -o minimp3 minimp3_test.c -lm
18scripts/test_mode.sh 2
15 19
16echo testing coverage x86 w sse...20echo testing coverage x86 w sse...
17gcc -coverage -O0 -m32 -std=c89 -msse2 -DMINIMP3_TEST -DMINIMP3_NO_WAV -o minimp3 minimp3_test.c -lm21gcc -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
5pushd $CUR_DIR/..5pushd $CUR_DIR/..
6 6
7APP=./minimp37APP=./minimp3
8MODE=$1
8 9
9set +e10set +e
10for i in vectors/l3-compl.bit vectors/l3-he_32khz.bit vectors/l3-he_44khz.bit vectors/l3-he_48khz.bit \11for i in vectors/l3-compl.bit vectors/l3-he_32khz.bit vectors/l3-he_44khz.bit vectors/l3-he_48khz.bit \
11vectors/l3-hecommon.bit vectors/l3-he_mode.bit vectors/l3-si.bit vectors/l3-si_block.bit vectors/l3-si_huff.bit \12vectors/l3-hecommon.bit vectors/l3-he_mode.bit vectors/l3-si.bit vectors/l3-si_block.bit vectors/l3-si_huff.bit \
12vectors/l3-sin1k0db.bit vectors/l3-test45.bit vectors/l3-test46.bit vectors/M2L3_bitrate_16_all.bit \13vectors/l3-sin1k0db.bit vectors/l3-test45.bit vectors/l3-test46.bit vectors/M2L3_bitrate_16_all.bit \
13vectors/M2L3_bitrate_22_all.bit vectors/M2L3_bitrate_24_all.bit vectors/M2L3_compl24.bit vectors/M2L3_noise.bit; do14vectors/M2L3_bitrate_22_all.bit vectors/M2L3_bitrate_24_all.bit vectors/M2L3_compl24.bit vectors/M2L3_noise.bit; do
14$APP $i ${i%.*}.pcm15$APP -m $MODE $i ${i%.*}.pcm
15retval=$?16retval=$?
16echo $i exited with code=$retval17echo $i exited with code=$retval
17if [ ! $retval -eq 0 ]; then18if [ ! $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