From b29385bd76388904ba203360e1533c903a369ab4 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Tue, 28 Oct 2008 17:42:02 +0000 Subject: gst/rtp/gstrtpchannels.*: Add method to get possible channel positions. Original commit message from CVS: * gst/rtp/gstrtpchannels.c: (gst_rtp_channels_get_by_index): * gst/rtp/gstrtpchannels.h: Add method to get possible channel positions. --- ChangeLog | 6 ++++++ gst/rtp/gstrtpchannels.c | 31 +++++++++++++++++++++++++++++++ gst/rtp/gstrtpchannels.h | 1 + 3 files changed, 38 insertions(+) diff --git a/ChangeLog b/ChangeLog index 22672e92..c3fce95c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-10-28 Wim Taymans + + * gst/rtp/gstrtpchannels.c: (gst_rtp_channels_get_by_index): + * gst/rtp/gstrtpchannels.h: + Add method to get possible channel positions. + 2008-10-28 Wim Taymans * gst/rtp/Makefile.am: diff --git a/gst/rtp/gstrtpchannels.c b/gst/rtp/gstrtpchannels.c index 05100f0f..2ce42803 100644 --- a/gst/rtp/gstrtpchannels.c +++ b/gst/rtp/gstrtpchannels.c @@ -110,6 +110,37 @@ gst_rtp_channels_get_by_order (gint channels, const gchar * order) return res; } +/** + * gst_rtp_channels_get_by_index: + * @channels: the amount of channels + * @idx: the channel index to retrieve + * + * Get the allowed channel order descriptions for @channels. @idx can be used to + * retrieve the desired index. + * + * Returns: a #GstRTPChannelOrder at @idx, NULL when there are no valid channel + * orders. + */ +const GstRTPChannelOrder * +gst_rtp_channels_get_by_index (gint channels, guint idx) +{ + gint i; + const GstRTPChannelOrder *res = NULL; + + for (i = 0; channel_orders[i].pos; i++) { + if (channel_orders[i].channels != channels) + continue; + + if (idx == 0) { + res = &channel_orders[i]; + break; + } + idx--; + } + return res; +} + + /** * gst_rtp_channels_create_default: * @channels: the amount of channels diff --git a/gst/rtp/gstrtpchannels.h b/gst/rtp/gstrtpchannels.h index 2c9efe38..591eb05f 100644 --- a/gst/rtp/gstrtpchannels.h +++ b/gst/rtp/gstrtpchannels.h @@ -181,5 +181,6 @@ const GstRTPChannelOrder * gst_rtp_channels_get_by_pos (gint channels, const GstAudioChannelPosition *pos); const GstRTPChannelOrder * gst_rtp_channels_get_by_order (gint channels, const gchar *order); +const GstRTPChannelOrder * gst_rtp_channels_get_by_index (gint channels, guint idx); GstAudioChannelPosition * gst_rtp_channels_create_default (gint channels); -- cgit