Module: libav Branch: master Commit: 59d58b3390cf866a5db6d3cd3908922d2905de6e
Author: Anton Khirnov <[email protected]> Committer: Anton Khirnov <[email protected]> Date: Mon May 28 12:20:57 2012 +0200 audioconvert: add a function for extracting the channel with the given index --- libavutil/audioconvert.c | 14 ++++++++++++++ libavutil/audioconvert.h | 5 +++++ 2 files changed, 19 insertions(+), 0 deletions(-) diff --git a/libavutil/audioconvert.c b/libavutil/audioconvert.c index 36d07ee..1ac63a3 100644 --- a/libavutil/audioconvert.c +++ b/libavutil/audioconvert.c @@ -213,3 +213,17 @@ const char *av_get_channel_name(uint64_t channel) return get_channel_name(i); return NULL; } + +uint64_t av_channel_layout_extract_channel(uint64_t channel_layout, int index) +{ + int i; + + if (av_get_channel_layout_nb_channels(channel_layout) <= index) + return 0; + + for (i = 0; i < 64; i++) { + if ((1ULL << i) & channel_layout && !index--) + return 1ULL << i; + } + return 0; +} diff --git a/libavutil/audioconvert.h b/libavutil/audioconvert.h index e516ae8..691c64a 100644 --- a/libavutil/audioconvert.h +++ b/libavutil/audioconvert.h @@ -156,6 +156,11 @@ int av_get_channel_layout_channel_index(uint64_t channel_layout, uint64_t channel); /** + * Get the channel with the given index in channel_layout. + */ +uint64_t av_channel_layout_extract_channel(uint64_t channel_layout, int index); + +/** * Get the name of a given channel. * * @return channel name on success, NULL on error. _______________________________________________ libav-commits mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-commits
