Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

No video received with simulcast & recv-video-height #6

Closed
teodly opened this issue Oct 18, 2021 · 16 comments
Closed

No video received with simulcast & recv-video-height #6

teodly opened this issue Oct 18, 2021 · 16 comments

Comments

@teodly
Copy link

teodly commented Oct 18, 2021

With simulcast enabled and without the command line argument --recv-video-height the video is received but has very low resolution (it's understandable with simulcast). Is there any way to get full resolution video from all participants? I've tried --recv-video-height=720 but then no video is received, see log below.

I've seen in README that simulcast is not fully implemented, what remains to be done?

$ DISPLAY=:0 GST_DEBUG=identity:7,vp8dec:7 target/debug/gst-meet --verbose --web-socket-url=wss://myserver/xmpp-websocket --xmpp-domain=meet.jitsi --muc-domain=muc.meet.jitsi --focus-jid=focus.meet.jitsi --room-name=vbck-eq98qp9r --recv-pipeline-participant-template="identity name=audio silent=true ! opusdec use-inband-fec=true plc=true ! autoaudiosink  identity name=video silent=false ! capsfilter caps=video/x-vp8 ! vp8dec discard-corrupted-frames=true ! autovideosink" --recv-video-height=720
Oct 18 15:38:45.841  INFO Connecting XMPP WebSocket to wss://myserver/xmpp-websocket
Oct 18 15:38:45.970 DEBUG No cached session for DNSNameRef("myserver")    
Oct 18 15:38:45.971 DEBUG Not resuming any session    
Oct 18 15:38:46.020 DEBUG Using ciphersuite TLS13_CHACHA20_POLY1305_SHA256    
Oct 18 15:38:46.020 DEBUG Not resuming    
Oct 18 15:38:46.021 DEBUG TLS1.3 encrypted extensions: [ServerNameAck]    
Oct 18 15:38:46.021 DEBUG ALPN protocol is None    
Oct 18 15:38:46.114 DEBUG Ticket saved    
Oct 18 15:38:46.114 DEBUG Ticket saved    
Oct 18 15:38:46.117 DEBUG Client handshake done.    
Oct 18 15:38:46.118 DEBUG XMPP    >>> <open xmlns="urn:ietf:params:xml:ns:xmpp-framing" to="meet.jitsi" version="1.0"/>
Oct 18 15:38:46.169 DEBUG XMPP    <<< <open from='meet.jitsi' id='21084b44-63c9-462e-b04e-01df1ac3ea98' xml:lang='en' version='1.0' xmlns='urn:ietf:params:xml:ns:xmpp-framing'/>
Oct 18 15:38:46.169  INFO Connected XMPP WebSocket
Oct 18 15:38:46.169 DEBUG XMPP    <<< <stream:features xmlns:stream='http://etherx.jabber.org/streams' xmlns='jabber:client'><mechanisms xmlns='urn:ietf:params:xml:ns:xmpp-sasl'><mechanism>ANONYMOUS</mechanism></mechanisms></stream:features>
Oct 18 15:38:46.170 DEBUG XMPP    >>> <auth xmlns="urn:ietf:params:xml:ns:xmpp-sasl" mechanism="ANONYMOUS"></auth>
Oct 18 15:38:46.218 DEBUG XMPP    <<< <success xmlns='urn:ietf:params:xml:ns:xmpp-sasl'/>
Oct 18 15:38:46.219 DEBUG XMPP    >>> <open xmlns="urn:ietf:params:xml:ns:xmpp-framing" to="meet.jitsi" version="1.0"/>
Oct 18 15:38:46.268 DEBUG XMPP    <<< <open from='meet.jitsi' id='a0d0451a-3902-4a4a-98c1-ed3509803da9' xml:lang='en' version='1.0' xmlns='urn:ietf:params:xml:ns:xmpp-framing'/>
Oct 18 15:38:46.268  INFO Logged in anonymously
Oct 18 15:38:46.268 DEBUG XMPP    <<< <stream:features xmlns:stream='http://etherx.jabber.org/streams' xmlns='jabber:client'><c hash='sha-1' ver='G6w+5bZoHrFGJqNzkFC1TfACayE=' xmlns='http://jabber.org/protocol/caps' node='http://prosody.im'/><sm xmlns='urn:xmpp:sm:2'><optional/></sm><sm xmlns='urn:xmpp:sm:3'><optional/></sm><bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'><required/></bind><session xmlns='urn:ietf:params:xml:ns:xmpp-session'><optional/></session><ver xmlns='urn:xmpp:features:rosterver'/></stream:features>
Oct 18 15:38:46.269 DEBUG XMPP    >>> <iq xmlns="jabber:client" id="390bbdad-5195-4c20-a0d3-8277b208bde6" type="set"><bind xmlns="urn:ietf:params:xml:ns:xmpp-bind"/></iq>
Oct 18 15:38:46.317 DEBUG XMPP    <<< <iq type='result' id='390bbdad-5195-4c20-a0d3-8277b208bde6' xmlns='jabber:client'><bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'><jid>6818f220-fa77-413d-8740-9d7c1c56358c@meet.jitsi/II560aVV</jid></bind></iq>
Oct 18 15:38:46.318  INFO My JID: 6818f220-fa77-413d-8740-9d7c1c56358c@meet.jitsi/II560aVV
Oct 18 15:38:46.318 DEBUG XMPP    >>> <iq xmlns="jabber:client" from="6818f220-fa77-413d-8740-9d7c1c56358c@meet.jitsi/II560aVV" id="e2c9933b-aa89-408b-ba15-60a707afd18f" to="meet.jitsi" type="get"><query xmlns="http://jabber.org/protocol/disco#info"/></iq>
Oct 18 15:38:46.367 DEBUG XMPP    <<< <iq type='result' from='meet.jitsi' id='e2c9933b-aa89-408b-ba15-60a707afd18f' xmlns='jabber:client' to='6818f220-fa77-413d-8740-9d7c1c56358c@meet.jitsi/II560aVV'><query xmlns='http://jabber.org/protocol/disco#info'><identity type='service' category='pubsub' name='Prosody PubSub Service'/><identity type='im' category='server' name='Prosody'/><identity type='pep' category='pubsub' name='Prosody'/><identity type='speakerstats' category='component' name='speakerstatsmeet.jitsi'/><identity type='conference_duration' category='component' name='conferencedurationmeet.jitsi'/><feature var='jabber:iq:register'/><feature var='http://jabber.org/protocol/commands'/><feature var='msgoffline'/><feature var='urn:xmpp:ping'/><feature var='jabber:iq:version'/><feature var='jabber:iq:roster'/><feature var='http://jabber.org/protocol/pubsub'/><feature var='http://jabber.org/protocol/pubsub#item-ids'/><feature var='http://jabber.org/protocol/pubsub#outcast-affiliation'/><feature var='http://jabber.org/protocol/pubsub#create-nodes'/><feature var='http://jabber.org/protocol/pubsub#modify-affiliations'/><feature var='http://jabber.org/protocol/pubsub#retrieve-items'/><feature var='http://jabber.org/protocol/pubsub#retrieve-default'/><feature var='http://jabber.org/protocol/pubsub#purge-nodes'/><feature var='http://jabber.org/protocol/pubsub#publish'/><feature var='http://jabber.org/protocol/pubsub#create-and-configure'/><feature var='http://jabber.org/protocol/pubsub#config-node'/><feature var='http://jabber.org/protocol/pubsub#delete-items'/><feature var='http://jabber.org/protocol/pubsub#meta-data'/><feature var='http://jabber.org/protocol/pubsub#multi-items'/><feature var='http://jabber.org/protocol/pubsub#member-affiliation'/><feature var='http://jabber.org/protocol/pubsub#subscribe'/><feature var='http://jabber.org/protocol/pubsub#persistent-items'/><feature var='http://jabber.org/protocol/pubsub#delete-nodes'/><feature var='http://jabber.org/protocol/pubsub#access-open'/><feature var='http://jabber.org/protocol/pubsub#subscription-options'/><feature var='http://jabber.org/protocol/pubsub#instant-nodes'/><feature var='http://jabber.org/protocol/pubsub#retrieve-subscriptions'/><feature var='http://jabber.org/protocol/pubsub#retract-items'/><feature var='http://jabber.org/protocol/pubsub#publisher-affiliation'/><feature var='http://jabber.org/protocol/pubsub#publish-options'/><feature var='http://jabber.org/protocol/disco#info'/><feature var='http://jabber.org/protocol/disco#items'/><feature var='jabber:iq:private'/><feature var='urn:xmpp:time'/><feature var='jabber:iq:time'/><feature var='jabber:iq:last'/><feature var='vcard-temp'/></query></iq>
Oct 18 15:38:46.369 DEBUG XMPP    >>> <iq xmlns="jabber:client" from="6818f220-fa77-413d-8740-9d7c1c56358c@meet.jitsi/II560aVV" id="2cfd8c9f-f04f-4b0b-b56b-b41206260f0e" to="meet.jitsi" type="get"><services xmlns="urn:xmpp:extdisco:2"/></iq>
Oct 18 15:38:46.420 DEBUG XMPP    <<< <iq type='error' from='meet.jitsi' id='2cfd8c9f-f04f-4b0b-b56b-b41206260f0e' xmlns='jabber:client' to='6818f220-fa77-413d-8740-9d7c1c56358c@meet.jitsi/II560aVV'><error type='cancel'><service-unavailable xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/></error></iq>
Oct 18 15:38:46.420  WARN discovering external services failed: STUN/TURN will not work
Oct 18 15:38:46.421 DEBUG XMPP    >>> <iq xmlns="jabber:client" id="f217ed31-44df-43ee-b581-1f3c90fc1f4d" to="focus.meet.jitsi" type="set"><conference xmlns="http://jitsi.org/protocol/focus" machine-uid="6d2c3a9e-c6c4-44fa-8ea0-23aa57008469" room="vbck-eq98qp9r@muc.meet.jitsi"><property name="startBitrate" value="800"/><property name="stereo" value="true"/></conference></iq>
Oct 18 15:38:46.471 DEBUG XMPP    <<< <iq type='result' from='focus.meet.jitsi' id='f217ed31-44df-43ee-b581-1f3c90fc1f4d' xmlns='jabber:client' to='6818f220-fa77-413d-8740-9d7c1c56358c@meet.jitsi/II560aVV'><conference ready='true' focusjid='focus@auth.meet.jitsi' room='vbck-eq98qp9r@muc.meet.jitsi' xmlns='http://jitsi.org/protocol/focus'><property value='true' name='authentication'/><property value='true' name='externalAuth'/></conference></iq>
Oct 18 15:38:46.472 DEBUG send_presence{self=JitsiConference { jid: FullJID(6818f220-fa77-413d-8740-9d7c1c56358c@meet.jitsi/II560aVV), config: JitsiConferenceConfig { muc: BareJID(vbck-eq98qp9r@muc.meet.jitsi), focus: Bare(BareJID(focus.meet.jitsi)), nick: "gst-meet", region: None, video_codec: "vp8", extra_muc_features: [] }, inner: Mutex { data: JitsiConferenceInner { state: Discovering } } } payloads=[Element { name: "x", namespace: "http://jabber.org/protocol/muc", prefix: None, prefixes: Prefixes(), attributes: {}, children: [] }, Element { name: "c", namespace: "urn:xmpp:caps", prefix: None, prefixes: Prefixes(), attributes: {}, children: [Element(Element { name: "hash", namespace: "urn:xmpp:hashes:2", prefix: None, prefixes: Prefixes(), attributes: {"algo": "sha-256"}, children: [Text("pr/wwetmaxozjpmQn1lvYrzZnmR8UdWw0/Gr1XPkV+0=")] })] }, Element { name: "stats-id", namespace: "jabber:client", prefix: None, prefixes: Prefixes(), attributes: {}, children: [Text("gst-meet")] }, Element { name: "jitsi_participant_codecType", namespace: "jabber:client", prefix: None, prefixes: Prefixes(), attributes: {}, children: [Text("vp8")] }, Element { name: "audiomuted", namespace: "jabber:client", prefix: None, prefixes: Prefixes(), attributes: {}, children: [Text("false")] }, Element { name: "videomuted", namespace: "jabber:client", prefix: None, prefixes: Prefixes(), attributes: {}, children: [Text("false")] }, Element { name: "nick", namespace: "http://jabber.org/protocol/nick", prefix: None, prefixes: Prefixes(), attributes: {}, children: [Text("gst-meet")] }]}: close time.busy=51.5µs time.idle=19.2µs
Oct 18 15:38:46.472 DEBUG XMPP    >>> <presence xmlns="jabber:client" to="vbck-eq98qp9r@muc.meet.jitsi/6818f220"><x xmlns="http://jabber.org/protocol/muc"/><c xmlns="urn:xmpp:caps"><hash xmlns="urn:xmpp:hashes:2" algo="sha-256">pr/wwetmaxozjpmQn1lvYrzZnmR8UdWw0/Gr1XPkV+0=</hash></c><stats-id>gst-meet</stats-id><jitsi_participant_codecType>vp8</jitsi_participant_codecType><audiomuted>false</audiomuted><videomuted>false</videomuted><nick xmlns="http://jabber.org/protocol/nick">gst-meet</nick></presence>
Oct 18 15:38:46.525 DEBUG XMPP    <<< <presence from='vbck-eq98qp9r@muc.meet.jitsi/fda767f7' xmlns='jabber:client' to='6818f220-fa77-413d-8740-9d7c1c56358c@meet.jitsi/II560aVV'><stats-id>Krystel-yIc</stats-id><c hash='sha-1' ver='/LxjVAUjW56LWSj9lRquSYt35Ho=' node='https://jitsi.org/jitsi-meet' xmlns='http://jabber.org/protocol/caps'/><jitsi_participant_codecType>vp8</jitsi_participant_codecType><nick xmlns='http://jabber.org/protocol/nick'>StreamStudio</nick><audiomuted>false</audiomuted><videomuted>false</videomuted><x xmlns='http://jabber.org/protocol/muc#user'><item jid='fda767f7-ca28-4cc8-8b6f-3c4ca2a8568a@meet.jitsi/TeYqpl6d' affiliation='none' role='participant'/></x></presence>
Oct 18 15:38:46.526 DEBUG Joined MUC: vbck-eq98qp9r@muc.meet.jitsi
Oct 18 15:38:46.526 DEBUG XMPP    <<< <presence from='vbck-eq98qp9r@muc.meet.jitsi/7407942f' xmlns='jabber:client' to='6818f220-fa77-413d-8740-9d7c1c56358c@meet.jitsi/II560aVV'><stats-id>Jamaal-Xfz</stats-id><c hash='sha-1' ver='EnwHSNadxWoMLOQtrcYmdQXmu/k=' node='https://jitsi.org/jitsi-meet' xmlns='http://jabber.org/protocol/caps'/><features><feature var='https://jitsi.org/meet/e2ee'/></features><jitsi_participant_codecType>vp8</jitsi_participant_codecType><nick xmlns='http://jabber.org/protocol/nick'>teo</nick><jitsi_participant_e2ee.idKey>MEAksN9BN6fYPbduIgJfJcbqc47BrRT2oxWeLAbssHI</jitsi_participant_e2ee.idKey><audiomuted>false</audiomuted><videomuted>false</videomuted><x xmlns='http://jabber.org/protocol/muc#user'><item jid='7407942f-1193-4dd6-b197-08057e1199fb@meet.jitsi/OOaP6-XL' affiliation='owner' role='moderator'/></x></presence>
Oct 18 15:38:46.526 DEBUG new participant: FullJID(7407942f-1193-4dd6-b197-08057e1199fb@meet.jitsi/OOaP6-XL)
Oct 18 15:38:46.526 DEBUG XMPP    <<< <presence xmlns='jabber:client' from='vbck-eq98qp9r@muc.meet.jitsi/focus' id='kSFCr-137121' to='6818f220-fa77-413d-8740-9d7c1c56358c@meet.jitsi/II560aVV'><etherpad xmlns='http://jitsi.org/jitmeet/etherpad'>vbck-eq98qp9r</etherpad><versions xmlns='http://jitsi.org/jitmeet'><component name='focus'>1.1.SNAPSHOT</component></versions><conference-properties xmlns='http://jitsi.org/protocol/focus'><property value='true' key='support-terminate-restart'/><property value='1' key='bridge-count'/></conference-properties><c hash='sha-1' ver='Lg0vhCNhxjoeKJi2/hukdsizNWA=' node='http://jitsi.org/jicofo' xmlns='http://jabber.org/protocol/caps'/><x xmlns='http://jabber.org/protocol/muc#user'><item jid='focus@auth.meet.jitsi/focus' affiliation='owner' role='moderator'/></x></presence>
Oct 18 15:38:46.527 DEBUG XMPP    <<< <presence from='vbck-eq98qp9r@muc.meet.jitsi/6818f220' xmlns='jabber:client' to='6818f220-fa77-413d-8740-9d7c1c56358c@meet.jitsi/II560aVV'><c xmlns='urn:xmpp:caps'><hash algo='sha-256' xmlns='urn:xmpp:hashes:2'>pr/wwetmaxozjpmQn1lvYrzZnmR8UdWw0/Gr1XPkV+0=</hash></c><stats-id>gst-meet</stats-id><jitsi_participant_codecType>vp8</jitsi_participant_codecType><audiomuted>false</audiomuted><videomuted>false</videomuted><nick xmlns='http://jabber.org/protocol/nick'>gst-meet</nick><x xmlns='http://jabber.org/protocol/muc#user'><status code='100'/><item jid='6818f220-fa77-413d-8740-9d7c1c56358c@meet.jitsi/II560aVV' affiliation='none' role='participant'/><status code='110'/></x></presence>
Oct 18 15:38:46.528 DEBUG XMPP    <<< <message from='speakerstats.meet.jitsi' xmlns='jabber:client' to='6818f220-fa77-413d-8740-9d7c1c56358c@meet.jitsi/II560aVV'><json-message xmlns='http://jitsi.org/jitmeet'>{&quot;type&quot;:&quot;speakerstats&quot;,&quot;users&quot;:{&quot;e0b84321&quot;:{&quot;totalDominantSpeakerTime&quot;:0,&quot;displayName&quot;:&quot;gst-meet&quot;},&quot;c25eedad&quot;:{&quot;totalDominantSpeakerTime&quot;:0,&quot;displayName&quot;:&quot;gst-meet&quot;},&quot;fd924aa8&quot;:{&quot;totalDominantSpeakerTime&quot;:0,&quot;displayName&quot;:&quot;gst-meet&quot;},&quot;3a528e0d&quot;:{&quot;totalDominantSpeakerTime&quot;:0,&quot;displayName&quot;:&quot;gst-meet&quot;},&quot;19a8e357&quot;:{&quot;totalDominantSpeakerTime&quot;:0,&quot;displayName&quot;:&quot;gst-meet&quot;},&quot;1dc70cf7&quot;:{&quot;totalDominantSpeakerTime&quot;:0,&quot;displayName&quot;:&quot;gst-meet&quot;},&quot;cf5ce225&quot;:{&quot;totalDominantSpeakerTime&quot;:0,&quot;displayName&quot;:&quot;gst-meet&quot;},&quot;9b37e0b4&quot;:{&quot;totalDominantSpeakerTime&quot;:0,&quot;displayName&quot;:&quot;gst-meet&quot;},&quot;1809cee2&quot;:{&quot;totalDominantSpeakerTime&quot;:0,&quot;displayName&quot;:&quot;gst-meet&quot;}}}</json-message></message>
Oct 18 15:38:46.528 DEBUG XMPP    <<< <message from='conferenceduration.meet.jitsi' xmlns='jabber:client' to='6818f220-fa77-413d-8740-9d7c1c56358c@meet.jitsi/II560aVV'><json-message xmlns='http://jitsi.org/jitmeet'>{&quot;type&quot;:&quot;conference_duration&quot;,&quot;created_timestamp&quot;:1634563786000}</json-message></message>
Oct 18 15:38:46.528 DEBUG XMPP    <<< <message type='groupchat' from='vbck-eq98qp9r@muc.meet.jitsi' xmlns='jabber:client' to='6818f220-fa77-413d-8740-9d7c1c56358c@meet.jitsi/II560aVV'><subject/></message>
Oct 18 15:38:46.528 DEBUG XMPP    <<< <iq type='get' from='vbck-eq98qp9r@muc.meet.jitsi/focus' id='NjgxOGYyMjAtZmE3Ny00MTNkLTg3NDAtOWQ3YzFjNTYzNThjQHJldHVybi5tZWV0LmppdHNpL0lJNTYwYVZWAGtTRkNyLTEzNzQ4NgB9MKAL27uLVhq/q96wolfF' xmlns='jabber:client' to='6818f220-fa77-413d-8740-9d7c1c56358c@meet.jitsi/II560aVV'><query xmlns='http://jabber.org/protocol/disco#info'/></iq>
Oct 18 15:38:46.528 DEBUG Received disco info query from vbck-eq98qp9r@muc.meet.jitsi/focus for node None
Oct 18 15:38:46.529 DEBUG XMPP    >>> <iq xmlns="jabber:client" from="6818f220-fa77-413d-8740-9d7c1c56358c@meet.jitsi/II560aVV" id="NjgxOGYyMjAtZmE3Ny00MTNkLTg3NDAtOWQ3YzFjNTYzNThjQHJldHVybi5tZWV0LmppdHNpL0lJNTYwYVZWAGtTRkNyLTEzNzQ4NgB9MKAL27uLVhq/q96wolfF" to="vbck-eq98qp9r@muc.meet.jitsi/focus" type="result"><query xmlns="http://jabber.org/protocol/disco#info"><feature var="urn:xmpp:jingle:apps:rtp:audio"/><feature var="urn:xmpp:jingle:apps:rtp:video"/><feature var="urn:xmpp:jingle:transports:ice-udp:1"/><feature var="urn:xmpp:jingle:apps:dtls:0"/><feature var="urn:ietf:rfc:5888"/><feature var="urn:ietf:rfc:5761"/><feature var="urn:ietf:rfc:4588"/><feature var="http://jitsi.org/tcc"/></query></iq>
Oct 18 15:38:46.611 DEBUG XMPP    <<< <iq type='set' from='vbck-eq98qp9r@muc.meet.jitsi/focus' id='NjgxOGYyMjAtZmE3Ny00MTNkLTg3NDAtOWQ3YzFjNTYzNThjQHJldHVybi5tZWV0LmppdHNpL0lJNTYwYVZWAGtTRkNyLTEzNzQ5MQB9MKAL27uLVhq/q96wolfF' xmlns='jabber:client' to='6818f220-fa77-413d-8740-9d7c1c56358c@meet.jitsi/II560aVV'><jingle sid='bfempbijs0s39' action='session-initiate' initiator='focus@auth.meet.jitsi/focus' xmlns='urn:xmpp:jingle:1'><content creator='initiator' senders='both' name='audio'><description media='audio' maxptime='60' xmlns='urn:xmpp:jingle:apps:rtp:1'><payload-type id='111' name='opus' channels='2' clockrate='48000'><parameter value='10' name='minptime'/><parameter value='1' name='useinbandfec'/><rtcp-fb type='transport-cc' xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0'/></payload-type><payload-type name='ISAC' clockrate='16000' id='103'/><payload-type name='ISAC' clockrate='32000' id='104'/><payload-type name='telephone-event' clockrate='8000' id='126'/><rtp-hdrext uri='urn:ietf:params:rtp-hdrext:ssrc-audio-level' id='1' xmlns='urn:xmpp:jingle:apps:rtp:rtp-hdrext:0'/><rtp-hdrext uri='http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01' id='5' xmlns='urn:xmpp:jingle:apps:rtp:rtp-hdrext:0'/><rtcp-mux/><source ssrc='2779611839' xmlns='urn:xmpp:jingle:apps:rtp:ssma:0'><parameter value='mixed' name='cname'/><parameter value='mixedlabelaudio0' name='label'/><parameter value='mixedmslabel mixedlabelaudio0' name='msid'/><parameter value='mixedmslabel' name='mslabel'/><ssrc-info owner='jvb' xmlns='http://jitsi.org/jitmeet'/></source><source ssrc='861082313' xmlns='urn:xmpp:jingle:apps:rtp:ssma:0'><ssrc-info owner='vbck-eq98qp9r@muc.meet.jitsi/fda767f7' xmlns='http://jitsi.org/jitmeet'/><parameter value='fda767f7-audio-1 2e97aee7-4481-4370-8a6f-209a295a6c65-1' name='msid'/><parameter value='klf2SdfQOtoSZTWV-1' name='cname'/></source><source ssrc='2435101079' xmlns='urn:xmpp:jingle:apps:rtp:ssma:0'><ssrc-info owner='vbck-eq98qp9r@muc.meet.jitsi/7407942f' xmlns='http://jitsi.org/jitmeet'/><parameter value='7407942f-audio-1 7956351a-b8db-4852-ad91-6b9848814932-1' name='msid'/><parameter value='0OJYqZ1Su7UNN91-1' name='cname'/></source></description><transport ufrag='bs71j1fi9q0h53' pwd='3bvie3ojfilejsau1jdkg9hule' xmlns='urn:xmpp:jingle:transports:ice-udp:1'><web-socket url='wss://myserver/colibri-ws/10.255.254.4/1c75ac1492945f52/6818f220?pwd=3bvie3ojfilejsau1jdkg9hule' xmlns='http://jitsi.org/protocol/colibri'/><rtcp-mux/><fingerprint required='false' hash='sha-256' setup='actpass' xmlns='urn:xmpp:jingle:apps:dtls:0'>5E:4E:BA:E3:25:7E:02:CB:61:A9:4F:B2:F2:2C:BC:2B:07:FE:8B:28:98:4F:F0:E2:AE:30:EC:99:1B:31:BD:AA</fingerprint><candidate type='host' foundation='1' network='0' protocol='udp' component='1' ip='10.255.254.4' id='19b011b295b7667076923534' priority='2130706431' port='10000' generation='0'/><candidate type='srflx' foundation='2' network='0' protocol='udp' component='1' ip='34.240.181.38' rel-port='10000' id='13672de395b76670ffffffff8e82ec56' generation='0' priority='1694498815' port='10000' rel-addr='10.255.254.4'/></transport></content><content creator='initiator' senders='both' name='video'><description media='video' xmlns='urn:xmpp:jingle:apps:rtp:1'><payload-type name='VP8' clockrate='90000' id='100'><rtcp-fb type='ccm' subtype='fir' xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0'/><rtcp-fb type='nack' xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0'/><rtcp-fb type='nack' subtype='pli' xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0'/><parameter value='800' name='x-google-start-bitrate'/><rtcp-fb type='transport-cc' xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0'/></payload-type><payload-type name='H264' clockrate='90000' id='107'><rtcp-fb type='ccm' subtype='fir' xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0'/><rtcp-fb type='nack' xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0'/><rtcp-fb type='nack' subtype='pli' xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0'/><parameter value='800' name='x-google-start-bitrate'/><rtcp-fb type='transport-cc' xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0'/><parameter value='42e01f;level-asymmetry-allowed=1;packetization-mode=1;' name='profile-level-id'/></payload-type><payload-type name='VP9' clockrate='90000' id='101'><rtcp-fb type='ccm' subtype='fir' xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0'/><rtcp-fb type='nack' xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0'/><rtcp-fb type='nack' subtype='pli' xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0'/><parameter value='800' name='x-google-start-bitrate'/><rtcp-fb type='transport-cc' xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0'/></payload-type><payload-type name='rtx' clockrate='90000' id='96'><parameter value='100' name='apt'/><rtcp-fb type='ccm' subtype='fir' xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0'/><rtcp-fb type='nack' xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0'/><rtcp-fb type='nack' subtype='pli' xmlns='urn:xmpp:jingle:apps:rtp:rtcp-fb:0'/></payload-type><payload-type name='rtx' clockrate='90000' id='97'><parameter value='101' name='apt'/></payload-type><payload-type name='rtx' clockrate='90000' id='99'><parameter value='107' name='apt'/></payload-type><rtp-hdrext uri='http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time' id='3' xmlns='urn:xmpp:jingle:apps:rtp:rtp-hdrext:0'/><rtp-hdrext uri='http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01' id='5' xmlns='urn:xmpp:jingle:apps:rtp:rtp-hdrext:0'/><rtcp-mux/><source ssrc='3997726519' xmlns='urn:xmpp:jingle:apps:rtp:ssma:0'><parameter value='mixed' name='cname'/><parameter value='mixedlabelvideo0' name='label'/><parameter value='mixedmslabel mixedlabelvideo0' name='msid'/><parameter value='mixedmslabel' name='mslabel'/><ssrc-info owner='jvb' xmlns='http://jitsi.org/jitmeet'/></source><source ssrc='3547134360' xmlns='urn:xmpp:jingle:apps:rtp:ssma:0'><ssrc-info owner='vbck-eq98qp9r@muc.meet.jitsi/fda767f7' xmlns='http://jitsi.org/jitmeet'/><parameter value='fda767f7-video-1 b5919904-ca09-44d7-a60a-ca1ebd48b9a6-1' name='msid'/><parameter value='klf2SdfQOtoSZTWV-1' name='cname'/></source><source ssrc='3274400993' xmlns='urn:xmpp:jingle:apps:rtp:ssma:0'><ssrc-info owner='vbck-eq98qp9r@muc.meet.jitsi/fda767f7' xmlns='http://jitsi.org/jitmeet'/><parameter value='fda767f7-video-1 b5919904-ca09-44d7-a60a-ca1ebd48b9a6-1' name='msid'/><parameter value='klf2SdfQOtoSZTWV-1' name='cname'/></source><source ssrc='1788627684' xmlns='urn:xmpp:jingle:apps:rtp:ssma:0'><ssrc-info owner='vbck-eq98qp9r@muc.meet.jitsi/7407942f' xmlns='http://jitsi.org/jitmeet'/><parameter value='7407942f-video-1 dee785af-24ee-49a6-82ae-de1cfcea0713-1' name='msid'/><parameter value='0OJYqZ1Su7UNN91-1' name='cname'/></source><source ssrc='1318712897' xmlns='urn:xmpp:jingle:apps:rtp:ssma:0'><ssrc-info owner='vbck-eq98qp9r@muc.meet.jitsi/7407942f' xmlns='http://jitsi.org/jitmeet'/><parameter value='7407942f-video-1 dee785af-24ee-49a6-82ae-de1cfcea0713-1' name='msid'/><parameter value='0OJYqZ1Su7UNN91-1' name='cname'/></source><source ssrc='452538405' xmlns='urn:xmpp:jingle:apps:rtp:ssma:0'><ssrc-info owner='vbck-eq98qp9r@muc.meet.jitsi/7407942f' xmlns='http://jitsi.org/jitmeet'/><parameter value='7407942f-video-1 dee785af-24ee-49a6-82ae-de1cfcea0713-1' name='msid'/><parameter value='0OJYqZ1Su7UNN91-1' name='cname'/></source><source ssrc='783699697' xmlns='urn:xmpp:jingle:apps:rtp:ssma:0'><ssrc-info owner='vbck-eq98qp9r@muc.meet.jitsi/7407942f' xmlns='http://jitsi.org/jitmeet'/><parameter value='7407942f-video-1 dee785af-24ee-49a6-82ae-de1cfcea0713-1' name='msid'/><parameter value='0OJYqZ1Su7UNN91-1' name='cname'/></source><source ssrc='3149396768' xmlns='urn:xmpp:jingle:apps:rtp:ssma:0'><ssrc-info owner='vbck-eq98qp9r@muc.meet.jitsi/7407942f' xmlns='http://jitsi.org/jitmeet'/><parameter value='7407942f-video-1 dee785af-24ee-49a6-82ae-de1cfcea0713-1' name='msid'/><parameter value='0OJYqZ1Su7UNN91-1' name='cname'/></source><source ssrc='2012982726' xmlns='urn:xmpp:jingle:apps:rtp:ssma:0'><ssrc-info owner='vbck-eq98qp9r@muc.meet.jitsi/7407942f' xmlns='http://jitsi.org/jitmeet'/><parameter value='7407942f-video-1 dee785af-24ee-49a6-82ae-de1cfcea0713-1' name='msid'/><parameter value='0OJYqZ1Su7UNN91-1' name='cname'/></source><ssrc-group semantics='FID' xmlns='urn:xmpp:jingle:apps:rtp:ssma:0'><source ssrc='3547134360'/><source ssrc='3274400993'/></ssrc-group><ssrc-group semantics='FID' xmlns='urn:xmpp:jingle:apps:rtp:ssma:0'><source ssrc='1788627684'/><source ssrc='1318712897'/></ssrc-group><ssrc-group semantics='SIM' xmlns='urn:xmpp:jingle:apps:rtp:ssma:0'><source ssrc='1788627684'/><source ssrc='452538405'/><source ssrc='783699697'/></ssrc-group><ssrc-group semantics='FID' xmlns='urn:xmpp:jingle:apps:rtp:ssma:0'><source ssrc='452538405'/><source ssrc='3149396768'/></ssrc-group><ssrc-group semantics='FID' xmlns='urn:xmpp:jingle:apps:rtp:ssma:0'><source ssrc='783699697'/><source ssrc='2012982726'/></ssrc-group></description><transport ufrag='bs71j1fi9q0h53' pwd='3bvie3ojfilejsau1jdkg9hule' xmlns='urn:xmpp:jingle:transports:ice-udp:1'><web-socket url='wss://myserver/colibri-ws/10.255.254.4/1c75ac1492945f52/6818f220?pwd=3bvie3ojfilejsau1jdkg9hule' xmlns='http://jitsi.org/protocol/colibri'/><rtcp-mux/><fingerprint required='false' hash='sha-256' setup='actpass' xmlns='urn:xmpp:jingle:apps:dtls:0'>5E:4E:BA:E3:25:7E:02:CB:61:A9:4F:B2:F2:2C:BC:2B:07:FE:8B:28:98:4F:F0:E2:AE:30:EC:99:1B:31:BD:AA</fingerprint><candidate type='host' foundation='1' network='0' protocol='udp' component='1' ip='10.255.254.4' id='19b011b295b7667076923534' priority='2130706431' port='10000' generation='0'/><candidate type='srflx' foundation='2' network='0' protocol='udp' component='1' ip='34.240.181.38' rel-port='10000' id='13672de395b76670ffffffff8e82ec56' generation='0' priority='1694498815' port='10000' rel-addr='10.255.254.4'/></transport></content><group semantics='BUNDLE' xmlns='urn:xmpp:jingle:apps:grouping:0'><content name='audio'/><content name='video'/></group><bridge-session id='74445_2f1bed' xmlns='http://jitsi.org/protocol/focus'/></jingle></iq>
Oct 18 15:38:46.618 DEBUG Received Jingle session-initiate from focus@auth.meet.jitsi/focus
Oct 18 15:38:46.618 DEBUG adding ssrc to remote_ssrc_map: Source { id: "2779611839", parameters: [Parameter { name: "cname", value: Some("mixed") }, Parameter { name: "label", value: Some("mixedlabelaudio0") }, Parameter { name: "msid", value: Some("mixedmslabel mixedlabelaudio0") }, Parameter { name: "mslabel", value: Some("mixedmslabel") }], info: Some(SsrcInfo { owner: "jvb" }) }
Oct 18 15:38:46.618 DEBUG adding ssrc to remote_ssrc_map: Source { id: "861082313", parameters: [Parameter { name: "msid", value: Some("fda767f7-audio-1 2e97aee7-4481-4370-8a6f-209a295a6c65-1") }, Parameter { name: "cname", value: Some("klf2SdfQOtoSZTWV-1") }], info: Some(SsrcInfo { owner: "vbck-eq98qp9r@muc.meet.jitsi/fda767f7" }) }
Oct 18 15:38:46.618 DEBUG adding ssrc to remote_ssrc_map: Source { id: "2435101079", parameters: [Parameter { name: "msid", value: Some("7407942f-audio-1 7956351a-b8db-4852-ad91-6b9848814932-1") }, Parameter { name: "cname", value: Some("0OJYqZ1Su7UNN91-1") }], info: Some(SsrcInfo { owner: "vbck-eq98qp9r@muc.meet.jitsi/7407942f" }) }
Oct 18 15:38:46.618 DEBUG adding ssrc to remote_ssrc_map: Source { id: "3997726519", parameters: [Parameter { name: "cname", value: Some("mixed") }, Parameter { name: "label", value: Some("mixedlabelvideo0") }, Parameter { name: "msid", value: Some("mixedmslabel mixedlabelvideo0") }, Parameter { name: "mslabel", value: Some("mixedmslabel") }], info: Some(SsrcInfo { owner: "jvb" }) }
Oct 18 15:38:46.618 DEBUG adding ssrc to remote_ssrc_map: Source { id: "3547134360", parameters: [Parameter { name: "msid", value: Some("fda767f7-video-1 b5919904-ca09-44d7-a60a-ca1ebd48b9a6-1") }, Parameter { name: "cname", value: Some("klf2SdfQOtoSZTWV-1") }], info: Some(SsrcInfo { owner: "vbck-eq98qp9r@muc.meet.jitsi/fda767f7" }) }
Oct 18 15:38:46.618 DEBUG adding ssrc to remote_ssrc_map: Source { id: "3274400993", parameters: [Parameter { name: "msid", value: Some("fda767f7-video-1 b5919904-ca09-44d7-a60a-ca1ebd48b9a6-1") }, Parameter { name: "cname", value: Some("klf2SdfQOtoSZTWV-1") }], info: Some(SsrcInfo { owner: "vbck-eq98qp9r@muc.meet.jitsi/fda767f7" }) }
Oct 18 15:38:46.619 DEBUG adding ssrc to remote_ssrc_map: Source { id: "1788627684", parameters: [Parameter { name: "msid", value: Some("7407942f-video-1 dee785af-24ee-49a6-82ae-de1cfcea0713-1") }, Parameter { name: "cname", value: Some("0OJYqZ1Su7UNN91-1") }], info: Some(SsrcInfo { owner: "vbck-eq98qp9r@muc.meet.jitsi/7407942f" }) }
Oct 18 15:38:46.619 DEBUG adding ssrc to remote_ssrc_map: Source { id: "1318712897", parameters: [Parameter { name: "msid", value: Some("7407942f-video-1 dee785af-24ee-49a6-82ae-de1cfcea0713-1") }, Parameter { name: "cname", value: Some("0OJYqZ1Su7UNN91-1") }], info: Some(SsrcInfo { owner: "vbck-eq98qp9r@muc.meet.jitsi/7407942f" }) }
Oct 18 15:38:46.619 DEBUG adding ssrc to remote_ssrc_map: Source { id: "452538405", parameters: [Parameter { name: "msid", value: Some("7407942f-video-1 dee785af-24ee-49a6-82ae-de1cfcea0713-1") }, Parameter { name: "cname", value: Some("0OJYqZ1Su7UNN91-1") }], info: Some(SsrcInfo { owner: "vbck-eq98qp9r@muc.meet.jitsi/7407942f" }) }
Oct 18 15:38:46.619 DEBUG adding ssrc to remote_ssrc_map: Source { id: "783699697", parameters: [Parameter { name: "msid", value: Some("7407942f-video-1 dee785af-24ee-49a6-82ae-de1cfcea0713-1") }, Parameter { name: "cname", value: Some("0OJYqZ1Su7UNN91-1") }], info: Some(SsrcInfo { owner: "vbck-eq98qp9r@muc.meet.jitsi/7407942f" }) }
Oct 18 15:38:46.619 DEBUG adding ssrc to remote_ssrc_map: Source { id: "3149396768", parameters: [Parameter { name: "msid", value: Some("7407942f-video-1 dee785af-24ee-49a6-82ae-de1cfcea0713-1") }, Parameter { name: "cname", value: Some("0OJYqZ1Su7UNN91-1") }], info: Some(SsrcInfo { owner: "vbck-eq98qp9r@muc.meet.jitsi/7407942f" }) }
Oct 18 15:38:46.619 DEBUG adding ssrc to remote_ssrc_map: Source { id: "2012982726", parameters: [Parameter { name: "msid", value: Some("7407942f-video-1 dee785af-24ee-49a6-82ae-de1cfcea0713-1") }, Parameter { name: "cname", value: Some("0OJYqZ1Su7UNN91-1") }], info: Some(SsrcInfo { owner: "vbck-eq98qp9r@muc.meet.jitsi/7407942f" }) }
Oct 18 15:38:46.619  WARN Remote DTLS fingerprint (verification not implemented yet): [94, 78, 186, 227, 37, 126, 2, 203, 97, 169, 79, 178, 242, 44, 188, 43, 7, 254, 139, 40, 152, 79, 240, 226, 174, 48, 236, 153, 27, 49, 189, 170]
Oct 18 15:38:46.620 DEBUG Local DTLS certificate:
-----BEGIN CERTIFICATE-----
MIIBTzCB96ADAgECAgg3+I2aIMCEgDAKBggqhkjOPQQDAjAhMR8wHQYDVQQDDBZy
Y2dlbiBzZWxmIHNpZ25lZCBjZXJ0MCAXDTc1MDEwMTAwMDAwMFoYDzQwOTYwMTAx
MDAwMDAwWjAhMR8wHQYDVQQDDBZyY2dlbiBzZWxmIHNpZ25lZCBjZXJ0MFkwEwYH
KoZIzj0CAQYIKoZIzj0DAQcDQgAEP8KIhUMSrR3IwjHtvk0HRaaANu1osA2wzunq
s5oUtmYZWnaBS9D5tIvCCJ8bq+iOXn6ZsmWSDf2I1JSTZdGXoKMXMBUwEwYDVR0R
BAwwCoIIZ3N0LW1lZXQwCgYIKoZIzj0EAwIDRwAwRAIgVjPjVB00Ajx82JBjGRfb
VE3T+8NmatrIchCnga2Hoz0CIAIudlYwBNUb+WzYaQ5cdHKS/+lcamo4PFpj5LUm
yozX
-----END CERTIFICATE-----

Oct 18 15:38:46.620 DEBUG Local DTLS fingerprint: B7:53:2:14:CC:71:DA:7F:C4:ED:66:8:B8:43:C5:AC:E0:F0:7C:D9:67:6C:3B:76:C1:8:EC:B2:A:EB:D1:19
Oct 18 15:38:46.620 DEBUG audio SSRC: 2247495786
Oct 18 15:38:46.620 DEBUG video SSRC: 1353629057
Oct 18 15:38:46.620 DEBUG video RTX SSRC: 783772405
Oct 18 15:38:46.620 DEBUG STUN address: None
Oct 18 15:38:46.620 DEBUG ice_agent=Agent(ObjectRef { inner: 0x7f3544055010, type: NiceAgent })
Oct 18 15:38:46.620 DEBUG ice_stream_id=1
Oct 18 15:38:46.620 DEBUG ice_component_id=1
Oct 18 15:38:46.620 DEBUG setting ICE remote credentials
Oct 18 15:38:46.620 DEBUG gathering ICE candidates
Oct 18 15:38:46.622 DEBUG ICE candidate-gathering-done 1
Oct 18 15:38:46.622 DEBUG setting ICE remote candidates: [Candidate { component: 1, foundation: "1", generation: 0, id: "19b011b295b7667076923534", ip: 10.255.254.4, port: 10000, priority: 2130706431, protocol: "udp", rel_addr: None, rel_port: None, network: Some(0), type_: Host }, Candidate { component: 1, foundation: "2", generation: 0, id: "13672de395b76670ffffffff8e82ec56", ip: 34.240.181.38, port: 10000, priority: 1694498815, protocol: "udp", rel_addr: Some(10.255.254.4), rel_port: Some(10000), network: Some(0), type_: Srflx }]
Oct 18 15:38:46.622 DEBUG candidate: Candidate { type_: Host, foundation: Ok("1"), addr: 10.255.254.4:10000, priority: 2130706431, stream_id: 1, component_id: 1, username: Ok("bs71j1fi9q0h53"), password: Ok("3bvie3ojfilejsau1jdkg9hule") }
Oct 18 15:38:46.622 DEBUG candidate: Candidate { type_: ServerReflexive, foundation: Ok("2"), addr: 34.240.181.38:10000, priority: 1694498815, stream_id: 1, component_id: 1, username: Ok("bs71j1fi9q0h53"), password: Ok("3bvie3ojfilejsau1jdkg9hule") }
Oct 18 15:38:46.623 DEBUG building gstreamer pipeline
Oct 18 15:38:46.765 DEBUG linking video payloader -> rtpfunnel
Oct 18 15:38:46.765 DEBUG linking audio payloader -> rtpfunnel
Oct 18 15:38:46.765 DEBUG linking rtpfunnel -> rtpbin
Oct 18 15:38:46.766 DEBUG creating RTX sender for session 0
Oct 18 15:38:46.766 DEBUG rtpbin pad-added [(GstRtpBin) (GstRtpBin) rtpbin, (GstPad) (GstGhostPad) send_rtp_src_0]
Oct 18 15:38:46.766 DEBUG rtpbin pad-added [(GstRtpBin) (GstRtpBin) rtpbin, (GstPad) (GstGhostPad) send_rtp_sink_0]
Oct 18 15:38:46.767 DEBUG link dtlssrtpdec -> rtpbin
Oct 18 15:38:46.767 DEBUG rtpbin pad-added [(GstRtpBin) (GstRtpBin) rtpbin, (GstPad) (GstGhostPad) recv_rtp_sink_0]
Oct 18 15:38:46.767 DEBUG creating RTX receiver for session 0
Oct 18 15:38:46.767 DEBUG rtpbin pad-added [(GstRtpBin) (GstRtpBin) rtpbin, (GstPad) (GstGhostPad) recv_rtcp_sink_0]
Oct 18 15:38:46.767 DEBUG linking rtpbin -> dtlssrtpenc
Oct 18 15:38:46.768 DEBUG rtpbin pad-added [(GstRtpBin) (GstRtpBin) rtpbin, (GstPad) (GstGhostPad) send_rtcp_src_0]
Oct 18 15:38:46.768 DEBUG linking ice src -> dtlssrtpdec
Oct 18 15:38:46.768 DEBUG linking dtlssrtpenc -> ice sink
Oct 18 15:38:46.768 DEBUG local candidates: [Candidate { type_: Host, foundation: Ok("1"), addr: 192.168.1.48:55288, priority: 2015363327, stream_id: 1, component_id: 1, username: Ok(""), password: Ok("") }, Candidate { type_: Host, foundation: Ok("2"), addr: 10.9.241.3:36437, priority: 2015363583, stream_id: 1, component_id: 1, username: Ok(""), password: Ok("") }, Candidate { type_: Host, foundation: Ok("3"), addr: 10.9.24.97:48729, priority: 2015363839, stream_id: 1, component_id: 1, username: Ok(""), password: Ok("") }, Candidate { type_: Host, foundation: Ok("4"), addr: [fe80::f17f:7072:5601:b0e6%2]:53015, priority: 2015364095, stream_id: 1, component_id: 1, username: Ok(""), password: Ok("") }, Candidate { type_: Host, foundation: Ok("5"), addr: [fe80::b750:541f:f9b1:4fc6%4]:53568, priority: 2015364351, stream_id: 1, component_id: 1, username: Ok(""), password: Ok("") }, Candidate { type_: Host, foundation: Ok("6"), addr: [fe80::e130:2307:81e2:a6bc%5]:59188, priority: 2015364607, stream_id: 1, component_id: 1, username: Ok(""), password: Ok("") }]
Oct 18 15:38:46.768 DEBUG building Jingle session-accept
Oct 18 15:38:46.769 DEBUG XMPP    >>> <iq xmlns="jabber:client" from="6818f220-fa77-413d-8740-9d7c1c56358c@meet.jitsi/II560aVV" id="NjgxOGYyMjAtZmE3Ny00MTNkLTg3NDAtOWQ3YzFjNTYzNThjQHJldHVybi5tZWV0LmppdHNpL0lJNTYwYVZWAGtTRkNyLTEzNzQ5MQB9MKAL27uLVhq/q96wolfF" to="vbck-eq98qp9r@muc.meet.jitsi/focus" type="result"/>
Oct 18 15:38:46.770 DEBUG XMPP    >>> <iq xmlns="jabber:client" from="6818f220-fa77-413d-8740-9d7c1c56358c@meet.jitsi/II560aVV" id="6a50e36a-dbf0-41ad-b58e-a2703cbc9eaf" to="vbck-eq98qp9r@muc.meet.jitsi/focus" type="set"><jingle xmlns="urn:xmpp:jingle:1" action="session-accept" initiator="focus@auth.meet.jitsi/focus" responder="6818f220-fa77-413d-8740-9d7c1c56358c@meet.jitsi/II560aVV" sid="bfempbijs0s39"><content creator="responder" name="audio" senders="both"><description xmlns="urn:xmpp:jingle:apps:rtp:1" media="audio" ssrc="2247495786"><payload-type channels="2" clockrate="48000" id="111" name="opus"><rtcp-fb xmlns="urn:xmpp:jingle:apps:rtp:rtcp-fb:0" type="transport-cc"/></payload-type><rtcp-mux/><source xmlns="urn:xmpp:jingle:apps:rtp:ssma:0" ssrc="2247495786"><parameter name="cname" value="c879e6c9-99f5-4a2c-8670-61bbedacbab0"/><parameter name="msid" value="f8376d44-1d78-4f4f-9b79-f385ee6fe7a0 10834ca8-976f-47d4-a950-e6502dd313cd"/></source><rtp-hdrext xmlns="urn:xmpp:jingle:apps:rtp:rtp-hdrext:0" id="1" uri="urn:ietf:params:rtp-hdrext:ssrc-audio-level"/><rtp-hdrext xmlns="urn:xmpp:jingle:apps:rtp:rtp-hdrext:0" id="5" uri="http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01"/></description><transport xmlns="urn:xmpp:jingle:transports:ice-udp:1" pwd="Xz/5tJZuFGh2qh81Cwy6RG" ufrag="zvyy"><candidate component="1" foundation="1" generation="0" id="a9a8f16f-0c0e-4f47-a14f-9a7e36e9feb9" ip="192.168.1.48" port="55288" priority="2015363327" protocol="udp" type="host"/><candidate component="1" foundation="2" generation="0" id="1eb095af-24ef-42bc-affc-82adc8e33cd7" ip="10.9.241.3" port="36437" priority="2015363583" protocol="udp" type="host"/><candidate component="1" foundation="3" generation="0" id="ebd1e777-9f9c-4db2-b646-843d239ed50e" ip="10.9.24.97" port="48729" priority="2015363839" protocol="udp" type="host"/><candidate component="1" foundation="4" generation="0" id="b658e428-2cd3-4d42-b2e0-35365587e33a" ip="fe80::f17f:7072:5601:b0e6" port="53015" priority="2015364095" protocol="udp" type="host"/><candidate component="1" foundation="5" generation="0" id="f659f917-1ac3-423d-8e83-f277fc109c3d" ip="fe80::b750:541f:f9b1:4fc6" port="53568" priority="2015364351" protocol="udp" type="host"/><candidate component="1" foundation="6" generation="0" id="e698f72a-6e60-4b11-9e53-98c1954afa64" ip="fe80::e130:2307:81e2:a6bc" port="59188" priority="2015364607" protocol="udp" type="host"/><fingerprint xmlns="urn:xmpp:jingle:apps:dtls:0" hash="sha-256" required="true" setup="active">B7:53:02:14:CC:71:DA:7F:C4:ED:66:08:B8:43:C5:AC:E0:F0:7C:D9:67:6C:3B:76:C1:08:EC:B2:0A:EB:D1:19</fingerprint></transport></content><content creator="responder" name="video" senders="both"><description xmlns="urn:xmpp:jingle:apps:rtp:1" media="video" ssrc="1353629057"><payload-type clockrate="90000" id="100" name="VP8"><rtcp-fb xmlns="urn:xmpp:jingle:apps:rtp:rtcp-fb:0" subtype="fir" type="ccm"/><rtcp-fb xmlns="urn:xmpp:jingle:apps:rtp:rtcp-fb:0" type="nack"/><rtcp-fb xmlns="urn:xmpp:jingle:apps:rtp:rtcp-fb:0" subtype="pli" type="nack"/><rtcp-fb xmlns="urn:xmpp:jingle:apps:rtp:rtcp-fb:0" type="transport-cc"/></payload-type><payload-type clockrate="90000" id="96" name="rtx"><parameter name="apt" value="100"/></payload-type><rtcp-mux/><ssrc-group xmlns="urn:xmpp:jingle:apps:rtp:ssma:0" semantics="FID"><source ssrc="1353629057"/><source ssrc="783772405"/></ssrc-group><source xmlns="urn:xmpp:jingle:apps:rtp:ssma:0" ssrc="1353629057"><parameter name="cname" value="aafb5e55-e5e3-417b-8f6a-582972571254"/><parameter name="msid" value="410a949b-b0e8-40e2-9761-2b62d07c341c accab753-c5fa-4340-8402-74e77fbd7216"/></source><source xmlns="urn:xmpp:jingle:apps:rtp:ssma:0" ssrc="783772405"><parameter name="cname" value="aafb5e55-e5e3-417b-8f6a-582972571254"/><parameter name="msid" value="410a949b-b0e8-40e2-9761-2b62d07c341c accab753-c5fa-4340-8402-74e77fbd7216"/></source><rtp-hdrext xmlns="urn:xmpp:jingle:apps:rtp:rtp-hdrext:0" id="5" uri="http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01"/></description><transport xmlns="urn:xmpp:jingle:transports:ice-udp:1" pwd="Xz/5tJZuFGh2qh81Cwy6RG" ufrag="zvyy"><candidate component="1" foundation="1" generation="0" id="a1c78250-af4e-4fb3-a3d4-201fb9582222" ip="192.168.1.48" port="55288" priority="2015363327" protocol="udp" type="host"/><candidate component="1" foundation="2" generation="0" id="96b57bad-f246-40fe-865c-db2b2dfc8c4e" ip="10.9.241.3" port="36437" priority="2015363583" protocol="udp" type="host"/><candidate component="1" foundation="3" generation="0" id="990311ca-1e47-4f65-b236-887b7bb05d2c" ip="10.9.24.97" port="48729" priority="2015363839" protocol="udp" type="host"/><candidate component="1" foundation="4" generation="0" id="bee21e43-9b1e-415d-8304-9c5a00993d73" ip="fe80::f17f:7072:5601:b0e6" port="53015" priority="2015364095" protocol="udp" type="host"/><candidate component="1" foundation="5" generation="0" id="1bb0910c-66ad-47c7-a699-abcf9f691ece" ip="fe80::b750:541f:f9b1:4fc6" port="53568" priority="2015364351" protocol="udp" type="host"/><candidate component="1" foundation="6" generation="0" id="f3c26909-341d-4aa7-8865-8459d45a8d45" ip="fe80::e130:2307:81e2:a6bc" port="59188" priority="2015364607" protocol="udp" type="host"/><fingerprint xmlns="urn:xmpp:jingle:apps:dtls:0" hash="sha-256" required="true" setup="active">B7:53:02:14:CC:71:DA:7F:C4:ED:66:08:B8:43:C5:AC:E0:F0:7C:D9:67:6C:3B:76:C1:08:EC:B2:0A:EB:D1:19</fingerprint></transport></content></jingle></iq>
Oct 18 15:38:46.874 DEBUG XMPP    <<< <iq type='result' from='vbck-eq98qp9r@muc.meet.jitsi/focus' id='6a50e36a-dbf0-41ad-b58e-a2703cbc9eaf' xmlns='jabber:client' to='6818f220-fa77-413d-8740-9d7c1c56358c@meet.jitsi/II560aVV'/>
Oct 18 15:38:46.874 DEBUG Focus acknowledged session-accept
Oct 18 15:38:46.874  INFO Connecting Colibri WebSocket to wss://myserver/colibri-ws/10.255.254.4/1c75ac1492945f52/6818f220?pwd=3bvie3ojfilejsau1jdkg9hule
Oct 18 15:38:46.920 DEBUG No cached session for DNSNameRef("myserver")    
Oct 18 15:38:46.920 DEBUG Not resuming any session    
Oct 18 15:38:46.970 DEBUG Using ciphersuite TLS13_CHACHA20_POLY1305_SHA256    
Oct 18 15:38:46.971 DEBUG Not resuming    
Oct 18 15:38:46.971 DEBUG TLS1.3 encrypted extensions: [ServerNameAck]    
Oct 18 15:38:46.971 DEBUG ALPN protocol is None    
Oct 18 15:38:47.020 DEBUG Ticket saved    
Oct 18 15:38:47.021 DEBUG Ticket saved    
Oct 18 15:38:47.069 DEBUG Client handshake done.    
Oct 18 15:38:47.069  INFO Connected Colibri WebSocket
Oct 18 15:38:47.069 DEBUG Colibri <<< {"colibriClass":"ServerHello"}
Oct 18 15:38:47.069 DEBUG join{xmpp_connection=Connection { tx: Sender { chan: Tx { inner: Chan { tx: Tx { block_tail: 0x55d414b4dd90, tail_position: 6 }, semaphore: (Semaphore { permits: 64 }, 64), rx_waker: AtomicWaker, tx_count: 3, rx_fields: "..." } } }, inner: Mutex { data: ConnectionInner { state: Idle, jid: Some(FullJID(6818f220-fa77-413d-8740-9d7c1c56358c@meet.jitsi/II560aVV)) } } } glib_main_context=MainContext(Shared { inner: 0x55d414b4b240 }) config=JitsiConferenceConfig { muc: BareJID(vbck-eq98qp9r@muc.meet.jitsi), focus: Bare(BareJID(focus.meet.jitsi)), nick: "gst-meet", region: None, video_codec: "vp8", extra_muc_features: [] }}: close time.busy=239µs time.idle=648ms
Oct 18 15:38:47.069 DEBUG Colibri <<< {"colibriClass":"SenderVideoConstraints", "videoConstraints":{"idealHeight":180}}
Oct 18 15:38:47.069 DEBUG calling on_participant with existing participant: Participant { jid: Some(FullJID(7407942f-1193-4dd6-b197-08057e1199fb@meet.jitsi/OOaP6-XL)), muc_jid: FullJID(vbck-eq98qp9r@muc.meet.jitsi/7407942f), nick: Some("teo") }
Oct 18 15:38:47.070  INFO New participant: Participant { jid: Some(FullJID(7407942f-1193-4dd6-b197-08057e1199fb@meet.jitsi/OOaP6-XL)), muc_jid: FullJID(vbck-eq98qp9r@muc.meet.jitsi/7407942f), nick: Some("teo") }
Oct 18 15:38:47.070 DEBUG Colibri <<< {"colibriClass":"DominantSpeakerEndpointChangeEvent","dominantSpeakerEndpoint":"7407942f","previousSpeakers":["fda767f7","6818f220"]}
Oct 18 15:38:47.070 DEBUG Colibri >>> {"colibriClass":"ReceiverVideoConstraints","lastN":null,"selectedEndpoints":null,"onStageEndpoints":null,"defaultConstraints":{"idealHeight":720,"maxHeight":null},"constraints":null}
0:00:01.239349034 3239621 0x55d414b72150 DEBUG                 vp8dec gstvp8dec.c:119:gst_vp8_dec_init:<GstVP8Dec@0x55d414b766f0> gst_vp8_dec_init
Oct 18 15:38:47.072 DEBUG add_bin{self=JitsiConference { jid: FullJID(6818f220-fa77-413d-8740-9d7c1c56358c@meet.jitsi/II560aVV), config: JitsiConferenceConfig { muc: BareJID(vbck-eq98qp9r@muc.meet.jitsi), focus: Bare(BareJID(focus.meet.jitsi)), nick: "gst-meet", region: None, video_codec: "vp8", extra_muc_features: [] }, inner: Mutex { data: JitsiConferenceInner { state: Idle } } } bin=Bin(ObjectRef { inner: 0x7f35440f9710, type: GstBin })}: close time.busy=55.2µs time.idle=12.5µs
Oct 18 15:38:47.072 DEBUG set_pipeline_state{self=JitsiConference { jid: FullJID(6818f220-fa77-413d-8740-9d7c1c56358c@meet.jitsi/II560aVV), config: JitsiConferenceConfig { muc: BareJID(vbck-eq98qp9r@muc.meet.jitsi), focus: Bare(BareJID(focus.meet.jitsi)), nick: "gst-meet", region: None, video_codec: "vp8", extra_muc_features: [] }, inner: Mutex { data: JitsiConferenceInner { state: Idle } } } state=Playing}: close time.busy=101µs time.idle=25.1µs
Oct 18 15:38:47.119 DEBUG Colibri <<< {"colibriClass":"LastNEndpointsChangeEvent","lastNEndpoints":[]}
Oct 18 15:38:47.120  INFO Colibri message: LastNEndpointsChangeEvent { last_n_endpoints: [] }
Oct 18 15:38:48.197 DEBUG rtpbin request-pt-map [(GstElement) (GstRtpBin) rtpbin, (guint) 0, (guint) 111]
Oct 18 15:38:48.197 DEBUG mapped pt to caps: Caps("application/x-rtp, media=(string)audio, encoding-name=(string)OPUS, clock-rate=(int)48000, extmap-1=(string)urn:ietf:params:rtp-hdrext:ssrc-audio-level, extmap-5=(string)http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01")
Oct 18 15:38:48.218 DEBUG new jitterbuffer created for session 0 ssrc 861082313
Oct 18 15:38:48.218 DEBUG jitterbuffer is for remote source: Source { ssrc: 861082313, participant_id: Some("fda767f7"), media_type: Audio }
Oct 18 15:38:48.233 DEBUG new jitterbuffer created for session 0 ssrc 2435101079
Oct 18 15:38:48.233 DEBUG jitterbuffer is for remote source: Source { ssrc: 2435101079, participant_id: Some("7407942f"), media_type: Audio }
Oct 18 15:38:49.197 DEBUG rtpbin pad-added [(GstRtpBin) (GstRtpBin) rtpbin, (GstPad) (GstGhostPad) recv_rtp_src_0_861082313_111]
Oct 18 15:38:49.197 DEBUG pad added for remote source: Source { ssrc: 861082313, participant_id: Some("fda767f7"), media_type: Audio }
Oct 18 15:38:49.198 DEBUG created depayloader
Oct 18 15:38:49.198 DEBUG linked rtpbin.recv_rtp_src_0_861082313_111 to depayloader
Oct 18 15:38:49.198  INFO New participant: Participant { jid: None, muc_jid: FullJID(vbck-eq98qp9r@muc.meet.jitsi/fda767f7), nick: None }
Oct 18 15:38:49.198  WARN on_participant failed: missing jid
Oct 18 15:38:49.199 DEBUG no participant bin for fda767f7
Oct 18 15:38:49.199 DEBUG nothing linked to depayloader, adding fakesink
Oct 18 15:38:49.199 DEBUG depayloader requested extension: 1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
Oct 18 15:38:49.199 DEBUG depayloader requested extension: 5 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
Oct 18 15:38:49.226 DEBUG rtpbin pad-added [(GstRtpBin) (GstRtpBin) rtpbin, (GstPad) (GstGhostPad) recv_rtp_src_0_2435101079_111]
Oct 18 15:38:49.227 DEBUG pad added for remote source: Source { ssrc: 2435101079, participant_id: Some("7407942f"), media_type: Audio }
Oct 18 15:38:49.227 DEBUG created depayloader
Oct 18 15:38:49.227 DEBUG linked rtpbin.recv_rtp_src_0_2435101079_111 to depayloader
Oct 18 15:38:49.227 DEBUG linking depayloader to participant bin
Oct 18 15:38:49.229 DEBUG depayloader requested extension: 1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
Oct 18 15:38:49.229 DEBUG depayloader requested extension: 5 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
Oct 18 15:38:50.885 DEBUG Colibri <<< {"colibriClass":"EndpointStats","from":"fda767f7","bitrate":{"upload":40,"download":179,"audio":{"upload":32,"download":32},"video":{"upload":8,"download":147}},"packetLoss":{"total":0,"download":0,"upload":0},"connectionQuality":20,"jvbRTT":1,"maxEnabledResolution":180}
Oct 18 15:38:50.885  WARN failed to parse frame on colibri websocket: Error("missing field `serverRegion`", line: 0, column: 0)
frame: {"colibriClass":"EndpointStats","from":"fda767f7","bitrate":{"upload":40,"download":179,"audio":{"upload":32,"download":32},"video":{"upload":8,"download":147}},"packetLoss":{"total":0,"download":0,"upload":0},"connectionQuality":20,"jvbRTT":1,"maxEnabledResolution":180}
Oct 18 15:38:53.407 DEBUG Colibri <<< {"colibriClass":"EndpointStats","from":"7407942f","bitrate":{"upload":1120,"download":40,"audio":{"upload":32,"download":32},"video":{"upload":138,"download":8}},"packetLoss":{"total":0,"download":0,"upload":0},"connectionQuality":100,"jvbRTT":63}
Oct 18 15:38:53.407  WARN failed to parse frame on colibri websocket: Error("missing field `serverRegion`", line: 0, column: 0)
frame: {"colibriClass":"EndpointStats","from":"7407942f","bitrate":{"upload":1120,"download":40,"audio":{"upload":32,"download":32},"video":{"upload":138,"download":8}},"packetLoss":{"total":0,"download":0,"upload":0},"connectionQuality":100,"jvbRTT":63}
Oct 18 15:38:56.529 DEBUG Colibri <<< {"colibriClass":"EndpointMessage","to":"6818f220","from":"fda767f7","msgPayload":{"type":"e2e-ping-request","id":2}}
Oct 18 15:38:56.530  INFO Colibri message: EndpointMessage { from: Some("fda767f7"), to: Some("6818f220"), msg_payload: Object({"id": Number(2), "type": String("e2e-ping-request")}) }
Oct 18 15:39:00.886 DEBUG Colibri <<< {"colibriClass":"EndpointStats","from":"fda767f7","bitrate":{"upload":40,"download":175,"audio":{"upload":32,"download":31},"video":{"upload":8,"download":144}},"packetLoss":{"total":0,"download":0,"upload":0},"connectionQuality":20,"jvbRTT":1,"maxEnabledResolution":180}
Oct 18 15:39:00.886  WARN failed to parse frame on colibri websocket: Error("missing field `serverRegion`", line: 0, column: 0)
frame: {"colibriClass":"EndpointStats","from":"fda767f7","bitrate":{"upload":40,"download":175,"audio":{"upload":32,"download":31},"video":{"upload":8,"download":144}},"packetLoss":{"total":0,"download":0,"upload":0},"connectionQuality":20,"jvbRTT":1,"maxEnabledResolution":180}
^COct 18 15:39:01.030  INFO Exiting...
Oct 18 15:39:01.030 DEBUG leave{self=JitsiConference { jid: FullJID(6818f220-fa77-413d-8740-9d7c1c56358c@meet.jitsi/II560aVV), config: JitsiConferenceConfig { muc: BareJID(vbck-eq98qp9r@muc.meet.jitsi), focus: Bare(BareJID(focus.meet.jitsi)), nick: "gst-meet", region: None, video_codec: "vp8", extra_muc_features: [] }, inner: Mutex { data: JitsiConferenceInner { state: Idle } } }}: pausing all sinks
Oct 18 15:39:01.031 DEBUG leave{self=JitsiConference { jid: FullJID(6818f220-fa77-413d-8740-9d7c1c56358c@meet.jitsi/II560aVV), config: JitsiConferenceConfig { muc: BareJID(vbck-eq98qp9r@muc.meet.jitsi), focus: Bare(BareJID(focus.meet.jitsi)), nick: "gst-meet", region: None, video_codec: "vp8", extra_muc_features: [] }, inner: Mutex { data: JitsiConferenceInner { state: Idle } } }}: setting pipeline state to NULL
Oct 18 15:39:01.077 DEBUG leave{self=JitsiConference { jid: FullJID(6818f220-fa77-413d-8740-9d7c1c56358c@meet.jitsi/II560aVV), config: JitsiConferenceConfig { muc: BareJID(vbck-eq98qp9r@muc.meet.jitsi), focus: Bare(BareJID(focus.meet.jitsi)), nick: "gst-meet", region: None, video_codec: "vp8", extra_muc_features: [] }, inner: Mutex { data: JitsiConferenceInner { state: Idle } } }}: waiting for state change to complete
Oct 18 15:39:01.078 DEBUG pipeline state is null
Oct 18 15:39:01.078 DEBUG leave{self=JitsiConference { jid: FullJID(6818f220-fa77-413d-8740-9d7c1c56358c@meet.jitsi/II560aVV), config: JitsiConferenceConfig { muc: BareJID(vbck-eq98qp9r@muc.meet.jitsi), focus: Bare(BareJID(focus.meet.jitsi)), nick: "gst-meet", region: None, video_codec: "vp8", extra_muc_features: [] }, inner: Mutex { data: JitsiConferenceInner { state: Idle } } }}: close time.busy=47.1ms time.idle=397µs
@jpietek
Copy link

jpietek commented Oct 25, 2021

These nulls could be problematic here?

Colibri >>>{"colibriClass":"ReceiverVideoConstraints","lastN":null,"selectedEndpoints":null,"onStageEndpoints":null,"defaultConstraints":{"idealHeight":720,"maxHeight":null},"constraints":null}

Setting selectedEndpoints, onStageEndpoints to proper string and lastN to some int seems to change the behaviour a bit. Not sure though it guarantees that gstreamer will be always fed with the top 720p quality no matter what requests are passed to Colibri by other participants.

@jbg
Copy link
Contributor

jbg commented Oct 25, 2021

We don't currently implement any real understanding of multiple video layers at all, so simulcast is likely broken in multiple ways. It's near the top of the to-do list though :)

jbg added a commit that referenced this issue Oct 25, 2021
improves ReceiverVideoConstraints serialisation, ref #6
@jpietek
Copy link

jpietek commented Oct 25, 2021

@jbg In our setup we've limited jitsi to vp8, so no spatial layers at the JVB side. The bridge seems to have 3 streams with separate SSRCS, not sure what about temporal layers with 7.5/15/30 fps scaling. Maybe you could give a hint, what part of gst-meet code to modify - to be able to force gst-meet to request the top quality stream? So far we've figured out how to route a selected video stream to gstreamer directly in the JVB Java code, but this approach breaks with simulcast enabled and packet loss, as gstreamer has a simple udpsrc, and cannot request its own NACK/RTX, which I believe does work in gst-meet.

@jbg
Copy link
Contributor

jbg commented Oct 25, 2021

lib-gst-meet needs to parse the SSRC groups in the Jingle description to understand which SSRCs form the simulcast group. then when setting up the gstreamer pipeline it should only create the recv video pipeline once for the whole group. (the earlier part of the video decode pipeline would probably need to be instantiated once for each SSRC, but then the output of each of those could be funneled to one instance of the user's recv video pipeline).

@jbg
Copy link
Contributor

jbg commented Oct 25, 2021

The commit I just pushed, 2968013, may help – I noticed that we are setting the idealHeight constraint based on the recv-video-height argument, but lib-jitsi-meet sets maxHeight. Now we set maxHeight.

@jpietek
Copy link

jpietek commented Oct 25, 2021

Yup, I've also figured out the maxHeight, forgot to mention that. That SSRC bit you've wrote makes sense, but I'm not sure how it translates to VP8SourceProjection in JVB?

https://github.com/jitsi/jitsi-videobridge/blob/9b642e48097aa4388fa44f59d692f25c6ab908ef/jvb/src/main/java/org/jitsi/videobridge/cc/vp8/VP8FrameProjection.java#L145

This seems to trick the clients at the JVB level, that simulcast is actually a single SSRC stream? Also the seq-numbers are rewritten per each Endpoint, conference participant. When I inspect webrtc-internals of multiple clients at a simulcast enabled conference, the SSRC/height combinations differ between participants. Eg. it can start with "low" SSRC and then with good bitrate controller stats can be bumped to 720p (keeping the initial SSRC) and vice versa go 720->360->180 on the 720p SSRC.

@jbg
Copy link
Contributor

jbg commented Oct 25, 2021

I have a theory that JVB is only forwarding the lowest layer because bandwidth probing isn't working correctly. I'll have some time to debug this later today; you could also help if you have access to the debug endpoint on the JVB you're using, by checking the bandwidth estimation values for gst-meet's endpoint.

In your log above, these are the SSRCs that JVB would use for bandwidth probing:

Oct 18 15:38:46.618 DEBUG adding ssrc to remote_ssrc_map: Source { id: "2779611839", parameters: [Parameter { name: "cname", value: Some("mixed") }, Parameter { name: "label", value: Some("mixedlabelaudio0") }, Parameter { name: "msid", value: Some("mixedmslabel mixedlabelaudio0") }, Parameter { name: "mslabel", value: Some("mixedmslabel") }], info: Some(SsrcInfo { owner: "jvb" }) }
Oct 18 15:38:46.618 DEBUG adding ssrc to remote_ssrc_map: Source { id: "3997726519", parameters: [Parameter { name: "cname", value: Some("mixed") }, Parameter { name: "label", value: Some("mixedlabelvideo0") }, Parameter { name: "msid", value: Some("mixedmslabel mixedlabelvideo0") }, Parameter { name: "mslabel", value: Some("mixedmslabel") }], info: Some(SsrcInfo { owner: "jvb" }) }

But I don't see any logging indicating that gstreamer created pads for either of these, which means there will be no RTP depayloaders for them, which means no transport-cc feedback for them, which means bandwidth estimation won't work.

jbg added a commit that referenced this issue Oct 25, 2021
Fixes failure to deserialise EndpointStats due to missing serverRegion
field (noticed in log of #6)
jbg added a commit that referenced this issue Oct 25, 2021
The real JID of MUC participants is not always available (noticed in the
log of #6)
@jbg
Copy link
Contributor

jbg commented Oct 25, 2021

This seems to be the actual reason for no video being received:

Oct 18 15:38:49.198  INFO New participant: Participant { jid: None, muc_jid: FullJID(vbck-eq98qp9r@muc.meet.jitsi/fda767f7), nick: None }
Oct 18 15:38:49.198  WARN on_participant failed: missing jid
Oct 18 15:38:49.199 DEBUG no participant bin for fda767f7
Oct 18 15:38:49.199 DEBUG nothing linked to depayloader, adding fakesink

(Real JID of the participant not available, so gst-meet's on_participant implementation fails.) Should be fixed in a57ce26

@jpietek
Copy link

jpietek commented Oct 25, 2021

Thanks, I've encountered the "missing jid" once, but it did show up video for some other cases with simulcast enabled. I'll try to debug the jvb's bandwidth estimation today,

@jpietek
Copy link

jpietek commented Oct 26, 2021

I've managed to get a basic simulcast scenario working. Got a single stream with forced constant 720p at gst-meet, while the same user was displayed as a 180p thumbnail and 360p grid by other participants using the regular client. RTX seems to work properly, great stuff! :)

I aim to have a single gst-meet instance per user, so used --last=n=1 and a single --select_endpoint=eid, had to modify the onParticipant callback to match this single eid to make it always work:
https://github.com/Tellyo/gst-meet/blob/master/gst-meet/src/main.rs#L237

Plus, it initially crashed on user probing. With our setup focus had both the jid and and nick atrribute defined:
tellyo@16dacc2

The beginning of the stream is a bit weird. If seems to start with the lowest layer and "selects" high quality after a few seconds. I think I've seen this behavior with a regular javascript lib-jitsi-meet before. Could it be connected with missing bandwidth estimation? There are no Colibri endpoint stats for gst-meet in JVB logs server-side, so I guess it doesn't send any bandwidth/rtt/loss stats indeed.

@jbg
Copy link
Contributor

jbg commented Oct 26, 2021

Thanks for this!

Could it be connected with missing bandwidth estimation? There are no Colibri endpoint stats for gst-meet in JVB logs server-side, so I guess it doesn't send any bandwidth/rtt/loss stats indeed.

If you are able to get 720p and you haven't disabled trust-bwe on the JVB side, then I think bandwidth estimation must be working to some extent. EndpointStats messages on the colibri websocket are informational (used for the stats popups in Jitsi Meet and I think for callstats). gst-meet doesn't send them (yet). Bandwidth estimation works based on TCC or REMB feedback.

@jbg
Copy link
Contributor

jbg commented Oct 26, 2021

The beginning of the stream is a bit weird. If seems to start with the lowest layer and "selects" high quality after a few seconds. I think I've seen this behavior with a regular javascript lib-jitsi-meet before.

If the sender is (lib-)jitsi-meet this would be based on startBitrate which is 800 kbit/s by default, so it will always start SD and then ramp up or down from there. You can configure it in jitsi-meet's config.js or in the config you pass to lib-jitsi-meet.

@jpietek
Copy link

jpietek commented Oct 26, 2021

If you are able to get 720p and you haven't disabled trust-bwe on the JVB side,

Ah, I forgot I've set trust-bwe=false at JVB. With trust-bwe=true it works for around 10s, then gets empty lastN notification and stops.

DEBUG Colibri <<< {"colibriClass":"LastNEndpointsChangeEvent","lastNEndpoints":[]}          
INFO Colibri message: LastNEndpointsChangeEvent { last_n_endpoints: [] }  

@jbg
Copy link
Contributor

jbg commented Oct 26, 2021

Right, so bandwidth estimation is indeed still not working correctly. I assume that it's something to do with gstreamer's twcc (tcc) implementation but haven't had a chance to debug it in depth yet.

@jpietek
Copy link

jpietek commented Oct 27, 2021

If the sender is (lib-)jitsi-meet this would be based on startBitrate which is 800 kbit/s by default, so it will always start SD and then ramp up or down from there. You can configure it in jitsi-meet's config.js or in the config you pass to lib-jitsi-meet.

Yup, after bumping startBitrate to 720p stream bitrate; gst-meet starts with 720p nicely. No need to fiddle with jingle.rs manually.

DEBUG descrm: [PayloadType { channels: Channels(1), clockrate: Some(90000), id: 100, maxptime: None, name: Some("VP8"), ptime: None, parame
ters: [Parameter { name: "x-google-start-bitrate", value: "2000" }]

@jbg
Copy link
Contributor

jbg commented Mar 7, 2022

As of 3557183 you can re-enable trust-bwe on the JVB; TWCC is working and the JVB will ramp up to the higher layers. I'll close this ticket and track the motion artifacts in the other ticket.

@jbg jbg closed this as completed Mar 7, 2022
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

No branches or pull requests

3 participants