diff --git a/gst-libs/gst/audio/audio.c b/gst-libs/gst/audio/audio.c index 0eaed7c576..c51d9c9f33 100644 --- a/gst-libs/gst/audio/audio.c +++ b/gst-libs/gst/audio/audio.c @@ -1084,6 +1084,23 @@ gst_audio_check_valid_channel_positions (const GstAudioChannelPosition * return check_valid_channel_positions (position, channels, force_order, NULL); } +/** + * gst_audio_channel_positions_to_mask: + * @position: The %GstAudioChannelPositions + * @channels: The number of channels. + * @channel_mask: the output channel mask + * + * Convert the @position array of @channels channels to a bitmask. + * + * Returns: %TRUE if the channel positions are valid and could be converted. + */ +gboolean +gst_audio_channel_positions_to_mask (const GstAudioChannelPosition * position, + gint channels, guint64 * channel_mask) +{ + return check_valid_channel_positions (position, channels, TRUE, channel_mask); +} + /** * gst_audio_get_channel_reorder_map: * @channels: The number of channels. diff --git a/gst-libs/gst/audio/audio.h b/gst-libs/gst/audio/audio.h index dac40fc68b..f1a3d11e86 100644 --- a/gst-libs/gst/audio/audio.h +++ b/gst-libs/gst/audio/audio.h @@ -553,6 +553,9 @@ gboolean gst_audio_channel_positions_to_valid_order (GstAudioChannelPositi gboolean gst_audio_check_valid_channel_positions (const GstAudioChannelPosition *position, gint channels, gboolean force_order); +gboolean gst_audio_channel_positions_to_mask (const GstAudioChannelPosition *position, + gint channels, guint64 *channel_mask); + gboolean gst_audio_get_channel_reorder_map (gint channels, const GstAudioChannelPosition * from, const GstAudioChannelPosition * to,