Get voice event out of playback.c

Purpose: A step in removing all voice references from playback code
and prelude to other changes.

Change-Id: Ic3ad7f7a33b979693e18a3456ced37eb1d2281a4
This commit is contained in:
Michael Sevakis 2017-12-12 20:14:34 -05:00
parent 838ff9c67d
commit c8564f1ca8
5 changed files with 19 additions and 12 deletions

View file

@ -52,9 +52,13 @@ enum {
/* Next track medadata was just loaded
data = &(struct track_event){} */
PLAYBACK_EVENT_NEXTTRACKID3_AVAILABLE,
};
/** VOICE events **/
enum {
/* Voice is playing
data = &(bool){true|false} */
PLAYBACK_EVENT_VOICE_PLAYING,
VOICE_EVENT_IS_PLAYING = (EVENT_CLASS_VOICE|1),
};
/** Buffering events **/

View file

@ -27,6 +27,8 @@
#include "usb.h"
#include "pcm.h"
#include "sound.h"
#include "pcmbuf.h"
#include "appevents.h"
#include "audio_thread.h"
#ifdef AUDIO_HAVE_RECORDING
#include "pcm_record.h"
@ -108,6 +110,13 @@ static void NORETURN_ATTR audio_thread(void)
}
}
void audio_voice_event(unsigned short id, void *data)
{
(void)id;
/* Make audio play softly while voice is speaking */
pcmbuf_soft_mode(*(bool *)data);
}
void audio_queue_post(long id, intptr_t data)
{
queue_post(&audio_queue, id, data);
@ -170,6 +179,8 @@ void INIT_ATTR audio_init(void)
recording_init();
#endif
add_event(VOICE_EVENT_IS_PLAYING, audio_voice_event);
/* Probably safe to say */
audio_is_initialized = true;

View file

@ -355,14 +355,6 @@ void audio_pcmbuf_sync_position(void);
/**************************************/
/** --- voice event --- **/
void playback_voice_event(unsigned short id, void *data)
{
(void)id;
/* Make audio play softly while voice is speaking */
pcmbuf_soft_mode(*(bool *)data);
}
/** --- MP3Entry --- **/
/* Does the mp3entry have enough info for us to use it? */
@ -3888,7 +3880,6 @@ void INIT_ATTR playback_init(void)
track_list_init();
buffering_init();
pcmbuf_update_frequency();
add_event(PLAYBACK_EVENT_VOICE_PLAYING, playback_voice_event);
#ifdef HAVE_CROSSFADE
/* Set crossfade setting for next buffer init which should be about... */
pcmbuf_request_crossfade_enable(global_settings.crossfade);

View file

@ -372,7 +372,7 @@ static enum voice_state voice_message(struct voice_thread_data *td)
{
voice_playing = true;
dsp_configure(td->dsp, DSP_SET_OUT_FREQUENCY, mixer_get_frequency());
send_event(PLAYBACK_EVENT_VOICE_PLAYING, &voice_playing);
send_event(VOICE_EVENT_IS_PLAYING, &voice_playing);
}
quiet_counter = QUIET_COUNT;
@ -406,7 +406,7 @@ static enum voice_state voice_message(struct voice_thread_data *td)
if (quiet_counter <= 0)
{
voice_playing = false;
send_event(PLAYBACK_EVENT_VOICE_PLAYING, &voice_playing);
send_event(VOICE_EVENT_IS_PLAYING, &voice_playing);
}
break;
}

View file

@ -51,6 +51,7 @@
#define EVENT_CLASS_GUI 0x0800
#define EVENT_CLASS_RECORDING 0x1000
#define EVENT_CLASS_LCD 0x2000
#define EVENT_CLASS_VOICE 0x4000
/**
* Subscribe to an event with a simple callback. The callback will be called