summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndree Buschmann <AndreeBuschmann@t-online.de>2011-06-24 08:51:22 +0000
committerAndree Buschmann <AndreeBuschmann@t-online.de>2011-06-24 08:51:22 +0000
commit4b0e09c1ac2127151b100723ebe6233ee7757e6a (patch)
tree138d7d30cc48a9879fa4a22c0968ab5a6b9508e2
parentd0084ffd7a4a8f14aeb2c702de5794e36ffff6e8 (diff)
downloadrockbox-4b0e09c1ac2127151b100723ebe6233ee7757e6a.zip
rockbox-4b0e09c1ac2127151b100723ebe6233ee7757e6a.tar.gz
rockbox-4b0e09c1ac2127151b100723ebe6233ee7757e6a.tar.bz2
rockbox-4b0e09c1ac2127151b100723ebe6233ee7757e6a.tar.xz
Submit FS#12164 by Sean Bartell with minor changes by myself. Fixes possible decoding corruption of RealAudio files.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30060 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/codecs/atrac3_rm.c2
-rw-r--r--apps/codecs/cook.c2
-rw-r--r--apps/codecs/librm/rm.c5
3 files changed, 5 insertions, 4 deletions
diff --git a/apps/codecs/atrac3_rm.c b/apps/codecs/atrac3_rm.c
index b666dd4..9975074 100644
--- a/apps/codecs/atrac3_rm.c
+++ b/apps/codecs/atrac3_rm.c
@@ -89,7 +89,7 @@ enum codec_status codec_run(void)
fs = rmctx.audio_framesize;
sps= rmctx.block_align;
h = rmctx.sub_packet_h;
- scrambling_unit_size = h*fs;
+ scrambling_unit_size = h * (fs + PACKET_HEADER_SIZE);
res = atrac3_decode_init(&q, ci->id3);
if(res < 0) {
diff --git a/apps/codecs/cook.c b/apps/codecs/cook.c
index 5801ee6..4a47e74 100644
--- a/apps/codecs/cook.c
+++ b/apps/codecs/cook.c
@@ -88,7 +88,7 @@ enum codec_status codec_run(void)
fs = rmctx.audio_framesize;
sps= rmctx.block_align;
h = rmctx.sub_packet_h;
- scrambling_unit_size = h*fs;
+ scrambling_unit_size = h * (fs + PACKET_HEADER_SIZE);
res =cook_decode_init(&rmctx, &q);
if(res < 0) {
diff --git a/apps/codecs/librm/rm.c b/apps/codecs/librm/rm.c
index 6bc187b..eabbe5d 100644
--- a/apps/codecs/librm/rm.c
+++ b/apps/codecs/librm/rm.c
@@ -541,8 +541,9 @@ int rm_get_packet(uint8_t **src,RMContext *rmctx, RMPacket *pkt)
if (!y)
rmctx->audiotimestamp = pkt->timestamp;
- advance_buffer(src,12);
- consumed += 12;
+ /* Skip packet header */
+ advance_buffer(src, PACKET_HEADER_SIZE);
+ consumed += PACKET_HEADER_SIZE;
if (rmctx->codec_type == CODEC_COOK || rmctx->codec_type == CODEC_ATRAC) {
for(x = 0 ; x < w/sps; x++)
{