GStreamer-Sharp signal with string array return value

Using GStreamer 1.24.2.

Some back story… I’ve been recording from an rtsp stream using splitmuxsink. I was trying to concatenate those videos using the concat element. Seems to work fine for generating a new concatenated file, but if I’m trying to use it for viewing with autovideosink or streaming with webrtcbin it seems to get stuck after the first few files. I’ve filed a bug report here, but have no response.

I eventually found there is a splitmuxsrc. Unsure why that’s needed when there is a concat element. Nevertheless, testing splitmuxsrc from the command line resulted in success with autovideosink. So, since I wasn’t getting a response on my bug report, I figured I’d go in this direction.

Next step was to test it in my application with webrtcbin. Unfortunately I’m stuck on how to provide the input files. There is a format-location signal which is exactly what I want. Here is my signal handler:

        private void HandleFormatLocation(
            object o,
            SignalArgs args)
        {
            if (!RecordingFiles.Any())
            {
                return;
            }

            var files = RecordingFiles.OrderBy(p => p.StartDate)
                .ToList()
                .Select(p => p.Filename)
                .Select(p => p.Replace("\\", "\\\\"))
                .ToArray();

            Logger.LogWarning("Getting files: {files}", files.JoinString(", "));

            var value = new GLib.Value(files);
            args.RetVal = value;
        }

I’ve tried various things, but I think this is the correct code. Unfortunately, something seems to be messing it up. Here is the output:

[15:21:08 WRN] Getting files: D:/VideoRecording/Ubiquiti/video0000041.mp4, D:/VideoRecording/Ubiquiti/video0000042.mp4, D:/VideoRecording/Ubiquiti/video0000043.mp4, D:/VideoRecording/Ubiquiti/video0000044.mp4, D:/VideoRecording/Ubiquiti/video0000045.mp4, D:/VideoRecording/Ubiquiti/video0000046.mp4, D:/VideoRecording/Ubiquiti/video0000047.mp4, D:/VideoRecording/Ubiquiti/video0000048.mp4, D:/VideoRecording/Ubiquiti/video0000049.mp4, D:/VideoRecording/Ubiquiti/video0000050.mp4, D:/VideoRecording/Ubiquiti/video0000051.mp4, D:/VideoRecording/Ubiquiti/video0000052.mp4, D:/VideoRecording/Ubiquiti/video0000053.mp4, D:/VideoRecording/Ubiquiti/video0000054.mp4
[15:21:08 ERR] MESSAGE: Pipeline error for view recording files:
Could not open resource for reading.
../gst/multifile/gstsplitmuxsrc.c(506): gst_splitmux_part_bus_handler (): /GstPipeline:pipeline0/GstSplitMuxSrc:concat:
Failed to prepare first file part ☺ for playback

Looking at the code in gstsplitmuxsrc.c, it appears the smiley face in the last line of output is supposed to be a filename. Most likely it should say D:/VideoRecording/Ubiquiti/video0000041.mp4.

I’ve tried a few different ways of returning a string array and nothing works. I run into things like marshalling errors, or unknown type gstrv. All the GStreamer-Sharp examples I could find just set boolean values to RetVal.

I asked in the gstreamer general discussion of element.io, but also got no help. Hoping someone here has run into this problem and has a workaround?