Unified · Split
| @@ -1660,8 +1660,8 @@ static void decode_file(FILE *file_mp3, FILE *file_wav, FILE *file_ref) · 1659 unmodified lines | |||
| 1660 | { | 1660 | { |
| 1661 | static mp3dec_t mp3d = { 0, }; | 1661 | static mp3dec_t mp3d = { 0, }; |
| 1662 | mp3dec_frame_info_t info; | 1662 | mp3dec_frame_info_t info; |
| 1663 | int i, data_bytes, samples, total_samples = 0, nbuf = 0; | 1663 | int i, data_bytes, samples, total_samples = 0, nbuf = 0, maxdiff = 0; |
| 1664 | double MSE = 0.0, MSEtemp, psnr; | 1664 | double MSE = 0.0, psnr; |
| 1665 | unsigned char buf[4096]; | 1665 | unsigned char buf[4096]; |
| 1666 | 1666 | ||
| 1667 | mp3dec_init(&mp3d); | 1667 | mp3dec_init(&mp3d); |
| @@ -1679,7 +1679,9 @@ static void decode_file(FILE *file_mp3, FILE *file_wav, FILE *file_ref) · 11 unmodified lines | |||
| 1679 | total_samples += samples*info.channels; | 1679 | total_samples += samples*info.channels; |
| 1680 | for (i = 0; i < samples*info.channels; i++) | 1680 | for (i = 0; i < samples*info.channels; i++) |
| 1681 | { | 1681 | { |
| 1682 | MSEtemp = abs((int)pcm[i] - (int)pcm2[i]); | 1682 | int MSEtemp = abs((int)pcm[i] - (int)pcm2[i]); |
| 1683 | if (MSEtemp > maxdiff) | ||
| 1684 | maxdiff = MSEtemp; | ||
| 1683 | MSE += MSEtemp*MSEtemp; | 1685 | MSE += MSEtemp*MSEtemp; |
| 1684 | } | 1686 | } |
| 1685 | fwrite(pcm, samples, 2*info.channels, file_wav); | 1687 | fwrite(pcm, samples, 2*info.channels, file_wav); |
| @@ -1692,7 +1694,7 @@ static void decode_file(FILE *file_mp3, FILE *file_wav, FILE *file_ref) · 6 unmodified lines | |||
| 1692 | psnr = 99.0; | 1694 | psnr = 99.0; |
| 1693 | else | 1695 | else |
| 1694 | psnr = 10.0*log10(((double)0x7fff*0x7fff)/MSE); | 1696 | psnr = 10.0*log10(((double)0x7fff*0x7fff)/MSE); |
| 1695 | printf("samples=%d PSNR=%f\n", total_samples, psnr); | 1697 | printf("samples=%d max_diff=%d PSNR=%f\n", total_samples, maxdiff, psnr); |
| 1696 | if (psnr < 96) | 1698 | if (psnr < 96) |
| 1697 | { | 1699 | { |
| 1698 | printf("PSNR compliance failed\n"); | 1700 | printf("PSNR compliance failed\n"); |
| @@ -2,6 +2,7 @@ set -e · 1 unmodified line | |||
| 2 | 2 | ||
| 3 | if [ ! -d "fate-suite.ffmpeg.org" ]; then | 3 | if [ ! -d "fate-suite.ffmpeg.org" ]; then |
| 4 | wget -np -r --level=1 http://fate-suite.ffmpeg.org/mp3-conformance/ | 4 | wget -np -r --level=1 http://fate-suite.ffmpeg.org/mp3-conformance/ |
| 5 | cp vectors/l3-he_mode16.pcm fate-suite.ffmpeg.org/mp3-conformance/he_mode.pcm | ||
| 5 | fi | 6 | fi |
| 6 | 7 | ||
| 7 | gcc -Dminimp3_test -O2 -g -o minimp3 minimp3.c -lm | 8 | gcc -Dminimp3_test -O2 -g -o minimp3 minimp3.c -lm |
Binary file not shown.
Binary file not shown.