* Fix big-endian issue with XING header parsing.

This commit is contained in:
Justin Maggard 2010-09-01 00:33:43 +00:00
parent 6325789eda
commit acf6f16d02

View File

@ -729,15 +729,19 @@ _get_mp3fileinfo(char *file, struct song_metadata *psong)
psong->vbr_scale = -1; psong->vbr_scale = -1;
if(!strncasecmp((char*)&buffer[index + fi.xing_offset + 4], "XING", 4)) if(!strncasecmp((char*)&buffer[index + fi.xing_offset + 4], "XING", 4))
{ {
xing_flags = *((int*)&buffer[index + fi.xing_offset + 4 + 4]); xing_flags = buffer[index+fi.xing_offset+4+4] << 24 |
xing_flags = ntohs(xing_flags); buffer[index+fi.xing_offset+4+5] << 16 |
buffer[index+fi.xing_offset+4+6] << 8 |
buffer[index+fi.xing_offset+4+7];
psong->vbr_scale = 78; psong->vbr_scale = 78;
if(xing_flags & 0x1) if(xing_flags & 0x1)
{ {
/* Frames field is valid... */ /* Frames field is valid... */
fi.number_of_frames = *((int*)&buffer[index + fi.xing_offset + 4 + 8]); fi.number_of_frames = buffer[index+fi.xing_offset+4+8] << 24 |
fi.number_of_frames = ntohs(fi.number_of_frames); buffer[index+fi.xing_offset+4+9] << 16 |
buffer[index+fi.xing_offset+4+10] << 8 |
buffer[index+fi.xing_offset+4+11];
} }
} }