mirror of
https://github.com/WinampDesktop/winamp.git
synced 2025-04-27 18:15:42 -04:00
CDROM: Implement XA-ADPCM filtering
This commit is contained in:
parent
f285f26ec2
commit
7195766563
@ -589,6 +589,8 @@ void CDROM::ExecuteCommand()
|
|||||||
const u8 file = m_param_fifo.Peek(0);
|
const u8 file = m_param_fifo.Peek(0);
|
||||||
const u8 channel = m_param_fifo.Peek(1);
|
const u8 channel = m_param_fifo.Peek(1);
|
||||||
Log_WarningPrintf("CDROM setfilter command 0x%02X 0x%02X", ZeroExtend32(file), ZeroExtend32(channel));
|
Log_WarningPrintf("CDROM setfilter command 0x%02X 0x%02X", ZeroExtend32(file), ZeroExtend32(channel));
|
||||||
|
m_filter_file_number = file;
|
||||||
|
m_filter_channel_number = channel;
|
||||||
PushStatResponse(Interrupt::ACK);
|
PushStatResponse(Interrupt::ACK);
|
||||||
EndCommand();
|
EndCommand();
|
||||||
return;
|
return;
|
||||||
@ -793,8 +795,19 @@ void CDROM::DoSectorRead()
|
|||||||
{
|
{
|
||||||
if (m_last_sector_subheader.submode.realtime && m_last_sector_subheader.submode.audio)
|
if (m_last_sector_subheader.submode.realtime && m_last_sector_subheader.submode.audio)
|
||||||
{
|
{
|
||||||
// TODO: Decode audio sector. Do we still transfer this to the CPU?
|
// Check for automatic ADPCM filter.
|
||||||
Log_WarningPrintf("Decode CD-XA audio sector");
|
if (m_mode.xa_filter && (m_last_sector_subheader.file_number != m_filter_file_number ||
|
||||||
|
m_last_sector_subheader.channel_number != m_filter_channel_number))
|
||||||
|
{
|
||||||
|
Log_DebugPrintf("Skipping sector due to filter mismatch (expected %u/%u got %u/%u)", m_filter_file_number,
|
||||||
|
m_filter_channel_number, m_last_sector_subheader.file_number,
|
||||||
|
m_last_sector_subheader.channel_number);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
// Audio+realtime sectors aren't delivered to the CPU.
|
||||||
m_sector_buffer.clear();
|
m_sector_buffer.clear();
|
||||||
pass_to_cpu = false;
|
pass_to_cpu = false;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user