summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJens Arnold <amiconn@rockbox.org>2005-06-18 11:26:14 +0000
committerJens Arnold <amiconn@rockbox.org>2005-06-18 11:26:14 +0000
commitb0287720b1f4a3e39dbd003fda2eebdfe22ad1ed (patch)
tree69b78efc72adb07273ecd40cf534cef812fd81e4
parente2cd58145d90eac8e33f6e3684e73cf2b83692d3 (diff)
downloadrockbox-b0287720b1f4a3e39dbd003fda2eebdfe22ad1ed.tar.gz
rockbox-b0287720b1f4a3e39dbd003fda2eebdfe22ad1ed.zip
Fixed MPEG header validation for layer 1 on iriver, and simplified it for archos.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@6746 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--firmware/mp3data.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/firmware/mp3data.c b/firmware/mp3data.c
index 6e553eb94a..e899125013 100644
--- a/firmware/mp3data.c
+++ b/firmware/mp3data.c
@@ -105,18 +105,17 @@ static bool is_mp3frameheader(unsigned long head)
105 return false; 105 return false;
106 if (!(head & LAYER_MASK)) /* no layer? */ 106 if (!(head & LAYER_MASK)) /* no layer? */
107 return false; 107 return false;
108#if CONFIG_HWCODEC != MASNONE
109 /* The MAS can't decode layer 1, so treat layer 1 data as invalid */
110 if ((head & LAYER_MASK) == LAYER_MASK)
111 return false;
112#endif
108 if ((head & BITRATE_MASK) == BITRATE_MASK) /* bad bitrate? */ 113 if ((head & BITRATE_MASK) == BITRATE_MASK) /* bad bitrate? */
109 return false; 114 return false;
110 if (!(head & BITRATE_MASK)) /* no bitrate? */ 115 if (!(head & BITRATE_MASK)) /* no bitrate? */
111 return false; 116 return false;
112 if ((head & SAMPLERATE_MASK) == SAMPLERATE_MASK) /* bad sample rate? */ 117 if ((head & SAMPLERATE_MASK) == SAMPLERATE_MASK) /* bad sample rate? */
113 return false; 118 return false;
114 if (((head >> 19) & 1) == 1 &&
115 ((head >> 17) & 3) == 3 &&
116 ((head >> 16) & 1) == 1)
117 return false;
118 if ((head & 0xffff0000) == 0xfffe0000)
119 return false;
120 119
121 return true; 120 return true;
122} 121}