Unified · Split
| @@ -65,6 +65,18 @@ static void decode_file(const unsigned char *buf_mp3, int mp3_size, const unsign · 64 unmodified lines | |||
| 65 | int i, data_bytes, samples, total_samples = 0, maxdiff = 0; | 65 | int i, data_bytes, samples, total_samples = 0, maxdiff = 0; |
| 66 | double MSE = 0.0, psnr; | 66 | double MSE = 0.0, psnr; |
| 67 | 67 | ||
| 68 | if (mp3_size > 10 && !strncmp((char *)buf_mp3, "ID3", 3)) | ||
| 69 | { | ||
| 70 | int id3v2size = (((buf_mp3[6] & 0x7f) << 21) | ((buf_mp3[7] & 0x7f) << 14) | | ||
| 71 | ((buf_mp3[8] & 0x7f) << 7) | (buf_mp3[9] & 0x7f)) + 10; | ||
| 72 | if (mp3_size >= id3v2size) | ||
| 73 | { | ||
| 74 | printf("info: skipping %d bytes of id3v2\n", id3v2size); | ||
| 75 | buf_mp3 += id3v2size; | ||
| 76 | mp3_size -= id3v2size; | ||
| 77 | } | ||
| 78 | } | ||
| 79 | |||
| 68 | mp3dec_init(&mp3d); | 80 | mp3dec_init(&mp3d); |
| 69 | memset(&info, 0, sizeof(info)); | 81 | memset(&info, 0, sizeof(info)); |
| 70 | #ifndef MINIMP3_NO_WAV | 82 | #ifndef MINIMP3_NO_WAV |