Remove MP3 widechar tag searching
1. It's slow, 2. It's incorrect
This commit is contained in:
parent
ab0fe6b164
commit
3e5b0c4531
|
@ -908,15 +908,6 @@ boolean I_LoadSong(char *data, size_t len)
|
||||||
const size_t key3len = strlen(key3);
|
const size_t key3len = strlen(key3);
|
||||||
const size_t key4len = strlen(key4);
|
const size_t key4len = strlen(key4);
|
||||||
|
|
||||||
// for mp3 wide chars
|
|
||||||
const char *key1w = "L\0O\0O\0P\0";
|
|
||||||
const char *key2w = "P\0O\0I\0N\0T\0\0\0\xFF\xFE";
|
|
||||||
const char *key3w = "M\0S\0\0\0\xFF\xFE";
|
|
||||||
const char *key4w = "L\0E\0N\0G\0T\0H\0M\0S\0\0\0\xFF\xFE";
|
|
||||||
const char *wterm = "\0\0";
|
|
||||||
char wval[10];
|
|
||||||
|
|
||||||
size_t wstart, wp;
|
|
||||||
char *p = data;
|
char *p = data;
|
||||||
SDL_RWops *rw;
|
SDL_RWops *rw;
|
||||||
|
|
||||||
|
@ -1067,53 +1058,6 @@ boolean I_LoadSong(char *data, size_t len)
|
||||||
p += key4len; // skip LENGTHMS
|
p += key4len; // skip LENGTHMS
|
||||||
song_length = (float)(atoi(p) / 1000.0L);
|
song_length = (float)(atoi(p) / 1000.0L);
|
||||||
}
|
}
|
||||||
// below: search MP3 or other tags that use wide char encoding
|
|
||||||
else if (fpclassify(loop_point) == FP_ZERO && !memcmp(p, key1w, key1len*2)) // LOOP wide char
|
|
||||||
{
|
|
||||||
p += key1len*2;
|
|
||||||
if (!memcmp(p, key2w, (key2len+1)*2)) // POINT= wide char
|
|
||||||
{
|
|
||||||
p += (key2len+1)*2;
|
|
||||||
wstart = (size_t)p;
|
|
||||||
wp = 0;
|
|
||||||
while (wp < 9 && memcmp(p, wterm, 2))
|
|
||||||
{
|
|
||||||
wval[wp] = *p;
|
|
||||||
p += 2;
|
|
||||||
wp = ((size_t)(p-wstart))/2;
|
|
||||||
}
|
|
||||||
wval[min(wp, 9)] = 0;
|
|
||||||
loop_point = (float)((44.1L+atoi(wval) / 44100.0L));
|
|
||||||
}
|
|
||||||
else if (!memcmp(p, key3w, (key3len+1)*2)) // MS= wide char
|
|
||||||
{
|
|
||||||
p += (key3len+1)*2;
|
|
||||||
wstart = (size_t)p;
|
|
||||||
wp = 0;
|
|
||||||
while (wp < 9 && memcmp(p, wterm, 2))
|
|
||||||
{
|
|
||||||
wval[wp] = *p;
|
|
||||||
p += 2;
|
|
||||||
wp = ((size_t)(p-wstart))/2;
|
|
||||||
}
|
|
||||||
wval[min(wp, 9)] = 0;
|
|
||||||
loop_point = (float)(atoi(wval) / 1000.0L);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (fpclassify(song_length) == FP_ZERO && !memcmp(p, key4w, (key4len+1)*2)) // LENGTHMS= wide char
|
|
||||||
{
|
|
||||||
p += (key4len+1)*2;
|
|
||||||
wstart = (size_t)p;
|
|
||||||
wp = 0;
|
|
||||||
while (wp < 9 && memcmp(p, wterm, 2))
|
|
||||||
{
|
|
||||||
wval[wp] = *p;
|
|
||||||
p += 2;
|
|
||||||
wp = ((size_t)(p-wstart))/2;
|
|
||||||
}
|
|
||||||
wval[min(wp, 9)] = 0;
|
|
||||||
song_length = (float)(atoi(wval) / 1000.0L);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (fpclassify(loop_point) != FP_ZERO && fpclassify(song_length) != FP_ZERO && song_length > loop_point) // Got what we needed
|
if (fpclassify(loop_point) != FP_ZERO && fpclassify(song_length) != FP_ZERO && song_length > loop_point) // Got what we needed
|
||||||
// the last case is a sanity check, in case the wide char searches were false matches.
|
// the last case is a sanity check, in case the wide char searches were false matches.
|
||||||
|
|
Loading…
Reference in New Issue