History

exclude wav from coverage, preload input files

lieff committed 8 years ago

Commit 71bcdf81 parent be963912 files · +36 −17Browse files

Unified · Split

2 files
  1. minimp3_test.c +35 −16
  2. scripts/build.sh +1 −1
minimp3_test.c+35−16
@@ -5,6 +5,7 @@ · 4 unmodified lines
55 #include <math.h>
66 #include <string.h>
77
8+#ifndef MINIMP3_NO_WAV
89 static char *wav_header(int hz, int ch, int bips, int data_bytes)
910 {
1011 static char hdr[44] = "RIFFsizeWAVEfmt \x10\0\0\0\1\0ch_hz_abpsbabsdatasize";
@@ -21,45 +22,62 @@ static char *wav_header(int hz, int ch, int bips, int data_bytes) · 10 unmodified lines
2122 *(int * )(hdr + 0x28) = data_bytes;
2223 return hdr;
2324 }
25+#endif
26+
27+static unsigned char *preload(FILE *file, int *data_size)
28+{
29+ unsigned char *data;
30+ *data_size = 0;
31+ if (!file)
32+ return 0;
33+ fseek(file, 0, SEEK_END);
34+ *data_size = (int)ftell(file);
35+ fseek(file, 0, SEEK_SET);
36+ data = (unsigned char*)malloc(*data_size);
37+ if (!data)
38+ return 0;
39+ if ((int)fread(data, 1, *data_size, file) != *data_size)
40+ exit(1);
41+ return data;
42+}
2443
2544 static void decode_file(FILE *file_mp3, FILE *file_ref, FILE *file_out, const int wave_out)
2645 {
2746 static mp3dec_t mp3d;
2847 mp3dec_frame_info_t info;
29− int i, data_bytes, samples, total_samples = 0, nbuf = 0, maxdiff = 0;
48+ int i, data_bytes, samples, total_samples = 0, maxdiff = 0, mp3_size, ref_size;
3049 double MSE = 0.0, psnr;
31− unsigned char buf[4096];
50+ unsigned char *buf_mp3 = preload(file_mp3, &mp3_size), *buf_ref = preload(file_ref, &ref_size);
3251
3352 mp3dec_init(&mp3d);
34−
53+#ifndef MINIMP3_NO_WAV
3554 if (wave_out)
3655 fwrite(wav_header(0, 0, 0, 0), 1, 44, file_out);
37−
56+#endif
3857 do
3958 {
40− short pcm[MINIMP3_MAX_SAMPLES_PER_FRAME], pcm2[MINIMP3_MAX_SAMPLES_PER_FRAME];
41− nbuf += fread(buf + nbuf, 1, sizeof(buf) - nbuf, file_mp3);
42− samples = mp3dec_decode_frame(&mp3d, buf, nbuf, pcm, &info);
59+ short pcm[MINIMP3_MAX_SAMPLES_PER_FRAME];
60+ samples = mp3dec_decode_frame(&mp3d, buf_mp3, mp3_size, pcm, &info);
4361 if (samples)
4462 {
45− if (file_ref)
63+ if (buf_ref && ref_size >= samples*info.channels*2)
4664 {
47− int readed = fread(pcm2, 1, 2*info.channels*samples, file_ref);
48− if (readed < 0)
49− exit(1);
5065 total_samples += samples*info.channels;
5166 for (i = 0; i < samples*info.channels; i++)
5267 {
53− int MSEtemp = abs((int)pcm[i] - (int)pcm2[i]);
68+ int MSEtemp = abs((int)pcm[i] - (int)(((short*)buf_ref)[i]));
5469 if (MSEtemp > maxdiff)
5570 maxdiff = MSEtemp;
5671 MSE += MSEtemp*MSEtemp;
5772 }
73+ buf_ref += samples*info.channels*2;
74+ ref_size -= samples*info.channels*2;
5875 }
5976 if (file_out)
6077 fwrite(pcm, samples, 2*info.channels, file_out);
6178 }
62− memmove(buf, buf + info.frame_bytes, nbuf -= info.frame_bytes);
79+ buf_mp3 += info.frame_bytes;
80+ mp3_size -= info.frame_bytes;
6381 } while (info.frame_bytes);
6482
6583 MSE /= total_samples ? total_samples : 1;
@@ -73,13 +91,14 @@ static void decode_file(FILE *file_mp3, FILE *file_ref, FILE *file_out, const in · 7 unmodified lines
7391 printf("PSNR compliance failed\n");
7492 exit(1);
7593 }
76−
94+#ifndef MINIMP3_NO_WAV
7795 if (wave_out)
7896 {
7997 data_bytes = ftell(file_out) - 44;
8098 rewind(file_out);
8199 fwrite(wav_header(info.hz, info.channels, 16, data_bytes), 1, 44, file_out);
82100 }
101+#endif
83102 fclose(file_mp3);
84103 if (file_ref)
85104 fclose(file_ref);
@@ -93,14 +112,14 @@ int main(int argc, char *argv[]) · 7 unmodified lines
93112 char *ref_file_name = (argc > 2) ? argv[2] : NULL;
94113 char *output_file_name = (argc > 3) ? argv[3] : NULL;
95114 int wave_out = 0;
96−
115+#ifndef MINIMP3_NO_WAV
97116 if (output_file_name)
98117 {
99118 char *ext = strrchr(output_file_name, '.');
100119 if (ext && !strcasecmp(ext+1, "wav"))
101120 wave_out = 1;
102121 }
103−
122+#endif
104123 if (!input_file_name)
105124 {
106125 printf("error: no file names given\n");
scripts/build.sh+1−1
@@ -6,7 +6,7 @@ pushd $CUR_DIR/.. · 5 unmodified lines
66
77 set -e
88
9−gcc -coverage -O0 -DMINIMP3_TEST -o minimp3 minimp3_test.c -lm
9+gcc -coverage -O0 -DMINIMP3_TEST -DMINIMP3_NO_WAV -o minimp3 minimp3_test.c -lm
1010 scripts/test.sh
1111 gcov minimp3_test.c
1212

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