mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-11-28 07:00:13 -05:00
sink, source: Add an avoid-processing mode
This generalises the avoid-resampling concept (don't resample for any rate above the default/alternate sample rate) to include channel count and sample format as well. The rationale for this is that users who wish to send out their data untouched by processing in PulseAudio can do so. In addition to this, there are opportunities for certain hardware (such as systems with a DSP connected to a codec) to offload processing to the DSP (providing potential cost savings). Finally, this also enables modules that might be able to perform transformations of (ANY -> sink format), and this allows us to implement such transformations.
This commit is contained in:
parent
cbaf278f1e
commit
01c26546fa
14 changed files with 121 additions and 14 deletions
|
|
@ -82,9 +82,10 @@ struct pa_source {
|
|||
|
||||
pa_sample_spec sample_spec;
|
||||
pa_channel_map channel_map;
|
||||
uint32_t default_sample_rate;
|
||||
pa_sample_spec default_sample_spec;
|
||||
uint32_t alternate_sample_rate;
|
||||
bool avoid_resampling:1;
|
||||
bool avoid_processing:1;
|
||||
|
||||
pa_idxset *outputs;
|
||||
unsigned n_corked;
|
||||
|
|
@ -319,6 +320,7 @@ typedef struct pa_source_new_data {
|
|||
pa_channel_map channel_map;
|
||||
uint32_t alternate_sample_rate;
|
||||
bool avoid_resampling:1;
|
||||
bool avoid_processing:1;
|
||||
pa_cvolume volume;
|
||||
bool muted:1;
|
||||
|
||||
|
|
@ -328,6 +330,7 @@ typedef struct pa_source_new_data {
|
|||
bool channel_map_is_set:1;
|
||||
bool alternate_sample_rate_is_set:1;
|
||||
bool avoid_resampling_is_set:1;
|
||||
bool avoid_processing_is_set:1;
|
||||
|
||||
bool namereg_fail:1;
|
||||
|
||||
|
|
@ -342,6 +345,7 @@ void pa_source_new_data_set_sample_spec(pa_source_new_data *data, const pa_sampl
|
|||
void pa_source_new_data_set_channel_map(pa_source_new_data *data, const pa_channel_map *map);
|
||||
void pa_source_new_data_set_alternate_sample_rate(pa_source_new_data *data, const uint32_t alternate_sample_rate);
|
||||
void pa_source_new_data_set_avoid_resampling(pa_source_new_data *data, bool avoid_resampling);
|
||||
void pa_source_new_data_set_avoid_processing(pa_source_new_data *data, bool avoid_processing);
|
||||
void pa_source_new_data_set_volume(pa_source_new_data *data, const pa_cvolume *volume);
|
||||
void pa_source_new_data_set_muted(pa_source_new_data *data, bool mute);
|
||||
void pa_source_new_data_set_port(pa_source_new_data *data, const char *port);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue