Unified · Split
| @@ -65,6 +65,18 @@ static void decode_file(const unsigned char *buf_mp3, int mp3_size, const unsign · 64 unmodified lines | ||
| 65 | 65 | int i, data_bytes, samples, total_samples = 0, maxdiff = 0; |
| 66 | 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 | 80 | mp3dec_init(&mp3d); |
| 69 | 81 | memset(&info, 0, sizeof(info)); |
| 70 | 82 | #ifndef MINIMP3_NO_WAV |