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
This commit is contained in:
Andree Buschmann 2010-10-02 17:43:36 +00:00
parent 0a7baec5ef
commit 32838e96d0

View file

@ -239,6 +239,7 @@ static mpc_status mpc_demux_seek_init(mpc_demux * d)
return MPC_STATUS_OK; return MPC_STATUS_OK;
} }
/* rockbox: do not use
static void mpc_demux_ST(mpc_demux * d) static void mpc_demux_ST(mpc_demux * d)
{ {
mpc_uint64_t tmp; mpc_uint64_t tmp;
@ -300,15 +301,14 @@ static void mpc_demux_SP(mpc_demux * d, int size, int block_size)
mpc_demux_seek(d, (ptr - size) * 8 + cur, 11); mpc_demux_seek(d, (ptr - size) * 8 + cur, 11);
st_head_size = mpc_bits_get_block(&d->bits_reader, &b); st_head_size = mpc_bits_get_block(&d->bits_reader, &b);
if (memcmp(b.key, "ST", 2) == 0) { if (memcmp(b.key, "ST", 2) == 0) {
/* rockbox: not used
d->chap_pos = (ptr - size + b.size + st_head_size) * 8 + cur; d->chap_pos = (ptr - size + b.size + st_head_size) * 8 + cur;
d->chap_nb = -1; d->chap_nb = -1;
*/
mpc_demux_fill(d, (mpc_uint32_t) b.size, 0); mpc_demux_fill(d, (mpc_uint32_t) b.size, 0);
mpc_demux_ST(d); mpc_demux_ST(d);
} }
mpc_demux_seek(d, cur, 11 + block_size); mpc_demux_seek(d, cur, 11 + block_size);
} }
*/
/* rockbox: not used /* rockbox: not used
static void mpc_demux_chap_find(mpc_demux * d) static void mpc_demux_chap_find(mpc_demux * d)
{ {
@ -458,10 +458,12 @@ static mpc_status mpc_demux_header(mpc_demux * d)
streaminfo_gain(&d->si, &d->bits_reader); streaminfo_gain(&d->si, &d->bits_reader);
else if (memcmp(b.key, "EI", 2) == 0) else if (memcmp(b.key, "EI", 2) == 0)
streaminfo_encoder_info(&d->si, &d->bits_reader); streaminfo_encoder_info(&d->si, &d->bits_reader);
/* rockbox: do not use
else if (memcmp(b.key, "SO", 2) == 0) else if (memcmp(b.key, "SO", 2) == 0)
mpc_demux_SP(d, size, (mpc_uint32_t) b.size); mpc_demux_SP(d, size, (mpc_uint32_t) b.size);
else if (memcmp(b.key, "ST", 2) == 0) else if (memcmp(b.key, "ST", 2) == 0)
mpc_demux_ST(d); mpc_demux_ST(d);
*/
d->bits_reader.buff += b.size; d->bits_reader.buff += b.size;
size = mpc_bits_get_block(&d->bits_reader, &b); size = mpc_bits_get_block(&d->bits_reader, &b);
} }