AD1848: Extend ad1848_filter_aux2 to any channel

This commit is contained in:
Alexander Babikov
2025-09-11 16:49:38 +05:00
parent a59eb526ed
commit 14cf9ee80b
3 changed files with 11 additions and 7 deletions

View File

@@ -97,7 +97,7 @@ extern void ad1848_update(ad1848_t *ad1848);
extern void ad1848_speed_changed(ad1848_t *ad1848);
extern void ad1848_set_cd_audio_channel(void *priv, int channel);
extern void ad1848_filter_cd_audio(int channel, double *buffer, void *priv);
extern void ad1848_filter_aux2(void* priv, double* out_l, double* out_r);
extern void ad1848_filter_channel(void* priv, int channel, double* out_l, double* out_r);
extern void ad1848_init(ad1848_t *ad1848, uint8_t type);

View File

@@ -770,20 +770,24 @@ ad1848_filter_cd_audio(int channel, double *buffer, void *priv)
}
void
ad1848_filter_aux2(void *priv, double *out_l, double *out_r)
ad1848_filter_channel(void *priv, int channel, double *out_l, double *out_r)
{
const ad1848_t *ad1848 = (ad1848_t *) priv;
if (ad1848->regs[4] & 0x80) {
const int max_channel = (ad1848->type >= AD1848_TYPE_CS4231) ? 31 : 15;
if (channel > max_channel)
channel = max_channel;
if (ad1848->regs[channel] & 0x80) {
*out_l = 0.0;
} else {
*out_l = ((*out_l) * ad1848_vols_5bits_aux_gain[ad1848->regs[4] & 0x1f]) / 65536.0;
*out_l = ((*out_l) * ad1848_vols_5bits_aux_gain[ad1848->regs[channel] & 0x1f]) / 65536.0;
}
if (ad1848->regs[5] & 0x80) {
if (ad1848->regs[channel + 1] & 0x80) {
*out_r = 0.0;
} else {
*out_r = ((*out_r) * ad1848_vols_5bits_aux_gain[ad1848->regs[5] & 0x1f]) / 65536.0;
*out_r = ((*out_r) * ad1848_vols_5bits_aux_gain[ad1848->regs[channel + 1] & 0x1f]) / 65536.0;
}
}

View File

@@ -85,7 +85,7 @@ optimc_filter_opl(void *priv, double *out_l, double *out_r)
if (optimc->cur_wss_enabled) {
*out_l /= optimc->sb->mixer_sbpro.fm_l;
*out_r /= optimc->sb->mixer_sbpro.fm_r;
ad1848_filter_aux2((void *) &optimc->ad1848, out_l, out_r);
ad1848_filter_channel((void *) &optimc->ad1848, AD1848_AUX2, out_l, out_r);
}
}