diff options
author | Lennart Poettering <lennart@poettering.net> | 2009-05-25 23:51:34 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2009-05-25 23:51:34 +0200 |
commit | 01fa34ba8a2be006964b87e5e19a2c955bf7131e (patch) | |
tree | 779a1bd02fa64041d14dafd9cc73aa012216c8c8 /src | |
parent | 261a4830fb28f7ae690176cdfbe21607d27d9bcb (diff) |
channelmap: introduce pa_channel_map_mask() and pa_channel_position_mask_t
Diffstat (limited to 'src')
-rw-r--r-- | src/map-file | 1 | ||||
-rw-r--r-- | src/pulse/channelmap.c | 12 | ||||
-rw-r--r-- | src/pulse/channelmap.h | 9 |
3 files changed, 22 insertions, 0 deletions
diff --git a/src/map-file b/src/map-file index 201e837a..98a568e3 100644 --- a/src/map-file +++ b/src/map-file @@ -20,6 +20,7 @@ pa_channel_map_init_auto; pa_channel_map_init_extend; pa_channel_map_init_mono; pa_channel_map_init_stereo; +pa_channel_map_mask; pa_channel_map_parse; pa_channel_map_snprint; pa_channel_map_superset; 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 |