summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndree Buschmann <AndreeBuschmann@t-online.de>2010-10-02 17:43:36 +0000
committerAndree Buschmann <AndreeBuschmann@t-online.de>2010-10-02 17:43:36 +0000
commit32838e96d0bfb011e8ba06f2cbcb3b2efa33164b (patch)
tree8ec8df4553b85b78323d88ebcc589199aa5a615e
parent0a7baec5effecc165a8e0b05ec3da82f83264d2b (diff)
downloadrockbox-32838e96d0bfb011e8ba06f2cbcb3b2efa33164b.tar.gz
rockbox-32838e96d0bfb011e8ba06f2cbcb3b2efa33164b.zip
Finally fix FS#11476 (data abort when playing some sv8 mpc files on lowmem targets like Clip+/Fuzev1/Fuzev2). This fix disables loading of seek tables from the sv8 bitstream. Those table are located at the end of sv8-files. When playing sv8 files this resulted in seek to filebegin, then fileend, then back to filebegin. Such seeking behaviour results in heavy rebuffering when playing files on targets with low RAM.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28197 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/codecs/libmusepack/mpc_demux.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/apps/codecs/libmusepack/mpc_demux.c b/apps/codecs/libmusepack/mpc_demux.c
index 9b47802ac2..ea9b4f1a43 100644
--- a/apps/codecs/libmusepack/mpc_demux.c
+++ b/apps/codecs/libmusepack/mpc_demux.c
@@ -239,6 +239,7 @@ static mpc_status mpc_demux_seek_init(mpc_demux * d)
239 return MPC_STATUS_OK; 239 return MPC_STATUS_OK;
240} 240}
241 241
242/* rockbox: do not use
242static void mpc_demux_ST(mpc_demux * d) 243static void mpc_demux_ST(mpc_demux * d)
243{ 244{
244 mpc_uint64_t tmp; 245 mpc_uint64_t tmp;
@@ -300,15 +301,14 @@ static void mpc_demux_SP(mpc_demux * d, int size, int block_size)
300 mpc_demux_seek(d, (ptr - size) * 8 + cur, 11); 301 mpc_demux_seek(d, (ptr - size) * 8 + cur, 11);
301 st_head_size = mpc_bits_get_block(&d->bits_reader, &b); 302 st_head_size = mpc_bits_get_block(&d->bits_reader, &b);
302 if (memcmp(b.key, "ST", 2) == 0) { 303 if (memcmp(b.key, "ST", 2) == 0) {
303/* rockbox: not used
304 d->chap_pos = (ptr - size + b.size + st_head_size) * 8 + cur; 304 d->chap_pos = (ptr - size + b.size + st_head_size) * 8 + cur;
305 d->chap_nb = -1; 305 d->chap_nb = -1;
306*/
307 mpc_demux_fill(d, (mpc_uint32_t) b.size, 0); 306 mpc_demux_fill(d, (mpc_uint32_t) b.size, 0);
308 mpc_demux_ST(d); 307 mpc_demux_ST(d);
309 } 308 }
310 mpc_demux_seek(d, cur, 11 + block_size); 309 mpc_demux_seek(d, cur, 11 + block_size);
311} 310}
311*/
312/* rockbox: not used 312/* rockbox: not used
313static void mpc_demux_chap_find(mpc_demux * d) 313static void mpc_demux_chap_find(mpc_demux * d)
314{ 314{
@@ -458,10 +458,12 @@ static mpc_status mpc_demux_header(mpc_demux * d)
458 streaminfo_gain(&d->si, &d->bits_reader); 458 streaminfo_gain(&d->si, &d->bits_reader);
459 else if (memcmp(b.key, "EI", 2) == 0) 459 else if (memcmp(b.key, "EI", 2) == 0)
460 streaminfo_encoder_info(&d->si, &d->bits_reader); 460 streaminfo_encoder_info(&d->si, &d->bits_reader);
461/* rockbox: do not use
461 else if (memcmp(b.key, "SO", 2) == 0) 462 else if (memcmp(b.key, "SO", 2) == 0)
462 mpc_demux_SP(d, size, (mpc_uint32_t) b.size); 463 mpc_demux_SP(d, size, (mpc_uint32_t) b.size);
463 else if (memcmp(b.key, "ST", 2) == 0) 464 else if (memcmp(b.key, "ST", 2) == 0)
464 mpc_demux_ST(d); 465 mpc_demux_ST(d);
466*/
465 d->bits_reader.buff += b.size; 467 d->bits_reader.buff += b.size;
466 size = mpc_bits_get_block(&d->bits_reader, &b); 468 size = mpc_bits_get_block(&d->bits_reader, &b);
467 } 469 }