summaryrefslogtreecommitdiffstats
path: root/gst-libs
diff options
context:
space:
mode:
Diffstat (limited to 'gst-libs')
-rw-r--r--gst-libs/gst/audio/multichannel.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/gst-libs/gst/audio/multichannel.c b/gst-libs/gst/audio/multichannel.c
index 61d7403e..67c055d9 100644
--- a/gst-libs/gst/audio/multichannel.c
+++ b/gst-libs/gst/audio/multichannel.c
@@ -256,7 +256,7 @@ void
gst_audio_set_structure_channel_positions_list (GstStructure * str,
const GstAudioChannelPosition * pos, gint num_positions)
{
- gint channels, c;
+ gint channels, n, c;
GValue pos_val_arr = { 0 }, pos_val_list = {
0}, pos_val_entry = {
0};
@@ -278,13 +278,15 @@ gst_audio_set_structure_channel_positions_list (GstStructure * str,
/* create the array of lists */
g_value_init (&pos_val_arr, GST_TYPE_FIXED_LIST);
g_value_init (&pos_val_entry, GST_TYPE_AUDIO_CHANNEL_POSITION);
- g_value_init (&pos_val_list, GST_TYPE_LIST);
- for (c = 0; c < num_positions; c++) {
- g_value_set_enum (&pos_val_entry, pos[c]);
- gst_value_list_append_value (&pos_val_list, &pos_val_entry);
+ for (n = 0; n < channels; n++) {
+ g_value_init (&pos_val_list, GST_TYPE_LIST);
+ for (c = 0; c < num_positions; c++) {
+ g_value_set_enum (&pos_val_entry, pos[c]);
+ gst_value_list_append_value (&pos_val_list, &pos_val_entry);
+ }
+ gst_value_list_append_value (&pos_val_arr, &pos_val_list);
+ g_value_unset (&pos_val_list);
}
- gst_value_list_append_value (&pos_val_arr, &pos_val_list);
- g_value_unset (&pos_val_list);
g_value_unset (&pos_val_entry);
gst_structure_set_value (str, GST_AUDIO_CHANNEL_POSITIONS_PROPERTY_NAME,
&pos_val_arr);