summaryrefslogtreecommitdiffstats
path: root/src/pulse
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2009-05-25 23:51:34 +0200
committerLennart Poettering <lennart@poettering.net>2009-05-25 23:51:34 +0200
commit01fa34ba8a2be006964b87e5e19a2c955bf7131e (patch)
tree779a1bd02fa64041d14dafd9cc73aa012216c8c8 /src/pulse
parent261a4830fb28f7ae690176cdfbe21607d27d9bcb (diff)
channelmap: introduce pa_channel_map_mask() and pa_channel_position_mask_t
Diffstat (limited to 'src/pulse')
-rw-r--r--src/pulse/channelmap.c12
-rw-r--r--src/pulse/channelmap.h9
2 files changed, 21 insertions, 0 deletions
diff --git a/src/pulse/channelmap.c b/src/pulse/channelmap.c
index fe14df24..4654a9ad 100644
--- a/src/pulse/channelmap.c
+++ b/src/pulse/channelmap.c
@@ -852,3 +852,15 @@ int pa_channel_map_has_position(const pa_channel_map *map, pa_channel_position_t
return 0;
}
+
+pa_channel_position_mask_t pa_channel_map_mask(const pa_channel_map *map) {
+ unsigned c;
+ pa_channel_position_mask_t r = 0;
+
+ pa_return_val_if_fail(pa_channel_map_valid(map), 0);
+
+ for (c = 0; c < map->channels; c++)
+ r |= PA_CHANNEL_POSITION_MASK(map->map[c]);
+
+ return r;
+}
diff --git a/src/pulse/channelmap.h b/src/pulse/channelmap.h
index 4f39d8a5..2aaead01 100644
--- a/src/pulse/channelmap.h
+++ b/src/pulse/channelmap.h
@@ -205,6 +205,12 @@ typedef enum pa_channel_position {
#define PA_CHANNEL_POSITION_MAX PA_CHANNEL_POSITION_MAX
/** \endcond */
+/** A mask of channel positions. \since 0.9.16 */
+typedef uint64_t pa_channel_position_mask_t;
+
+/** Makes a bit mask from a channel position. \since 0.9.16 */
+#define PA_CHANNEL_POSITION_MASK(f) ((pa_channel_position_mask_t) (1 << (f)))
+
/** A list of channel mapping definitions for pa_channel_map_init_auto() */
typedef enum pa_channel_map_def {
PA_CHANNEL_MAP_AIFF,
@@ -333,6 +339,9 @@ const char* pa_channel_map_to_pretty_name(const pa_channel_map *map) PA_GCC_PURE
* least once in the channel map. \since 0.9.16 */
int pa_channel_map_has_position(const pa_channel_map *map, pa_channel_position_t p) PA_GCC_PURE;
+/** Generates a bit mask from a channel map. \since 0.9.16 */
+pa_channel_position_mask_t pa_channel_map_mask(const pa_channel_map *map) PA_GCC_PURE;
+
PA_C_DECL_END
#endif