channelmap: introduce pa_channel_map_mask() and pa_channel_position_mask_t

This commit is contained in:
Lennart Poettering 2009-05-25 23:51:34 +02:00
parent 261a4830fb
commit 01fa34ba8a
3 changed files with 22 additions and 0 deletions

View file

@ -20,6 +20,7 @@ pa_channel_map_init_auto;
pa_channel_map_init_extend; pa_channel_map_init_extend;
pa_channel_map_init_mono; pa_channel_map_init_mono;
pa_channel_map_init_stereo; pa_channel_map_init_stereo;
pa_channel_map_mask;
pa_channel_map_parse; pa_channel_map_parse;
pa_channel_map_snprint; pa_channel_map_snprint;
pa_channel_map_superset; pa_channel_map_superset;

View file

@ -852,3 +852,15 @@ int pa_channel_map_has_position(const pa_channel_map *map, pa_channel_position_t
return 0; 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;
}

View file

@ -205,6 +205,12 @@ typedef enum pa_channel_position {
#define PA_CHANNEL_POSITION_MAX PA_CHANNEL_POSITION_MAX #define PA_CHANNEL_POSITION_MAX PA_CHANNEL_POSITION_MAX
/** \endcond */ /** \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() */ /** A list of channel mapping definitions for pa_channel_map_init_auto() */
typedef enum pa_channel_map_def { typedef enum pa_channel_map_def {
PA_CHANNEL_MAP_AIFF, 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 */ * 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; 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 PA_C_DECL_END
#endif #endif