mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-11-01 22:58:47 -04:00
volume: introduce pa_cvolume_min() and pa_cvolume_min_mask()
This commit is contained in:
parent
8f928b2e57
commit
d634555a3e
3 changed files with 51 additions and 2 deletions
|
|
@ -131,6 +131,8 @@ pa_cvolume_init;
|
|||
pa_cvolume_max;
|
||||
pa_cvolume_max_mask;
|
||||
pa_cvolume_merge;
|
||||
pa_cvolume_min;
|
||||
pa_cvolume_min_mask;
|
||||
pa_cvolume_remap;
|
||||
pa_cvolume_scale;
|
||||
pa_cvolume_scale_mask;
|
||||
|
|
|
|||
|
|
@ -126,7 +126,7 @@ pa_volume_t pa_cvolume_avg_mask(const pa_cvolume *a, const pa_channel_map *cm, p
|
|||
}
|
||||
|
||||
pa_volume_t pa_cvolume_max(const pa_cvolume *a) {
|
||||
pa_volume_t m = 0;
|
||||
pa_volume_t m = PA_VOLUME_MUTED;
|
||||
unsigned c;
|
||||
|
||||
pa_assert(a);
|
||||
|
|
@ -139,8 +139,22 @@ pa_volume_t pa_cvolume_max(const pa_cvolume *a) {
|
|||
return m;
|
||||
}
|
||||
|
||||
pa_volume_t pa_cvolume_min(const pa_cvolume *a) {
|
||||
pa_volume_t m = (pa_volume_t) -1;
|
||||
unsigned c;
|
||||
|
||||
pa_assert(a);
|
||||
pa_return_val_if_fail(pa_cvolume_valid(a), PA_VOLUME_MUTED);
|
||||
|
||||
for (c = 0; c < a->channels; c++)
|
||||
if (m == (pa_volume_t) -1 || a->values[c] < m)
|
||||
m = a->values[c];
|
||||
|
||||
return m;
|
||||
}
|
||||
|
||||
pa_volume_t pa_cvolume_max_mask(const pa_cvolume *a, const pa_channel_map *cm, pa_channel_position_mask_t mask) {
|
||||
pa_volume_t m = 0;
|
||||
pa_volume_t m = PA_VOLUME_MUTED;
|
||||
unsigned c, n;
|
||||
|
||||
pa_assert(a);
|
||||
|
|
@ -162,6 +176,29 @@ pa_volume_t pa_cvolume_max_mask(const pa_cvolume *a, const pa_channel_map *cm, p
|
|||
return m;
|
||||
}
|
||||
|
||||
pa_volume_t pa_cvolume_min_mask(const pa_cvolume *a, const pa_channel_map *cm, pa_channel_position_mask_t mask) {
|
||||
pa_volume_t m = (pa_volume_t) -1;
|
||||
unsigned c, n;
|
||||
|
||||
pa_assert(a);
|
||||
|
||||
if (!cm)
|
||||
return pa_cvolume_min(a);
|
||||
|
||||
pa_return_val_if_fail(pa_cvolume_compatible_with_channel_map(a, cm), PA_VOLUME_MUTED);
|
||||
|
||||
for (c = n = 0; c < a->channels; c++) {
|
||||
|
||||
if (!(PA_CHANNEL_POSITION_MASK(cm->map[c]) & mask))
|
||||
continue;
|
||||
|
||||
if (m == (pa_volume_t) -1 || a->values[c] < m)
|
||||
m = a->values[c];
|
||||
}
|
||||
|
||||
return m;
|
||||
}
|
||||
|
||||
pa_volume_t pa_sw_volume_multiply(pa_volume_t a, pa_volume_t b) {
|
||||
return pa_sw_volume_from_linear(pa_sw_volume_to_linear(a) * pa_sw_volume_to_linear(b));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -195,6 +195,16 @@ pa_volume_t pa_cvolume_max(const pa_cvolume *a) PA_GCC_PURE;
|
|||
* \since 0.9.16 */
|
||||
pa_volume_t pa_cvolume_max_mask(const pa_cvolume *a, const pa_channel_map *cm, pa_channel_position_mask_t mask) PA_GCC_PURE;
|
||||
|
||||
/** Return the minimum volume of all channels. \since 0.9.16 */
|
||||
pa_volume_t pa_cvolume_min(const pa_cvolume *a) PA_GCC_PURE;
|
||||
|
||||
/** Return the minimum volume of all channels that are included in the
|
||||
* specified channel map with the specified channel position mask. If
|
||||
* cm is NULL this call is identical to pa_cvolume_min(). If no
|
||||
* channel is selected the returned value will be PA_VOLUME_MUTED.
|
||||
* \since 0.9.16 */
|
||||
pa_volume_t pa_cvolume_min_mask(const pa_cvolume *a, const pa_channel_map *cm, pa_channel_position_mask_t mask) PA_GCC_PURE;
|
||||
|
||||
/** Return TRUE when the passed cvolume structure is valid, FALSE otherwise */
|
||||
int pa_cvolume_valid(const pa_cvolume *v) PA_GCC_PURE;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue