mirror of
https://github.com/Rockbox/rockbox.git
synced 2026-05-12 11:43:16 -04:00
plugins: Fix muted mixer channel (FS#13809)
Fixes regression where you may not have heard
any audio from some of the plugins modified by
commit 017dd72, due to the playback channel not
being unmuted.
Change-Id: Iaa184161c79d353dff6ef9bf3e0b39778c8b1bcd
This commit is contained in:
parent
d1abd788d0
commit
7960dbb9a7
10 changed files with 30 additions and 7 deletions
|
|
@ -474,6 +474,7 @@ void I_SubmitSound(void)
|
||||||
|
|
||||||
void I_ShutdownSound(void)
|
void I_ShutdownSound(void)
|
||||||
{
|
{
|
||||||
|
rb->pcmbuf_fade(false, false); /* Mute channel */
|
||||||
rb->mixer_channel_stop(PCM_MIXER_CHAN_PLAYBACK);
|
rb->mixer_channel_stop(PCM_MIXER_CHAN_PLAYBACK);
|
||||||
rb->mixer_set_frequency(HW_SAMPR_DEFAULT);
|
rb->mixer_set_frequency(HW_SAMPR_DEFAULT);
|
||||||
}
|
}
|
||||||
|
|
@ -508,6 +509,7 @@ void I_InitSound()
|
||||||
rb->audio_set_output_source(AUDIO_SRC_PLAYBACK);
|
rb->audio_set_output_source(AUDIO_SRC_PLAYBACK);
|
||||||
#endif
|
#endif
|
||||||
rb->mixer_set_frequency(samplerate);
|
rb->mixer_set_frequency(samplerate);
|
||||||
|
rb->pcmbuf_fade(false, true); /* Be sure channel is audible */
|
||||||
|
|
||||||
vol_lookup=malloc(128*256*sizeof(int));
|
vol_lookup=malloc(128*256*sizeof(int));
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -787,7 +787,6 @@ static bool beating = false; /* A beat is/was playing and count needs to increas
|
||||||
static int display_state = 0; /* Current display state code. */
|
static int display_state = 0; /* Current display state code. */
|
||||||
static bool display_trigger = false; /* Draw display on next occasion */
|
static bool display_trigger = false; /* Draw display on next occasion */
|
||||||
|
|
||||||
static bool sound_active = false;
|
|
||||||
static bool sound_paused = true;
|
static bool sound_paused = true;
|
||||||
|
|
||||||
/* global static buffer for messages in any situation */
|
/* global static buffer for messages in any situation */
|
||||||
|
|
@ -1168,7 +1167,7 @@ static void timer_callback(void)
|
||||||
if(minitick >= period)
|
if(minitick >= period)
|
||||||
{
|
{
|
||||||
minitick = 0;
|
minitick = 0;
|
||||||
if(!sound_active && !sound_paused && !tap_count)
|
if(!sound_paused && !tap_count)
|
||||||
{
|
{
|
||||||
sound_trigger = true;
|
sound_trigger = true;
|
||||||
rb->reset_poweroff_timer();
|
rb->reset_poweroff_timer();
|
||||||
|
|
@ -1213,6 +1212,7 @@ static void cleanup(void)
|
||||||
if(fd >= 0) rb->close(fd);
|
if(fd >= 0) rb->close(fd);
|
||||||
|
|
||||||
metronome_pause();
|
metronome_pause();
|
||||||
|
rb->pcmbuf_fade(false, false); /* Mute channel */
|
||||||
rb->mixer_channel_stop(PCM_MIXER_CHAN_PLAYBACK);
|
rb->mixer_channel_stop(PCM_MIXER_CHAN_PLAYBACK);
|
||||||
tweak_volume(0);
|
tweak_volume(0);
|
||||||
rb->led(0);
|
rb->led(0);
|
||||||
|
|
@ -1561,6 +1561,7 @@ enum plugin_status plugin_start(const void* file)
|
||||||
rb->audio_set_output_source(AUDIO_SRC_PLAYBACK);
|
rb->audio_set_output_source(AUDIO_SRC_PLAYBACK);
|
||||||
#endif
|
#endif
|
||||||
rb->mixer_set_frequency(SAMPR_44);
|
rb->mixer_set_frequency(SAMPR_44);
|
||||||
|
rb->pcmbuf_fade(false, true); /* Be sure channel is audible */
|
||||||
|
|
||||||
if(file)
|
if(file)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -411,6 +411,7 @@ static void start_sound(void)
|
||||||
.get_more = get_more,
|
.get_more = get_more,
|
||||||
};
|
};
|
||||||
rb->mixer_set_frequency(caps->samprs[sr_index]);
|
rb->mixer_set_frequency(caps->samprs[sr_index]);
|
||||||
|
rb->pcmbuf_fade(false, true); /* Be sure channel is audible */
|
||||||
rb->mixer_channel_play_data(PCM_MIXER_CHAN_PLAYBACK, &cbs, NULL, 0);
|
rb->mixer_channel_play_data(PCM_MIXER_CHAN_PLAYBACK, &cbs, NULL, 0);
|
||||||
|
|
||||||
sound_playing = true;
|
sound_playing = true;
|
||||||
|
|
@ -424,6 +425,7 @@ static void stop_sound(void)
|
||||||
if (!sound_playing)
|
if (!sound_playing)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
rb->pcmbuf_fade(false, false); /* Mute channel */
|
||||||
rb->mixer_channel_stop(PCM_MIXER_CHAN_PLAYBACK);
|
rb->mixer_channel_stop(PCM_MIXER_CHAN_PLAYBACK);
|
||||||
rb->mixer_set_frequency(HW_SAMPR_DEFAULT);
|
rb->mixer_set_frequency(HW_SAMPR_DEFAULT);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -65,6 +65,9 @@ void rockbox_open_audio(int rate)
|
||||||
/* Set sample rate of the audio buffer. */
|
/* Set sample rate of the audio buffer. */
|
||||||
rb->mixer_set_frequency(rate);
|
rb->mixer_set_frequency(rate);
|
||||||
|
|
||||||
|
/* Be sure channel is audible */
|
||||||
|
rb->pcmbuf_fade(false, true);
|
||||||
|
|
||||||
/* Initialize output buffer. */
|
/* Initialize output buffer. */
|
||||||
for(i = 0; i < OUTBUFSIZE; i++)
|
for(i = 0; i < OUTBUFSIZE; i++)
|
||||||
outbuf[i].fill = 0;
|
outbuf[i].fill = 0;
|
||||||
|
|
@ -77,6 +80,9 @@ void rockbox_open_audio(int rate)
|
||||||
/* Close audio. */
|
/* Close audio. */
|
||||||
void rockbox_close_audio(void)
|
void rockbox_close_audio(void)
|
||||||
{
|
{
|
||||||
|
/* Mute channel */
|
||||||
|
rb->pcmbuf_fade(false, false);
|
||||||
|
|
||||||
/* Stop playback. */
|
/* Stop playback. */
|
||||||
rb->mixer_channel_stop(PCM_MIXER_CHAN_PLAYBACK);
|
rb->mixer_channel_stop(PCM_MIXER_CHAN_PLAYBACK);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -56,12 +56,14 @@ void rockboy_pcm_init(void)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
rb->mixer_set_frequency(pcm.hz); /* 44100 22050 11025 */
|
rb->mixer_set_frequency(pcm.hz); /* 44100 22050 11025 */
|
||||||
|
rb->pcmbuf_fade(false, true); /* Be sure channel is audible */
|
||||||
}
|
}
|
||||||
|
|
||||||
void rockboy_pcm_close(void)
|
void rockboy_pcm_close(void)
|
||||||
{
|
{
|
||||||
memset(&pcm, 0, sizeof pcm);
|
memset(&pcm, 0, sizeof pcm);
|
||||||
newly_started = true;
|
newly_started = true;
|
||||||
|
rb->pcmbuf_fade(false, false); /* Mute channel */
|
||||||
rb->mixer_channel_stop(PCM_MIXER_CHAN_PLAYBACK);
|
rb->mixer_channel_stop(PCM_MIXER_CHAN_PLAYBACK);
|
||||||
rb->mixer_set_frequency(HW_SAMPR_DEFAULT);
|
rb->mixer_set_frequency(HW_SAMPR_DEFAULT);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -215,6 +215,7 @@ static Uint8 *ROCKBOXAUD_GetAudioBuf(_THIS)
|
||||||
|
|
||||||
static void ROCKBOXAUD_CloseAudio(_THIS)
|
static void ROCKBOXAUD_CloseAudio(_THIS)
|
||||||
{
|
{
|
||||||
|
rb->pcmbuf_fade(false, false); /* Mute channel */
|
||||||
rb->mixer_channel_stop(PCM_MIXER_CHAN_PLAYBACK);
|
rb->mixer_channel_stop(PCM_MIXER_CHAN_PLAYBACK);
|
||||||
if ( this->hidden->mixbuf != NULL ) {
|
if ( this->hidden->mixbuf != NULL ) {
|
||||||
SDL_FreeAudioMem(this->hidden->mixbuf);
|
SDL_FreeAudioMem(this->hidden->mixbuf);
|
||||||
|
|
@ -260,6 +261,7 @@ static int ROCKBOXAUD_OpenAudio(_THIS, SDL_AudioSpec *spec)
|
||||||
|
|
||||||
LOGF("samplerate %d", spec->freq);
|
LOGF("samplerate %d", spec->freq);
|
||||||
rb->mixer_set_frequency(spec->freq);
|
rb->mixer_set_frequency(spec->freq);
|
||||||
|
rb->pcmbuf_fade(false, true); /* Be sure channel is audible */
|
||||||
|
|
||||||
/* Allocate mixing buffer */
|
/* Allocate mixing buffer */
|
||||||
this->hidden->mixlen = spec->size;
|
this->hidden->mixlen = spec->size;
|
||||||
|
|
|
||||||
|
|
@ -214,6 +214,7 @@ static void play_tone(bool volume_set)
|
||||||
#if INPUT_SRC_CAPS != 0
|
#if INPUT_SRC_CAPS != 0
|
||||||
/* Select playback */
|
/* Select playback */
|
||||||
rb->audio_set_input_source(AUDIO_SRC_PLAYBACK, SRCF_PLAYBACK);
|
rb->audio_set_input_source(AUDIO_SRC_PLAYBACK, SRCF_PLAYBACK);
|
||||||
|
rb->audio_set_output_source(AUDIO_SRC_PLAYBACK);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_ADJUSTABLE_CPU_FREQ
|
#ifdef HAVE_ADJUSTABLE_CPU_FREQ
|
||||||
|
|
@ -221,11 +222,7 @@ static void play_tone(bool volume_set)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
rb->mixer_set_frequency(hw_sampr);
|
rb->mixer_set_frequency(hw_sampr);
|
||||||
|
rb->pcmbuf_fade(false, true); /* Be sure channel is audible */
|
||||||
#if INPUT_SRC_CAPS != 0
|
|
||||||
/* Recordable targets can play back from other sources */
|
|
||||||
rb->audio_set_output_source(AUDIO_SRC_PLAYBACK);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
gen_quit = false;
|
gen_quit = false;
|
||||||
output_clear();
|
output_clear();
|
||||||
|
|
@ -263,6 +260,7 @@ static void play_tone(bool volume_set)
|
||||||
|
|
||||||
rb->thread_wait(gen_thread_id);
|
rb->thread_wait(gen_thread_id);
|
||||||
|
|
||||||
|
rb->pcmbuf_fade(false, false); /* Mute channel */
|
||||||
rb->mixer_channel_stop(PCM_MIXER_CHAN_PLAYBACK);
|
rb->mixer_channel_stop(PCM_MIXER_CHAN_PLAYBACK);
|
||||||
|
|
||||||
#ifdef HAVE_ADJUSTABLE_CPU_FREQ
|
#ifdef HAVE_ADJUSTABLE_CPU_FREQ
|
||||||
|
|
|
||||||
|
|
@ -257,6 +257,9 @@ bool syssnd_init(void)
|
||||||
|
|
||||||
rb->mixer_set_frequency(HW_FREQ_44);
|
rb->mixer_set_frequency(HW_FREQ_44);
|
||||||
|
|
||||||
|
/* Be sure channel is audible */
|
||||||
|
rb->pcmbuf_fade(false, true);
|
||||||
|
|
||||||
rb->memset(channels, 0, sizeof(channels));
|
rb->memset(channels, 0, sizeof(channels));
|
||||||
rb->memset(mixBuffers, 0, sizeof(mixBuffers));
|
rb->memset(mixBuffers, 0, sizeof(mixBuffers));
|
||||||
|
|
||||||
|
|
@ -280,6 +283,9 @@ void syssnd_shutdown(void)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Mute channel */
|
||||||
|
rb->pcmbuf_fade(false, false);
|
||||||
|
|
||||||
/* Stop playback. */
|
/* Stop playback. */
|
||||||
rb->mixer_channel_stop(PCM_MIXER_CHAN_PLAYBACK);
|
rb->mixer_channel_stop(PCM_MIXER_CHAN_PLAYBACK);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1032,12 +1032,14 @@ void sys_startAudio(struct System* sys, AudioCallback callback, void *param)
|
||||||
static const struct mixer_play_cbs cbs = {
|
static const struct mixer_play_cbs cbs = {
|
||||||
.get_more = get_more,
|
.get_more = get_more,
|
||||||
};
|
};
|
||||||
|
rb->pcmbuf_fade(false, true); /* Be sure channel is audible */
|
||||||
rb->mixer_channel_play_data(PCM_MIXER_CHAN_PLAYBACK, &cbs, NULL, 0);
|
rb->mixer_channel_play_data(PCM_MIXER_CHAN_PLAYBACK, &cbs, NULL, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void sys_stopAudio(struct System* sys)
|
void sys_stopAudio(struct System* sys)
|
||||||
{
|
{
|
||||||
(void) sys;
|
(void) sys;
|
||||||
|
rb->pcmbuf_fade(false, false); /* Mute channel */
|
||||||
rb->mixer_channel_stop(PCM_MIXER_CHAN_PLAYBACK);
|
rb->mixer_channel_stop(PCM_MIXER_CHAN_PLAYBACK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -112,12 +112,14 @@ static void open_snd(void)
|
||||||
rb->audio_set_output_source(AUDIO_SRC_PLAYBACK);
|
rb->audio_set_output_source(AUDIO_SRC_PLAYBACK);
|
||||||
#endif
|
#endif
|
||||||
rb->mixer_set_frequency(SAMPR_44);
|
rb->mixer_set_frequency(SAMPR_44);
|
||||||
|
rb->pcmbuf_fade(false, true); /* Be sure channel is audible */
|
||||||
}
|
}
|
||||||
|
|
||||||
static void close_snd(int normal)
|
static void close_snd(int normal)
|
||||||
{
|
{
|
||||||
(void)normal;
|
(void)normal;
|
||||||
sound_avail = 0;
|
sound_avail = 0;
|
||||||
|
rb->pcmbuf_fade(false, false); /* Mute channel */
|
||||||
rb->mixer_channel_stop(PCM_MIXER_CHAN_PLAYBACK);
|
rb->mixer_channel_stop(PCM_MIXER_CHAN_PLAYBACK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue