diff options
Diffstat (limited to 'gst-libs')
-rw-r--r-- | gst-libs/gst/audio/multichannel.c | 16 |
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); |