mirror of
https://github.com/RPCS3/rpcs3.git
synced 2026-06-02 12:45:14 -06:00
cellMusicDecode: Fix read position on prev/next track
This commit is contained in:
parent
1b5a895346
commit
883a6889e0
@ -90,6 +90,7 @@ struct music_decode
|
|||||||
case CELL_MUSIC_DECODE_CMD_PREV:
|
case CELL_MUSIC_DECODE_CMD_PREV:
|
||||||
{
|
{
|
||||||
decoder.stop();
|
decoder.stop();
|
||||||
|
read_pos = 0;
|
||||||
|
|
||||||
if (decoder.set_next_index(command == CELL_MUSIC_DECODE_CMD_NEXT) == umax)
|
if (decoder.set_next_index(command == CELL_MUSIC_DECODE_CMD_NEXT) == umax)
|
||||||
{
|
{
|
||||||
@ -195,9 +196,10 @@ error_code cell_music_decode_read(vm::ptr<void> buf, vm::ptr<u32> startTime, u64
|
|||||||
|
|
||||||
if (dec.decoder.m_size == 0)
|
if (dec.decoder.m_size == 0)
|
||||||
{
|
{
|
||||||
return CELL_MUSIC_DECODE_ERROR_NO_LPCM_DATA;
|
return { CELL_MUSIC_DECODE_ERROR_NO_LPCM_DATA, "m_size == 0" };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ensure(dec.decoder.m_size >= dec.read_pos);
|
||||||
const u64 size_left = dec.decoder.m_size - dec.read_pos;
|
const u64 size_left = dec.decoder.m_size - dec.read_pos;
|
||||||
|
|
||||||
if (dec.read_pos == 0)
|
if (dec.read_pos == 0)
|
||||||
@ -229,10 +231,10 @@ error_code cell_music_decode_read(vm::ptr<void> buf, vm::ptr<u32> startTime, u64
|
|||||||
|
|
||||||
if (size_to_read == 0)
|
if (size_to_read == 0)
|
||||||
{
|
{
|
||||||
return CELL_MUSIC_DECODE_ERROR_NO_LPCM_DATA; // TODO: speculative
|
return { CELL_MUSIC_DECODE_ERROR_NO_LPCM_DATA, "size_to_read == 0" }; // TODO: speculative
|
||||||
}
|
}
|
||||||
|
|
||||||
std::memcpy(buf.get_ptr(), &dec.decoder.data[dec.read_pos], size_to_read);
|
std::memcpy(buf.get_ptr(), &::at32(dec.decoder.data, dec.read_pos), size_to_read);
|
||||||
|
|
||||||
if (size_to_read < reqSize)
|
if (size_to_read < reqSize)
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user