alsa: pause/resume when entering/exiting freewheel

When we start freewheeling, pause the device and resume when we
finish freewheel.
In freewheel mode, just discard samples in the sink and produce
silence in the source.
This commit is contained in:
Wim Taymans 2021-05-07 11:51:22 +02:00
parent a80ec36ad5
commit 02decd9fba
4 changed files with 62 additions and 16 deletions

View file

@ -167,6 +167,7 @@ struct state {
unsigned int resample:1;
unsigned int use_mmap:1;
unsigned int planar:1;
unsigned int freewheel:1;
int64_t sample_count;
@ -195,7 +196,8 @@ int spa_alsa_pause(struct state *state);
int spa_alsa_close(struct state *state);
int spa_alsa_write(struct state *state);
int spa_alsa_read(struct state *state, snd_pcm_uframes_t silence);
int spa_alsa_read(struct state *state);
int spa_alsa_skip(struct state *state);
void spa_alsa_recycle_buffer(struct state *state, uint32_t buffer_id);