mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-11-11 13:30:02 -05:00
Add pa_channels_valid()
I think this makes the code a bit nicer to read and write. This also reduces the chances of off-by-one errors when checking the bounds of channel count values.
This commit is contained in:
parent
a67318f8af
commit
2747c96101
12 changed files with 24 additions and 22 deletions
|
|
@ -199,8 +199,7 @@ pa_channel_map* pa_channel_map_init_stereo(pa_channel_map *m) {
|
|||
|
||||
pa_channel_map* pa_channel_map_init_auto(pa_channel_map *m, unsigned channels, pa_channel_map_def_t def) {
|
||||
pa_assert(m);
|
||||
pa_assert(channels > 0);
|
||||
pa_assert(channels <= PA_CHANNELS_MAX);
|
||||
pa_assert(pa_channels_valid(channels));
|
||||
pa_assert(def < PA_CHANNEL_MAP_DEF_MAX);
|
||||
|
||||
pa_channel_map_init(m);
|
||||
|
|
@ -401,8 +400,7 @@ pa_channel_map* pa_channel_map_init_extend(pa_channel_map *m, unsigned channels,
|
|||
unsigned c;
|
||||
|
||||
pa_assert(m);
|
||||
pa_assert(channels > 0);
|
||||
pa_assert(channels <= PA_CHANNELS_MAX);
|
||||
pa_assert(pa_channels_valid(channels));
|
||||
pa_assert(def < PA_CHANNEL_MAP_DEF_MAX);
|
||||
|
||||
pa_channel_map_init(m);
|
||||
|
|
@ -617,7 +615,7 @@ int pa_channel_map_valid(const pa_channel_map *map) {
|
|||
|
||||
pa_assert(map);
|
||||
|
||||
if (map->channels <= 0 || map->channels > PA_CHANNELS_MAX)
|
||||
if (!pa_channels_valid(map->channels))
|
||||
return 0;
|
||||
|
||||
for (c = 0; c < map->channels; c++)
|
||||
|
|
|
|||
|
|
@ -111,12 +111,15 @@ int pa_sample_rate_valid(uint32_t rate) {
|
|||
return rate > 0 && rate <= PA_RATE_MAX;
|
||||
}
|
||||
|
||||
int pa_channels_valid(uint8_t channels) {
|
||||
return channels > 0 && channels <= PA_CHANNELS_MAX;
|
||||
}
|
||||
|
||||
int pa_sample_spec_valid(const pa_sample_spec *spec) {
|
||||
pa_assert(spec);
|
||||
|
||||
if (PA_UNLIKELY(!pa_sample_rate_valid(spec->rate) ||
|
||||
spec->channels <= 0 ||
|
||||
spec->channels > PA_CHANNELS_MAX ||
|
||||
!pa_channels_valid(spec->channels) ||
|
||||
!pa_sample_format_valid(spec->format)))
|
||||
return 0;
|
||||
|
||||
|
|
|
|||
|
|
@ -295,6 +295,10 @@ int pa_sample_format_valid(unsigned format) PA_GCC_PURE;
|
|||
/** Return non-zero if the rate is within the supported range. \since 5.0 */
|
||||
int pa_sample_rate_valid(uint32_t rate) PA_GCC_PURE;
|
||||
|
||||
/** Return non-zero if the channel count is within the supported range.
|
||||
* \since 5.0 */
|
||||
int pa_channels_valid(uint8_t channels) PA_GCC_PURE;
|
||||
|
||||
/** Return non-zero when the sample type specification is valid */
|
||||
int pa_sample_spec_valid(const pa_sample_spec *spec) PA_GCC_PURE;
|
||||
|
||||
|
|
|
|||
|
|
@ -73,8 +73,7 @@ pa_cvolume* pa_cvolume_set(pa_cvolume *a, unsigned channels, pa_volume_t v) {
|
|||
int i;
|
||||
|
||||
pa_assert(a);
|
||||
pa_assert(channels > 0);
|
||||
pa_assert(channels <= PA_CHANNELS_MAX);
|
||||
pa_assert(pa_channels_valid(channels));
|
||||
|
||||
a->channels = (uint8_t) channels;
|
||||
|
||||
|
|
@ -533,7 +532,7 @@ int pa_cvolume_valid(const pa_cvolume *v) {
|
|||
|
||||
pa_assert(v);
|
||||
|
||||
if (v->channels <= 0 || v->channels > PA_CHANNELS_MAX)
|
||||
if (!pa_channels_valid(v->channels))
|
||||
return 0;
|
||||
|
||||
for (c = 0; c < v->channels; c++)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue