diff options
Diffstat (limited to 'src/pulse/channelmap.c')
| -rw-r--r-- | src/pulse/channelmap.c | 49 | 
1 files changed, 32 insertions, 17 deletions
diff --git a/src/pulse/channelmap.c b/src/pulse/channelmap.c index 6ff30c26..983b8977 100644 --- a/src/pulse/channelmap.c +++ b/src/pulse/channelmap.c @@ -434,11 +434,11 @@ const char* pa_channel_position_to_string(pa_channel_position_t pos) {  const char* pa_channel_position_to_pretty_string(pa_channel_position_t pos) { -    pa_init_i18n(); -      if (pos < 0 || pos >= PA_CHANNEL_POSITION_MAX)          return NULL; +    pa_init_i18n(); +      return _(pretty_table[pos]);  } @@ -448,6 +448,9 @@ int pa_channel_map_equal(const pa_channel_map *a, const pa_channel_map *b) {      pa_assert(a);      pa_assert(b); +    pa_return_val_if_fail(pa_channel_map_valid(a), 0); +    pa_return_val_if_fail(pa_channel_map_valid(b), 0); +      if (a->channels != b->channels)          return 0; @@ -502,19 +505,19 @@ pa_channel_map *pa_channel_map_parse(pa_channel_map *rmap, const char *s) {       * "mono" here explicitly, because that can be understood as       * listing with one channel called "mono". */ -    if (strcmp(s, "stereo") == 0) { +    if (pa_streq(s, "stereo")) {          map.channels = 2;          map.map[0] = PA_CHANNEL_POSITION_LEFT;          map.map[1] = PA_CHANNEL_POSITION_RIGHT;          goto finish; -    } else if (strcmp(s, "surround-40") == 0) { +    } else if (pa_streq(s, "surround-40")) {          map.channels = 4;          map.map[0] = PA_CHANNEL_POSITION_FRONT_LEFT;          map.map[1] = PA_CHANNEL_POSITION_FRONT_RIGHT;          map.map[2] = PA_CHANNEL_POSITION_REAR_LEFT;          map.map[3] = PA_CHANNEL_POSITION_REAR_RIGHT;          goto finish; -    } else if (strcmp(s, "surround-41") == 0) { +    } else if (pa_streq(s, "surround-41")) {          map.channels = 5;          map.map[0] = PA_CHANNEL_POSITION_FRONT_LEFT;          map.map[1] = PA_CHANNEL_POSITION_FRONT_RIGHT; @@ -522,7 +525,7 @@ pa_channel_map *pa_channel_map_parse(pa_channel_map *rmap, const char *s) {          map.map[3] = PA_CHANNEL_POSITION_REAR_RIGHT;          map.map[4] = PA_CHANNEL_POSITION_LFE;          goto finish; -    } else if (strcmp(s, "surround-50") == 0) { +    } else if (pa_streq(s, "surround-50")) {          map.channels = 5;          map.map[0] = PA_CHANNEL_POSITION_FRONT_LEFT;          map.map[1] = PA_CHANNEL_POSITION_FRONT_RIGHT; @@ -530,7 +533,7 @@ pa_channel_map *pa_channel_map_parse(pa_channel_map *rmap, const char *s) {          map.map[3] = PA_CHANNEL_POSITION_REAR_RIGHT;          map.map[4] = PA_CHANNEL_POSITION_FRONT_CENTER;          goto finish; -    } else if (strcmp(s, "surround-51") == 0) { +    } else if (pa_streq(s, "surround-51")) {          map.channels = 6;          map.map[0] = PA_CHANNEL_POSITION_FRONT_LEFT;          map.map[1] = PA_CHANNEL_POSITION_FRONT_RIGHT; @@ -539,7 +542,7 @@ pa_channel_map *pa_channel_map_parse(pa_channel_map *rmap, const char *s) {          map.map[4] = PA_CHANNEL_POSITION_FRONT_CENTER;          map.map[5] = PA_CHANNEL_POSITION_LFE;          goto finish; -    } else if (strcmp(s, "surround-71") == 0) { +    } else if (pa_streq(s, "surround-71")) {          map.channels = 8;          map.map[0] = PA_CHANNEL_POSITION_FRONT_LEFT;          map.map[1] = PA_CHANNEL_POSITION_FRONT_RIGHT; @@ -563,13 +566,13 @@ pa_channel_map *pa_channel_map_parse(pa_channel_map *rmap, const char *s) {          }          /* Some special aliases */ -        if (strcmp(p, "left") == 0) +        if (pa_streq(p, "left"))              map.map[map.channels++] = PA_CHANNEL_POSITION_LEFT; -        else if (strcmp(p, "right") == 0) +        else if (pa_streq(p, "right"))              map.map[map.channels++] = PA_CHANNEL_POSITION_RIGHT; -        else if (strcmp(p, "center") == 0) +        else if (pa_streq(p, "center"))              map.map[map.channels++] = PA_CHANNEL_POSITION_CENTER; -        else if (strcmp(p, "subwoofer") == 0) +        else if (pa_streq(p, "subwoofer"))              map.map[map.channels++] = PA_CHANNEL_POSITION_SUBWOOFER;          else {              pa_channel_position_t i; @@ -617,11 +620,8 @@ int pa_channel_map_compatible(const pa_channel_map *map, const pa_sample_spec *s      pa_assert(map);      pa_assert(ss); -    if (!pa_channel_map_valid(map)) -        return 0; - -    if (!pa_sample_spec_valid(ss)) -        return 0; +    pa_return_val_if_fail(pa_channel_map_valid(map), 0); +    pa_return_val_if_fail(pa_sample_spec_valid(ss), 0);      return map->channels == ss->channels;  } @@ -633,6 +633,9 @@ int pa_channel_map_superset(const pa_channel_map *a, const pa_channel_map *b) {      pa_assert(a);      pa_assert(b); +    pa_return_val_if_fail(pa_channel_map_valid(a), 0); +    pa_return_val_if_fail(pa_channel_map_valid(b), 0); +      memset(in_a, 0, sizeof(in_a));      for (i = 0; i < a->channels; i++) @@ -651,6 +654,8 @@ int pa_channel_map_can_balance(const pa_channel_map *map) {      pa_assert(map); +    pa_return_val_if_fail(pa_channel_map_valid(map), 0); +      for (c = 0; c < map->channels; c++) {          switch (map->map[c]) { @@ -687,6 +692,10 @@ int pa_channel_map_can_fade(const pa_channel_map *map) {      unsigned c;      pa_bool_t front = FALSE, rear = FALSE; +    pa_assert(map); + +    pa_return_val_if_fail(pa_channel_map_valid(map), 0); +      for (c = 0; c < map->channels; c++) {          switch (map->map[c]) { @@ -727,6 +736,8 @@ const char* pa_channel_map_to_name(const pa_channel_map *map) {      pa_assert(map); +    pa_return_val_if_fail(pa_channel_map_valid(map), NULL); +      memset(in_map, 0, sizeof(in_map));      for (c = 0; c < map->channels; c++) @@ -779,11 +790,15 @@ const char* pa_channel_map_to_pretty_name(const pa_channel_map *map) {      pa_assert(map); +    pa_return_val_if_fail(pa_channel_map_valid(map), NULL); +      memset(in_map, 0, sizeof(in_map));      for (c = 0; c < map->channels; c++)          pa_bitset_set(in_map, map->map[c], TRUE); +    pa_init_i18n(); +      if (pa_bitset_equals(in_map, PA_CHANNEL_POSITION_MAX,                           PA_CHANNEL_POSITION_MONO, -1))          return _("Mono");  | 
