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

Reply via email to