mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-12-30 11:08:50 -05:00
move flat volume logic into the core. while doing so add n_volume_steps field to sinks/sources
This commit is contained in:
parent
4bfa5d7d13
commit
d5f46e824e
32 changed files with 562 additions and 361 deletions
|
|
@ -73,10 +73,11 @@ struct pa_source {
|
|||
unsigned n_corked;
|
||||
pa_sink *monitor_of; /* may be NULL */
|
||||
|
||||
pa_cvolume volume;
|
||||
pa_bool_t muted;
|
||||
|
||||
pa_volume_t base_volume; /* shall be constant */
|
||||
unsigned n_volume_steps; /* shall be constant */
|
||||
|
||||
pa_cvolume virtual_volume, soft_volume;
|
||||
pa_bool_t muted:1;
|
||||
|
||||
pa_bool_t refresh_volume:1;
|
||||
pa_bool_t refresh_muted:1;
|
||||
|
|
@ -95,23 +96,23 @@ struct pa_source {
|
|||
* context. If this is NULL a PA_SOURCE_MESSAGE_GET_VOLUME message
|
||||
* will be sent to the IO thread instead. If refresh_volume is
|
||||
* FALSE neither this function is called nor a message is sent. */
|
||||
int (*get_volume)(pa_source *s); /* dito */
|
||||
void (*get_volume)(pa_source *s); /* dito */
|
||||
|
||||
/* Called when the volume shall be changed. Called from main loop
|
||||
* context. If this is NULL a PA_SOURCE_MESSAGE_SET_VOLUME message
|
||||
* will be sent to the IO thread instead. */
|
||||
int (*set_volume)(pa_source *s); /* dito */
|
||||
void (*set_volume)(pa_source *s); /* dito */
|
||||
|
||||
/* Called when the mute setting is queried. Called from main loop
|
||||
* context. If this is NULL a PA_SOURCE_MESSAGE_GET_MUTE message
|
||||
* will be sent to the IO thread instead. If refresh_mute is
|
||||
* FALSE neither this function is called nor a message is sent.*/
|
||||
int (*get_mute)(pa_source *s); /* dito */
|
||||
void (*get_mute)(pa_source *s); /* dito */
|
||||
|
||||
/* Called when the mute setting shall be changed. Called from main
|
||||
* loop context. If this is NULL a PA_SOURCE_MESSAGE_SET_MUTE
|
||||
* message will be sent to the IO thread instead. */
|
||||
int (*set_mute)(pa_source *s); /* dito */
|
||||
void (*set_mute)(pa_source *s); /* dito */
|
||||
|
||||
/* Called when a the requested latency is changed. Called from IO
|
||||
* thread context. */
|
||||
|
|
@ -122,6 +123,7 @@ struct pa_source {
|
|||
struct {
|
||||
pa_source_state_t state;
|
||||
pa_hashmap *outputs;
|
||||
|
||||
pa_cvolume soft_volume;
|
||||
pa_bool_t soft_muted:1;
|
||||
|
||||
|
|
@ -189,7 +191,7 @@ void pa_source_new_data_set_volume(pa_source_new_data *data, const pa_cvolume *v
|
|||
void pa_source_new_data_set_muted(pa_source_new_data *data, pa_bool_t mute);
|
||||
void pa_source_new_data_done(pa_source_new_data *data);
|
||||
|
||||
/* To be called exclusively by the source driver, from main context */
|
||||
/*** To be called exclusively by the source driver, from main context */
|
||||
|
||||
pa_source* pa_source_new(
|
||||
pa_core *core,
|
||||
|
|
@ -208,7 +210,9 @@ void pa_source_set_latency_range(pa_source *s, pa_usec_t min_latency, pa_usec_t
|
|||
void pa_source_detach(pa_source *s);
|
||||
void pa_source_attach(pa_source *s);
|
||||
|
||||
/* May be called by everyone, from main context */
|
||||
void pa_source_set_soft_volume(pa_source *s, const pa_cvolume *volume);
|
||||
|
||||
/*** May be called by everyone, from main context */
|
||||
|
||||
/* The returned value is supposed to be in the time domain of the sound card! */
|
||||
pa_usec_t pa_source_get_latency(pa_source *s);
|
||||
|
|
@ -222,7 +226,6 @@ int pa_source_suspend(pa_source *s, pa_bool_t suspend);
|
|||
int pa_source_suspend_all(pa_core *c, pa_bool_t suspend);
|
||||
|
||||
void pa_source_set_volume(pa_source *source, const pa_cvolume *volume);
|
||||
void pa_source_set_soft_volume(pa_source *s, const pa_cvolume *volume);
|
||||
const pa_cvolume *pa_source_get_volume(pa_source *source, pa_bool_t force_refresh);
|
||||
void pa_source_set_mute(pa_source *source, pa_bool_t mute);
|
||||
pa_bool_t pa_source_get_mute(pa_source *source, pa_bool_t force_refresh);
|
||||
|
|
@ -239,7 +242,7 @@ pa_queue *pa_source_move_all_start(pa_source *s);
|
|||
void pa_source_move_all_finish(pa_source *s, pa_queue *q);
|
||||
void pa_source_move_all_fail(pa_queue *q);
|
||||
|
||||
/* To be called exclusively by the source driver, from IO context */
|
||||
/*** To be called exclusively by the source driver, from IO context */
|
||||
|
||||
void pa_source_post(pa_source*s, const pa_memchunk *chunk);
|
||||
void pa_source_post_direct(pa_source*s, pa_source_output *o, const pa_memchunk *chunk);
|
||||
|
|
@ -255,7 +258,7 @@ pa_usec_t pa_source_get_requested_latency_within_thread(pa_source *s);
|
|||
void pa_source_set_max_rewind(pa_source *s, size_t max_rewind);
|
||||
void pa_source_update_latency_range(pa_source *s, pa_usec_t min_latency, pa_usec_t max_latency);
|
||||
|
||||
/* To be called exclusively by source output drivers, from IO context */
|
||||
/*** To be called exclusively by source output drivers, from IO context */
|
||||
|
||||
void pa_source_invalidate_requested_latency(pa_source *s);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue