mirror of
				https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
				synced 2025-11-03 09:01: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