From a329a3a2c6ab0d53f5131db1d1234c2e91227e0e Mon Sep 17 00:00:00 2001 From: Vincent Penquerc'h Date: Thu, 24 Jan 2019 16:21:12 -0500 Subject: [PATCH] deinterleave: Allow switching between 1 channel configs regardless of whether they're positioned, since positioning with a 1 channel stream doesn't change anything. --- gst/interleave/deinterleave.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/gst/interleave/deinterleave.c b/gst/interleave/deinterleave.c index 4897449..465e31d 100644 --- a/gst/interleave/deinterleave.c +++ b/gst/interleave/deinterleave.c @@ -365,13 +365,23 @@ gst_deinterleave_check_caps_change (GstDeinterleave * self, gint i; gboolean same_layout = TRUE; gboolean was_unpositioned; - gboolean is_unpositioned = GST_AUDIO_INFO_IS_UNPOSITIONED (new_info); - gint new_channels = GST_AUDIO_INFO_CHANNELS (new_info); + gboolean is_unpositioned; + gint new_channels; gint old_channels; - was_unpositioned = GST_AUDIO_INFO_IS_UNPOSITIONED (old_info); + new_channels = GST_AUDIO_INFO_CHANNELS (new_info); old_channels = GST_AUDIO_INFO_CHANNELS (old_info); + if (GST_AUDIO_INFO_IS_UNPOSITIONED (new_info) || new_channels == 1) + is_unpositioned = TRUE; + else + is_unpositioned = FALSE; + + if (GST_AUDIO_INFO_IS_UNPOSITIONED (old_info) || old_channels == 1) + was_unpositioned = TRUE; + else + was_unpositioned = FALSE; + /* We allow caps changes as long as the number of channels doesn't change * and the channel positions stay the same. _getcaps() should've cared * for this already but better be safe. -- 2.7.4