# HG changeset patch # User nenolod # Date 1174782674 25200 # Node ID 44a922a4a591e8746c193c89996e2a96a251a82e # Parent f0846bdd9de68ed5504434884705ab4e0d90f442 [svn] - fix validation of mpeg2 files, by ccr. diff -r f0846bdd9de6 -r 44a922a4a591 ChangeLog --- a/ChangeLog Sat Mar 24 09:44:44 2007 -0700 +++ b/ChangeLog Sat Mar 24 17:31:14 2007 -0700 @@ -1,3 +1,11 @@ +2007-03-24 16:44:44 +0000 Yoshiki Yazawa + revision [1892] + - small cleanups. + + trunk/src/madplug/decoder.c | 36 ++++++++++++++++++++---------------- + 1 file changed, 20 insertions(+), 16 deletions(-) + + 2007-03-24 16:29:41 +0000 Yoshiki Yazawa revision [1890] - now wma can handle wide characters in metadata. diff -r f0846bdd9de6 -r 44a922a4a591 src/madplug/plugin.c --- a/src/madplug/plugin.c Sat Mar 24 09:44:44 2007 -0700 +++ b/src/madplug/plugin.c Sat Mar 24 17:31:14 2007 -0700 @@ -198,7 +198,7 @@ layer = (head >> 17) & 0x3; if (!layer) return FALSE; /* 00 = reserved */ - layer = 3 - layer; + layer = 4 - layer; /* check if bitrate index bits (12-15) are acceptable */ bitIndex = (head >> 12) & 0xf; @@ -243,7 +243,10 @@ if (bitRate > 192) return FALSE; } else { - /* any other mode with bitrates 32-56 and 80 */ + /* any other mode with bitrates 32-56 and 80. + * NOTICE! this check is not entirely correct, but I think + * it is sufficient in most cases. + */ if (((bitRate >= 32 && bitRate <= 56) || bitRate == 80)) return FALSE; } @@ -252,8 +255,11 @@ /* calculate approx. frame size */ padding = (head >> 9) & 1; sampleRate = mp3_samplerate_table[version][sampleIndex]; - *frameSize = (144 * bitRate * 1000) / (sampleRate + padding); - + if (layer == 1) + *frameSize = ((12 * bitRate * 1000 / sampleRate) + padding) * 4; + else + *frameSize = (144 * bitRate * 1000) / (sampleRate + padding); + /* check if bits 16 - 19 are all set (MPEG 1 Layer I, not protected?) */ if (((head >> 19) & 1) == 1 && ((head >> 17) & 3) == 3 && ((head >> 16) & 1) == 1)