tsdemux: Fix reading of extended Opus channel configuration
authorSebastian Dröge <sebastian@centricular.com>
Fri, 17 Mar 2023 13:51:53 +0000 (15:51 +0200)
committerTim-Philipp Müller <tim@centricular.com>
Sat, 18 Mar 2023 19:52:40 +0000 (19:52 +0000)
Argument evaluation order is implementation defined in C, and gcc is
evaluating right-to-left (works) while clang is evaluating left-to-right
(does not work).

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4221>

subprojects/gst-plugins-bad/gst/mpegtsdemux/tsdemux.c

index 8adefeb..3ac82bd 100644 (file)
@@ -1601,11 +1601,12 @@ create_pad_for_stream (MpegTSBase * base, MpegTSBaseStream * bstream,
                   guint8 stream_count_minus_one, coupled_stream_count;
                   gint stream_count_minus_one_len, coupled_stream_count_len;
                   gint channel_mapping_len, i;
+                  guint remaining_bytes;
 
+                  remaining_bytes = gst_byte_reader_get_remaining (&br);
                   gst_bit_reader_init (&breader,
                       gst_byte_reader_get_data_unchecked
-                      (&br, gst_byte_reader_get_remaining
-                          (&br)), gst_byte_reader_get_remaining (&br));
+                      (&br, remaining_bytes), remaining_bytes);
 
                   stream_count_minus_one_len = ceil (_gst_log2 (channels));
                   if (!gst_bit_reader_get_bits_uint8 (&breader,