Skip to content

Conversation

danryu
Copy link

@danryu danryu commented Jan 10, 2025

This is a set of speculative changes that allow building on Windows using MSVC compiler.

It solves the various build errors from #115 and others.

After doing a cargo update the errors with aws-lc-sys went away, so I've included those version changes.

Also needed:

@danryu
Copy link
Author

danryu commented Feb 22, 2025

hi @jbg
I hope this finds you well!
I am working with a client who is very interested in integrating gst-meet into a desktop application for Windows, so I have been working on getting a working Windows build tested and validated, from this branch. The same build on Linux works without issues.
I wonder if I could maybe take a few minutes of your time to look at this issue.

Problem
I have been conducting rigorous testing of this build on Windows. I cannot get gst-meet on Windows to send or receive audio or video, even though it appears to connect to the conference without problems. (gst-meet client just shows black screen in other member's display, and muted audio input)
I thought maybe that my naive hacks were causing some issue in ICE candidate gathering, but it seems not.

Analysis
I have done full debug tests of this build on both Windows and Linux, against the same Jitsi conference, to try and isolate the problem.
What I can see is that:

  • DTLS handshake is NOT happening on Windows.
    which I think is because:
  • this action never occurs on Windows, which DOES happen with the Linux build:
    LOG nicesrc gstnicesrc.c:195:gst_nice_src_read_callback:NiceAgent@0x7fab58014b00 Got buffer, getting out of the main loop

As a consequence I don't see any UDP traffic going from gst-meet on Windows to the JVB server, but I don't see any serious errors or failures in any of the logs on Windows, just a failure to receive anything from the above callback.
This leads me to think there is something wrong with the nicesrc on Windows, although any failure is silent.

I've also included these logs for analysis from both Linux and Windows for comparison:

  • GST debug logs (level 7 to not miss anything)
  • Gstreamer pipeline diagrams (session and participant-added*)
  • Wireshark pcap logs ( use filter 'ip.addr == 54.211.7.108 || ip.addr == 44.202.56.130' to isolate JVB and Web container traffic)

For reference, the gst-command being tested on both Windows and Linux:
gst-meet -v --web-socket-url=wss://i8924iqn.kikromix.io/video/xmpp-websocket --room-name=video --muc-domain muc.xmpp-ksession-100.kjitsi.internal --xmpp-domain xmpp-ksession-100.kjitsi.internal --recv-video-scale-width=640 --recv-video-scale-height=360 --send-pipeline="videotestsrc ! queue ! videoscale ! video/x-raw,width=640,height=360 ! videoconvert ! vp8enc name=video audiotestsrc ! queue ! audioconvert ! audioresample ! opusenc name=audio"

I would be incredibly grateful if you could help direct me towards a solution in this.
Thank you!


Windows Logs
gst-meet log:
WindowsTest_gstmeet_debug7.log.gz
pcap: WindowsTest_GstMeet.pcapng.gz

pipeline diagrams:
WindowsTest_session-initiate
WindowsTest_participant-added-83a13b22

server logs: WindowsTest_serverLogs.zip

Linux Logs:
gst-meet.log: LinuxTest_gstmeet_debug7.log.gz
pcap: LinuxTest_GstMeet.pcapng.gz

pipeline diagrams:
LinuxTest_session-initiate
LinuxTest_participant-added-83a13b22

server logs:
LinuxTest_serverLogs.zip

@danryu danryu changed the title Draft: working build on windows 11 Working build on Windows 11 - in testing Feb 22, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant