mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-12-29 11:08:35 -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
|
|
@ -71,11 +71,11 @@ struct pa_sink {
|
|||
unsigned n_corked;
|
||||
pa_source *monitor_source;
|
||||
|
||||
pa_cvolume volume;
|
||||
pa_cvolume virtual_volume;
|
||||
pa_bool_t muted;
|
||||
pa_volume_t base_volume; /* shall be constant */
|
||||
unsigned n_volume_steps; /* shall be constant */
|
||||
|
||||
pa_volume_t base_volume; /* 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;
|
||||
|
|
@ -94,23 +94,23 @@ struct pa_sink {
|
|||
* context. If this is NULL a PA_SINK_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_sink *s); /* may be NULL */
|
||||
void (*get_volume)(pa_sink *s); /* may be NULL */
|
||||
|
||||
/* Called when the volume shall be changed. Called from main loop
|
||||
* context. If this is NULL a PA_SINK_MESSAGE_SET_VOLUME message
|
||||
* will be sent to the IO thread instead. */
|
||||
int (*set_volume)(pa_sink *s); /* dito */
|
||||
void (*set_volume)(pa_sink *s); /* dito */
|
||||
|
||||
/* Called when the mute setting is queried. Called from main loop
|
||||
* context. If this is NULL a PA_SINK_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_sink *s); /* dito */
|
||||
void (*get_mute)(pa_sink *s); /* dito */
|
||||
|
||||
/* Called when the mute setting shall be changed. Called from main
|
||||
* loop context. If this is NULL a PA_SINK_MESSAGE_SET_MUTE
|
||||
* message will be sent to the IO thread instead. */
|
||||
int (*set_mute)(pa_sink *s); /* dito */
|
||||
void (*set_mute)(pa_sink *s); /* dito */
|
||||
|
||||
/* Called when a rewind request is issued. Called from IO thread
|
||||
* context. */
|
||||
|
|
@ -125,6 +125,7 @@ struct pa_sink {
|
|||
struct {
|
||||
pa_sink_state_t state;
|
||||
pa_hashmap *inputs;
|
||||
|
||||
pa_cvolume soft_volume;
|
||||
pa_bool_t soft_muted:1;
|
||||
|
||||
|
|
@ -203,13 +204,7 @@ void pa_sink_new_data_set_volume(pa_sink_new_data *data, const pa_cvolume *volum
|
|||
void pa_sink_new_data_set_muted(pa_sink_new_data *data, pa_bool_t mute);
|
||||
void pa_sink_new_data_done(pa_sink_new_data *data);
|
||||
|
||||
typedef struct pa_sink_set_volume_data {
|
||||
pa_sink *sink;
|
||||
pa_cvolume volume;
|
||||
pa_cvolume virtual_volume;
|
||||
} pa_sink_set_volume_data;
|
||||
|
||||
/* To be called exclusively by the sink driver, from main context */
|
||||
/*** To be called exclusively by the sink driver, from main context */
|
||||
|
||||
pa_sink* pa_sink_new(
|
||||
pa_core *core,
|
||||
|
|
@ -228,7 +223,9 @@ void pa_sink_set_latency_range(pa_sink *s, pa_usec_t min_latency, pa_usec_t max_
|
|||
void pa_sink_detach(pa_sink *s);
|
||||
void pa_sink_attach(pa_sink *s);
|
||||
|
||||
/* May be called by everyone, from main context */
|
||||
void pa_sink_set_soft_volume(pa_sink *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_sink_get_latency(pa_sink *s);
|
||||
|
|
@ -242,11 +239,13 @@ int pa_sink_update_status(pa_sink*s);
|
|||
int pa_sink_suspend(pa_sink *s, pa_bool_t suspend);
|
||||
int pa_sink_suspend_all(pa_core *c, pa_bool_t suspend);
|
||||
|
||||
void pa_sink_set_volume(pa_sink *sink, const pa_cvolume *volume);
|
||||
void pa_sink_set_soft_volume(pa_sink *s, const pa_cvolume *volume);
|
||||
void pa_sink_update_flat_volume(pa_sink *s, pa_cvolume *new_volume);
|
||||
void pa_sink_propagate_flat_volume(pa_sink *s, const pa_cvolume *old_volume);
|
||||
|
||||
void pa_sink_set_volume(pa_sink *sink, const pa_cvolume *volume, pa_bool_t propagate, pa_bool_t sendmsg);
|
||||
const pa_cvolume *pa_sink_get_volume(pa_sink *sink, pa_bool_t force_refresh);
|
||||
void pa_sink_set_mute(pa_sink *sink, pa_bool_t mute);
|
||||
pa_bool_t pa_sink_get_mute(pa_sink *sink, pa_bool_t force_refres);
|
||||
pa_bool_t pa_sink_get_mute(pa_sink *sink, pa_bool_t force_refresh);
|
||||
|
||||
pa_bool_t pa_sink_update_proplist(pa_sink *s, pa_update_mode_t mode, pa_proplist *p);
|
||||
|
||||
|
|
@ -260,7 +259,7 @@ pa_queue *pa_sink_move_all_start(pa_sink *s);
|
|||
void pa_sink_move_all_finish(pa_sink *s, pa_queue *q);
|
||||
void pa_sink_move_all_fail(pa_queue *q);
|
||||
|
||||
/* To be called exclusively by the sink driver, from IO context */
|
||||
/*** To be called exclusively by the sink driver, from IO context */
|
||||
|
||||
void pa_sink_render(pa_sink*s, size_t length, pa_memchunk *result);
|
||||
void pa_sink_render_full(pa_sink *s, size_t length, pa_memchunk *result);
|
||||
|
|
@ -281,7 +280,7 @@ void pa_sink_set_max_request(pa_sink *s, size_t max_request);
|
|||
|
||||
void pa_sink_update_latency_range(pa_sink *s, pa_usec_t min_latency, pa_usec_t max_latency);
|
||||
|
||||
/* To be called exclusively by sink input drivers, from IO context */
|
||||
/*** To be called exclusively by sink input drivers, from IO context */
|
||||
|
||||
void pa_sink_request_rewind(pa_sink*s, size_t nbytes);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue