mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-07 06:52:41 +00:00
audio: Add support again for more than 64 channels with NONE layouts
This commit is contained in:
parent
2db0238450
commit
8dcea5d498
1 changed files with 6 additions and 9 deletions
|
@ -404,7 +404,6 @@ check_valid_channel_positions (const GstAudioChannelPosition * position,
|
||||||
{
|
{
|
||||||
gint i, j;
|
gint i, j;
|
||||||
guint64 channel_mask = 0;
|
guint64 channel_mask = 0;
|
||||||
gboolean none_layout = FALSE;
|
|
||||||
|
|
||||||
if (channels == 1 && position[0] == GST_AUDIO_CHANNEL_POSITION_MONO) {
|
if (channels == 1 && position[0] == GST_AUDIO_CHANNEL_POSITION_MONO) {
|
||||||
if (channel_mask_out)
|
if (channel_mask_out)
|
||||||
|
@ -412,6 +411,12 @@ check_valid_channel_positions (const GstAudioChannelPosition * position,
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (channels > 0 && position[0] == GST_AUDIO_CHANNEL_POSITION_NONE) {
|
||||||
|
if (channel_mask_out)
|
||||||
|
*channel_mask_out = 0;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
j = 0;
|
j = 0;
|
||||||
for (i = 0; i < channels; i++) {
|
for (i = 0; i < channels; i++) {
|
||||||
while (j < G_N_ELEMENTS (default_channel_order)
|
while (j < G_N_ELEMENTS (default_channel_order)
|
||||||
|
@ -422,11 +427,6 @@ check_valid_channel_positions (const GstAudioChannelPosition * position,
|
||||||
position[i] == GST_AUDIO_CHANNEL_POSITION_MONO)
|
position[i] == GST_AUDIO_CHANNEL_POSITION_MONO)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
if (position[i] == GST_AUDIO_CHANNEL_POSITION_NONE) {
|
|
||||||
none_layout = TRUE;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Is this in valid channel order? */
|
/* Is this in valid channel order? */
|
||||||
if (enforce_order && j == G_N_ELEMENTS (default_channel_order))
|
if (enforce_order && j == G_N_ELEMENTS (default_channel_order))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -438,9 +438,6 @@ check_valid_channel_positions (const GstAudioChannelPosition * position,
|
||||||
channel_mask |= (G_GUINT64_CONSTANT (1) << position[i]);
|
channel_mask |= (G_GUINT64_CONSTANT (1) << position[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (none_layout && channel_mask != 0)
|
|
||||||
return FALSE;
|
|
||||||
|
|
||||||
if (channel_mask_out)
|
if (channel_mask_out)
|
||||||
*channel_mask_out = channel_mask;
|
*channel_mask_out = channel_mask;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue