Skip to end of metadata
Go to start of metadata

Introduction

WebRTC (Web Real-Time Communication) is a technology that enables Web applications and sites to capture and optionally stream audio and/or video media, as well as to exchange arbitrary data between browsers without requiring an intermediary. The set of standards that comprise WebRTC makes it possible to share data and perform teleconferencing peer-to-peer, without requiring that the user install plug-ins or any other third-party software.

Build and Flash Procedure 

Refer below link to build camera image

RDK-C rdk-next Yocto 3.1 dunfell build for Raspberrypi

server and client connectivity diagram  

                                                      

openwebrtc Compilation Procedure For X86

STEP 1:

Below command is cloning the openwebrtc  source into current PC.

git clone https://github.com/rdkcteam/native-webrtc.git


Console output

user@BLTSLRM110:~$ git clone https://github.com/rdkcteam/native-webrtc.git
Cloning into 'native-webrtc'...
remote: Enumerating objects: 49, done.
remote: Counting objects: 100% (41/41), done.
remote: Compressing objects: 100% (20/20), done.
remote: Total 49 (delta 11), reused 41 (delta 11), pack-reused 8
Unpacking objects: 100% (49/49), 41.97 KiB | 511.00 KiB/s, done.


STEP 2:

Goto native-webrtc/PC_Streamer folder and give below export commands.

sudo chmod 777 webrtc_browser.sh 

./webrtc_browser.sh 

Console output

user@BLTSLRM110:~$ cd native-webrtc/PC_Streamer/

user@BLTSLRM110:~/native-webrtc/PC_Streamer$ sudo chmod 777 webrtc_browser.sh 
[sudo] password for user: 
user@BLTSLRM110:~/native-webrtc/PC_Streamer$ ./webrtc_browser.sh 


STEP 3:

Completion of step2  the binaries are generated into native-webrtc/PC_Streamer/webrtc-checkout/out/Default folder inside.

Validation Procedure of Webrtc

Follwing steps are run into Desktop PC(X86) Side:

STEP 1 , STEP 2, STEP 3, STEP 5 , STEP 6, STEP 7.

Follwing step are run into RPI Board Side:

STEP 4

STEP 1:

Run the peerconnection_server binary located at (native-webrtc/PC_Streamer/webrtc-checkout).

./peerconnection_server

Console output

user@BLTSLRM110:~/Desktop/openwebrtc-m72/out/Default$ ./peerconnection_server

Server listening on port 8888


STEP 2:

Open new terminal Goto openwebrtc-m72/out/Defaultpathand path, run the below two commands one by one.

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$(pwd)

./peerconnection_client


Refer the below peerconnection_client GTK window.


STEP 3:

Provide IP address of server pc and press connect button.


Refer the below peerconnection_client GTK window.


STEP 4:

Stop below service before runing the peerconnection_client binary.

systemctl stop rms-launcher
systemctl stop mst-launcher


Run the peerconnection_client binary into RPI board side and Enter server PC IP address, port numner.

peerconnection_client


Console output
root@raspberrypi3-rdk-camera:~# peerconnection_client
Inside constructor CustomSocketServer().....
Initialized thread...
"Registering PeerConnectionClient::RegisterObserver()"
Enter server IP Address
192.168.0.126
Enter port number
8888


STEP 5:

Need to Check whether the peerconnection_server side both clients are connected are not.


Console output

user@BLTSLRM110:~/Desktop/openwebrtc-m72/out/Default$ ./peerconnection_server

Server listening on port 8888

New connection...

New member added (total=1): zaid@zaid-ahmad

Disconnecting socket

Total connected: 1

New connection...

New connection...

New member added (total=2): user@raspberrypi3-rdk-camera

Disconnecting socket

Total connected: 2

New connection...

Disconnecting socket

Total connected: 2

New connection...


STEP 6:

PC side peerconnection_client GTK window shows the number of peers client devices are connected list.



STEP 7:


Double click user@rasspberrypi3-rdk-camera from the listed peer connected devices.



















  • No labels

1 Comment

  1. After step 7 upon Double click user@rasspberrypi3-rdk-camera from the listed peer connected devices, I am facing the below error and connection is getting terminated. Could you kindly assist me on this?

    vineeth@vineeth:~/native-webrtc/PC_Streamer/webrtc-checkout/src/out/Default$ ./peerconnection_client
    (main_wnd.cc:241): SwitchToConnectUI
    (peer_connection_client.cc:298): Headers received
    (peer_connection_client.cc:474): OnClose
    (conductor.cc:220): OnPeerConnected
    (conductor.cc:206): OnSignedIn
    (main_wnd.cc:297): SwitchToPeerList
    (conductor.cc:488): SEND_MESSAGE_TO_PEER
    (peer_connection_client.cc:375): OnHangingGetRead
    (peer_connection_client.cc:298): Headers received
    (peer_connection_client.cc:474): OnClose
    (conductor.cc:227): OnPeerDisconnected
    (main_wnd.cc:297): SwitchToPeerList
    (peer_connection_client.cc:375): OnHangingGetRead
    (peer_connection_client.cc:298): Headers received
    (peer_connection_client.cc:474): OnClose
    (conductor.cc:220): OnPeerConnected
    (main_wnd.cc:297): SwitchToPeerList
    (audio_processing_impl.cc:395): Capture analyzer activated: 0
    Capture post processor activated: 0
    Render pre processor activated: 0
    (webrtcvideoengine.cc:463): WebRtcVideoEngine::WebRtcVideoEngine()
    (webrtcvoiceengine.cc:199): WebRtcVoiceEngine::WebRtcVoiceEngine
    (webrtcvoiceengine.cc:222): WebRtcVoiceEngine::Init
    (webrtcvoiceengine.cc:229): Supported send codecs in order of preference:
    (webrtcvoiceengine.cc:232): opus/48000/2 { minptime=10 useinbandfec=1 } (111)
    (webrtcvoiceengine.cc:232): ISAC/16000/1 (103)
    (webrtcvoiceengine.cc:232): ISAC/32000/1 (104)
    (webrtcvoiceengine.cc:232): G722/8000/1 (9)
    (webrtcvoiceengine.cc:232): ILBC/8000/1 (102)
    (webrtcvoiceengine.cc:232): PCMU/8000/1 (0)
    (webrtcvoiceengine.cc:232): PCMA/8000/1 (8)
    (webrtcvoiceengine.cc:232): CN/32000/1 (106)
    (webrtcvoiceengine.cc:232): CN/16000/1 (105)
    (webrtcvoiceengine.cc:232): CN/8000/1 (13)
    (webrtcvoiceengine.cc:232): telephone-event/48000/1 (110)
    (webrtcvoiceengine.cc:232): telephone-event/32000/1 (112)
    (webrtcvoiceengine.cc:232): telephone-event/16000/1 (113)
    (webrtcvoiceengine.cc:232): telephone-event/8000/1 (126)
    (webrtcvoiceengine.cc:235): Supported recv codecs in order of preference:
    (webrtcvoiceengine.cc:238): opus/48000/2 { minptime=10 useinbandfec=1 } (111)
    (webrtcvoiceengine.cc:238): ISAC/16000/1 (103)
    (webrtcvoiceengine.cc:238): ISAC/32000/1 (104)
    (webrtcvoiceengine.cc:238): G722/8000/1 (9)
    (webrtcvoiceengine.cc:238): ILBC/8000/1 (102)
    (webrtcvoiceengine.cc:238): PCMU/8000/1 (0)
    (webrtcvoiceengine.cc:238): PCMA/8000/1 (8)
    (webrtcvoiceengine.cc:238): CN/32000/1 (106)
    (webrtcvoiceengine.cc:238): CN/16000/1 (105)
    (webrtcvoiceengine.cc:238): CN/8000/1 (13)
    (webrtcvoiceengine.cc:238): telephone-event/48000/1 (110)
    (webrtcvoiceengine.cc:238): telephone-event/32000/1 (112)
    (webrtcvoiceengine.cc:238): telephone-event/16000/1 (113)
    (webrtcvoiceengine.cc:238): telephone-event/8000/1 (126)
    (audio_device_impl.cc:75): Create
    (audio_device_impl.cc:82): CreateForTest
    (audio_device_buffer.cc:61): AudioDeviceBuffer::ctor
    (audio_device_impl.cc:125): AudioDeviceModuleImpl
    (audio_device_impl.cc:129): CheckPlatform
    (audio_device_impl.cc:140): current platform is Linux
    (audio_device_impl.cc:159): CreatePlatformSpecificObjects
    (audio_device_impl.cc:938): PlatformAudioLayer
    (audio_device_impl.cc:269): PulseAudio support is enabled.
    (audio_mixer_manager_pulse_linux.cc:56): AudioMixerManagerLinuxPulse created
    (audio_device_pulse_linux.cc:82): AudioDeviceLinuxPulse created
    (audio_device_impl.cc:274): Linux PulseAudio APIs will be utilized
    (audio_device_impl.cc:314): AttachAudioBuffer
    (audio_device_buffer.cc:178): SetRecordingSampleRate(0)
    (audio_device_buffer.cc:184): SetPlayoutSampleRate(0)
    (audio_device_buffer.cc:198): SetRecordingChannels(0)
    (audio_device_buffer.cc:204): SetPlayoutChannels(0)
    (audio_device_impl.cc:334): Init
    (audio_device_impl.cc:675): SetPlayoutDevice(0)
    (audio_device_impl.cc:367): InitSpeaker
    (audio_device_impl.cc:579): StereoPlayoutIsAvailable
    (audio_mixer_manager_pulse_linux.cc:188): SpeakerIsInitialized
    (audio_device_impl.cc:586): output: 1
    (audio_device_impl.cc:591): SetStereoPlayout(1)
    (audio_device_buffer.cc:204): SetPlayoutChannels(2)
    (audio_device_impl.cc:737): SetRecordingDevice(0)
    (audio_device_impl.cc:373): InitMicrophone
    (audio_device_impl.cc:536): StereoRecordingIsAvailable
    (audio_mixer_manager_pulse_linux.cc:195): MicrophoneIsInitialized
    (audio_device_impl.cc:543): output: 1
    (audio_device_impl.cc:548): SetStereoRecording(1)
    (audio_device_buffer.cc:198): SetRecordingChannels(2)
    (audio_device_impl.cc:850): RegisterAudioCallback
    (audio_device_buffer.cc:79): RegisterAudioCallback
    (webrtcvoiceengine.cc:314): WebRtcVoiceEngine::ApplyOptions: AudioOptions {aec: 1, agc: 1, ns: 1, hf: 1, swap: 0, audio_jitter_buffer_max_packets: 50, audio_jitter_buffer_fast_accelerate: 0, audio_jitter_buffer_min_delay_ms: 0, typing: 1, experimental_agc: 0, extended_filter_aec: 0, delay_agnostic_aec: 0, experimental_ns: 0, residual_echo_detector: 1, }
    (audio_device_impl.cc:866): BuiltInAECIsAvailable
    (audio_device_generic.cc:17): virtual bool webrtc::AudioDeviceGeneric::BuiltInAECIsAvailable() const: Not supported on this platform
    (audio_device_impl.cc:869): output: 0
    (audio_processing_impl.cc:659): Highpass filter activated: 0
    (audio_processing_impl.cc:673): Gain Controller 2 activated: 0
    (audio_processing_impl.cc:675): Pre-amplifier activated: 0
    (apm_helpers.cc:89): Echo control set to 1 with mode 0
    (audio_device_impl.cc:882): BuiltInAGCIsAvailable
    (audio_device_generic.cc:27): virtual bool webrtc::AudioDeviceGeneric::BuiltInAGCIsAvailable() const: Not supported on this platform
    (audio_device_impl.cc:885): output: 0
    (apm_helpers.cc:78): AGC set to 1 with mode 0
    (audio_device_impl.cc:898): BuiltInNSIsAvailable
    (audio_device_generic.cc:37): virtual bool webrtc::AudioDeviceGeneric::BuiltInNSIsAvailable() const: Not supported on this platform
    (audio_device_impl.cc:901): output: 0
    (apm_helpers.cc:103): NS set to 1
    (webrtcvoiceengine.cc:470): Stereo swapping enabled? 0
    (webrtcvoiceengine.cc:475): NetEq capacity is 50
    (webrtcvoiceengine.cc:481): NetEq fast mode? 0
    (webrtcvoiceengine.cc:487): NetEq minimum delay is 0
    (webrtcvoiceengine.cc:494): Typing detection is enabled? 1
    (apm_helpers.cc:117): VAD set to 1 for typing detection.
    (webrtcvoiceengine.cc:505): Delay agnostic aec is enabled? 0
    (webrtcvoiceengine.cc:515): Extended filter aec is enabled? 0
    (webrtcvoiceengine.cc:525): Experimental ns is enabled? 0
    (audio_processing_impl.cc:659): Highpass filter activated: 1
    (audio_processing_impl.cc:673): Gain Controller 2 activated: 0
    (audio_processing_impl.cc:675): Pre-amplifier activated: 0
    (rtc_event_log_impl.cc:68): Creating legacy encoder for RTC event log.
    (peerconnectionfactory.cc:490): Using default network controller factory
    (alr_experiment.cc:66): Using ALR experiment settings: pacing factor: 1, max pacer queue length: 2875, ALR start bandwidth usage percent: 80, ALR end budget level percent: 40, ALR end budget level percent: -60, ALR experiment group ID: 3
    (bitrate_prober.cc:64): Bandwidth probing enabled, set to inactive
    (rtp_transport_controller_send.cc:38): Using TaskQueue based SSCC
    (paced_sender.cc:385): ProcessThreadAttached 0x1804d5e0
    (cpu_info.cc:46): Available number of cores: 8
    (aimd_rate_control.cc:103): Using aimd rate control with back off factor 0.85
    (remote_bitrate_estimator_single_stream.cc:71): RemoteBitrateEstimatorSingleStream: Instantiating.
    (conductor.cc:453): OpenVideoCaptureDevice failed
    (main_wnd.cc:334): SwitchToStreamingUI
    (opensslidentity.cc:44): Making key pair
    (peerconnection.cc:1909): Adding one recvonly video transceiver since CreateOffer specified offer_to_receive=1
    (peerconnection.cc:1488): Adding video transceiver in response to a call to AddTransceiver.
    (opensslidentity.cc:92): Returning key pair
    (opensslcertificate.cc:58): Making certificate for WebRTC
    (opensslcertificate.cc:108): Returning certificate
    (mediasession.cc:349): Duplicate id found. Reassigning from 102 to 127
    (mediasession.cc:349): Duplicate id found. Reassigning from 104 to 125
    (p2ptransportchannel.cc:494): Set backup connection ping interval to 25000 milliseconds.
    (p2ptransportchannel.cc:503): Set ICE receiving timeout to 2500 milliseconds
    (p2ptransportchannel.cc:510): Set ping most likely connection to 0
    (p2ptransportchannel.cc:517): Set stable_writable_connection_ping_interval to 2500
    (p2ptransportchannel.cc:530): Set presume writable when fully relayed to 0
    (p2ptransportchannel.cc:539): Set regather_on_failed_networks_interval to 300000
    (p2ptransportchannel.cc:558): Set receiving_switching_delay to 1000
    (dtlssrtptransport.cc:60): Setting RTCP Transport on 0 transport 0
    (dtlssrtptransport.cc:65): Setting RTP Transport on 0 transport 14004d60
    (p2ptransportchannel.cc:431): Set ICE ufrag: B9yO pwd: ygjOqNvZGgLhWPnaOaqAjSKJ on transport 0
    (webrtcvideoengine.cc:475): CreateMediaChannel. Options: VideoOptions {}
    (channel.cc:115): Created channel for 0
    (channel.cc:183): BaseChannel::Init_w, media_transport=0
    (call.cc:1079): UpdateAggregateNetworkState: aggregate_state=down
    (send_side_congestion_controller.cc:334): SignalNetworkState Down
    (peerconnection.cc:3808): Session: 7139805253934914836 Old state: kStable New state: kHaveLocalOffer
    (channel.cc:952): Setting local video description
    (webrtcvideoengine.cc:945): SetRecvParameters: {codecs: [VideoCodec[98:H264], VideoCodec[100:H264], VideoCodec[127:H264], VideoCodec[125:H264]], extensions: [{uri: urn:ietf:params:rtp-hdrext:toffset, id: 2}, {uri: http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time, id: 3}, {uri: urn:3gpp:video-orientation, id: 4}, {uri: http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01, id: 5}, {uri: http://www.webrtc.org/experiments/rtp-hdrext/playout-delay, id: 6}, {uri: http://www.webrtc.org/experiments/rtp-hdrext/video-content-type, id: 7}, {uri: http://www.webrtc.org/experiments/rtp-hdrext/video-timing, id: 8}, {uri: http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07, id: 10}, {uri: urn:ietf:params:rtp-hdrext:sdes:mid, id: 9}]}
    (webrtcvideoengine.cc:960): Changing recv codecs from {VideoCodec[96:VP8], VideoCodec[98:H264], VideoCodec[100:H264], VideoCodec[102:H264], VideoCodec[104:H264]} to {VideoCodec[98:H264], VideoCodec[100:H264], VideoCodec[127:H264], VideoCodec[125:H264]}
    (channel.cc:939): Changing video state, send=0
    (peerconnection.cc:5099): Local and Remote descriptions must be applied to get the SSL Role of the SCTP transport.
    (basicportallocator.cc:339): Start getting ports with prune_turn_ports disabled
    (basicportallocator.cc:107): Filtered out ignored networks:
    (basicportallocator.cc:109): Net[lo:::1/128:Loopback:id=3]
    (conductor.cc:46): OnSuccess
    (basicportallocator.cc:109): Net[lo:127.0.0.0/8:Loopback:id=2]
    (basicportallocator.cc:850): Network manager has started
    (conductor.cc:488): SEND_MESSAGE_TO_PEER
    (basicportallocator.cc:107): Filtered out ignored networks:
    (peer_connection_client.cc:298): Headers received
    (peer_connection_client.cc:474): OnClose
    (conductor.cc:488): SEND_MESSAGE_TO_PEER
    (basicportallocator.cc:109): Net[lo:::1/128:Loopback:id=3]
    (basicportallocator.cc:109): Net[lo:127.0.0.0/8:Loopback:id=2]
    (basicportallocator.cc:764): Allocate ports on 1 networks
    (basicportallocator.cc:1322): Net[enp0s5:192.168.0.0/24:Unknown:id=1]: Allocation Phase=Udp
    (port.cc:322): Port[140078e0::1:0:local:Net[enp0s5:192.168.0.0/24:Unknown:id=1]]: Port created with network cost 50
    (basicportallocator.cc:1393): AllocationSequence: UDPPort will be handling the STUN candidate generation.
    (basicportallocator.cc:874): Adding allocated port for 0
    (basicportallocator.cc:893): Port[140078e0:0:1:0:local:Net[enp0s5:192.168.0.0/24:Unknown:id=1]]: Added port to allocator
    (basicportallocator.cc:911): Port[140078e0:0:1:0:local:Net[enp0s5:192.168.0.0/24:Unknown:id=1]]: Gathered candidate: Cand[:3132842025:1:udp:2122260223:192.168.0.108:54892:local::0:B9yO:ygjOqNvZGgLhWPnaOaqAjSKJ:1:50:0]
    Is local port type 
    Pairable candidate 
    (basicportallocator.cc:941): Port[140078e0:0:1:0:local:Net[enp0s5:192.168.0.0/24:Unknown:id=1]]: Port ready.
    (physicalsocketserver.cc:553): Socket::OPT_DSCP not supported.
    (p2ptransportchannel.cc:777): Port[140078e0:0:1:0:local:Net[enp0s5:192.168.0.0/24:Unknown:id=1]]: SetOption(5, 0) failed: 0
    Is local port type 
    (stunport.cc:415): Port[140078e0:0:1:0:local:Net[enp0s5:192.168.0.0/24:Unknown:id=1]]: Starting STUN host lookup for stun.l.google.com:19302
    (conductor.cc:178): OnIceCandidate 0
    (conductor.cc:488): SEND_MESSAGE_TO_PEER
    (peer_connection_client.cc:298): Headers received
    (peer_connection_client.cc:474): OnClose
    (conductor.cc:488): SEND_MESSAGE_TO_PEER
    (thread.cc:303): Waiting for the thread to join, but blocking calls have been disallowed
    (basicportallocator.cc:911): Port[140078e0:0:1:0:local:Net[enp0s5:192.168.0.0/24:Unknown:id=1]]: Gathered candidate: Cand[:1005807261:1:udp:1686052607:49.207.200.117:2195:stun:192.168.0.108:54892:B9yO:ygjOqNvZGgLhWPnaOaqAjSKJ:1:50:0]
    Is stun port type 
    Is stun port type 
    (basicportallocator.cc:1018): Port[140078e0:0:1:0:local:Net[enp0s5:192.168.0.0/24:Unknown:id=1]]: Port completed gathering candidates.
    (conductor.cc:178): OnIceCandidate 0
    (conductor.cc:488): SEND_MESSAGE_TO_PEER
    (peer_connection_client.cc:298): Headers received
    (peer_connection_client.cc:474): OnClose
    (conductor.cc:488): SEND_MESSAGE_TO_PEER
    (basicportallocator.cc:1322): Net[enp0s5:192.168.0.0/24:Unknown:id=1]: Allocation Phase=Relay
    (basicportallocator.cc:1322): Net[enp0s5:192.168.0.0/24:Unknown:id=1]: Allocation Phase=Tcp
    (port.cc:322): Port[1401a530::1:0:local:Net[enp0s5:192.168.0.0/24:Unknown:id=1]]: Port created with network cost 50
    (basicportallocator.cc:874): Adding allocated port for 0
    (basicportallocator.cc:893): Port[1401a530:0:1:0:local:Net[enp0s5:192.168.0.0/24:Unknown:id=1]]: Added port to allocator
    (basicportallocator.cc:911): Port[1401a530:0:1:0:local:Net[enp0s5:192.168.0.0/24:Unknown:id=1]]: Gathered candidate: Cand[:4097350873:1:tcp:1518280447:192.168.0.108:49447:local::0:B9yO:ygjOqNvZGgLhWPnaOaqAjSKJ:1:50:0]
    Is local port type 
    Pairable candidate 
    (basicportallocator.cc:941): Port[1401a530:0:1:0:local:Net[enp0s5:192.168.0.0/24:Unknown:id=1]]: Port ready.
    (physicalsocketserver.cc:553): Socket::OPT_DSCP not supported.
    (p2ptransportchannel.cc:777): Port[1401a530:0:1:0:local:Net[enp0s5:192.168.0.0/24:Unknown:id=1]]: SetOption(5, 0) failed: 0
    Is local port type 
    (basicportallocator.cc:1018): Port[1401a530:0:1:0:local:Net[enp0s5:192.168.0.0/24:Unknown:id=1]]: Port completed gathering candidates.
    (basicportallocator.cc:1124): All candidates gathered for 0:1:0
    (p2ptransportchannel.cc:832): P2PTransportChannel: 0, component 1 gathering complete
    (conductor.cc:178): OnIceCandidate 0
    (conductor.cc:488): SEND_MESSAGE_TO_PEER
    (peer_connection_client.cc:298): Headers received
    (peer_connection_client.cc:474): OnClose
    (conductor.cc:488): SEND_MESSAGE_TO_PEER
    (peer_connection_client.cc:375): OnHangingGetRead
    (peer_connection_client.cc:298): Headers received
    (peer_connection_client.cc:474): OnClose
    (conductor.cc:302):  Received session description :{
       "sdp" : "v=0\r\no=- 8828478057305134216 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE 0\r\na=msid-semantic: WMS stream_id\r\nm=video 9 UDP/TLS/RTP/SAVPF 98 100 127 125\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:Kk+S\r\na=ice-pwd:37QYNEmgDvoqcZWtsa3a1c+G\r\na=ice-options:trickle\r\na=fingerprint:sha-256 D3:03:55:19:33:D9:DE:D8:FB:89:78:83:20:D2:06:9D:36:D1:B7:C7:CB:0B:03:3E:1E:D3:1E:CC:02:54:AF:5D\r\na=setup:active\r\na=mid:0\r\na=extmap:2 urn:ietf:params:rtp-hdrext:toffset\r\na=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:4 urn:3gpp:video-orientation\r\na=extmap:5 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay\r\na=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type\r\na=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/video-timing\r\na=extmap:10 http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07\r\na=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=sendonly\r\na=msid:stream_id video_label\r\na=rtcp-mux\r\na=rtcp-rsize\r\na=rtpmap:98 H264/90000\r\na=rtcp-fb:98 goog-remb\r\na=rtcp-fb:98 transport-cc\r\na=rtcp-fb:98 ccm fir\r\na=rtcp-fb:98 nack\r\na=rtcp-fb:98 nack pli\r\na=fmtp:98 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f\r\na=rtpmap:100 H264/90000\r\na=rtcp-fb:100 goog-remb\r\na=rtcp-fb:100 transport-cc\r\na=rtcp-fb:100 ccm fir\r\na=rtcp-fb:100 nack\r\na=rtcp-fb:100 nack pli\r\na=fmtp:100 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f\r\na=rtpmap:127 H264/90000\r\na=rtcp-fb:127 goog-remb\r\na=rtcp-fb:127 transport-cc\r\na=rtcp-fb:127 ccm fir\r\na=rtcp-fb:127 nack\r\na=rtcp-fb:127 nack pli\r\na=fmtp:127 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f\r\na=rtpmap:125 H264/90000\r\na=rtcp-fb:125 goog-remb\r\na=rtcp-fb:125 transport-cc\r\na=rtcp-fb:125 ccm fir\r\na=rtcp-fb:125 nack\r\na=rtcp-fb:125 nack pli\r\na=fmtp:125 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f\r\na=ssrc:1676248609 cname:sUo+4LYSJiKs5g+8\r\na=ssrc:1676248609 msid:stream_id video_label\r\na=ssrc:1676248609 mslabel:stream_id\r\na=ssrc:1676248609 label:video_label\r\n",
       "type" : "answer"
    }
    
    (webrtcvideoengine.cc:1342): Call stats: 669067, {send_bw_bps: 0, recv_bw_bps: 0, max_pad_bps: 0, pacer_delay_ms: 0, rtt_ms: -1}
    (dtlssrtptransport.cc:60): Setting RTCP Transport on 0 transport 0
    (dtlssrtptransport.cc:65): Setting RTP Transport on 0 transport 14004d60
    (p2ptransportchannel.cc:442): Received remote ICE parameters: ufrag=Kk+S, renomination disabled
    (dtlstransport.cc:364): DtlsTransport[0|1|__]: DTLS setup complete.
    (channel.cc:554): Channel enabled
    (channel.cc:939): Changing video state, send=0
    (peerconnection.cc:3808): Session: 7139805253934914836 Old state: kHaveLocalOffer New state: kStable
    (channel.cc:1004): Setting remote video description
    (webrtcvideoengine.cc:683): SetSendParameters: {codecs: [VideoCodec[98:H264], VideoCodec[100:H264], VideoCodec[127:H264], VideoCodec[125:H264]], conference_mode: no, extensions: [{uri: urn:ietf:params:rtp-hdrext:toffset, id: 2}, {uri: http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time, id: 3}, {uri: urn:3gpp:video-orientation, id: 4}, {uri: http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01, id: 5}, {uri: http://www.webrtc.org/experiments/rtp-hdrext/playout-delay, id: 6}, {uri: http://www.webrtc.org/experiments/rtp-hdrext/video-content-type, id: 7}, {uri: http://www.webrtc.org/experiments/rtp-hdrext/video-timing, id: 8}, {uri: http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07, id: 10}, {uri: urn:ietf:params:rtp-hdrext:sdes:mid, id: 9}], extmap-allow-mixed: false, max_bandwidth_bps: -1, mid: 0}
    (webrtcvideoengine.cc:692): Using codec: VideoCodec[98:H264]
    (webrtcvideoengine.cc:744): SetFeedbackOptions on all the receive streams because the send codec or RTCP mode has changed.
    (webrtcvideoengine.cc:1165): AddRecvStream: {id:video_label;ssrcs:[1676248609];ssrc_groups:;cname:sUo+4LYSJiKs5g+8;stream_ids:stream_id;}
    (video_receive_stream.cc:155): VideoReceiveStream: {decoders: [{payload_type: 98, payload_name: H264, codec_params: {level-asymmetry-allowed: 1packetization-mode: 1profile-level-id: 42001f}}, {payload_type: 100, payload_name: H264, codec_params: {level-asymmetry-allowed: 1packetization-mode: 0profile-level-id: 42001f}}, {payload_type: 127, payload_name: H264, codec_params: {level-asymmetry-allowed: 1packetization-mode: 1profile-level-id: 42e01f}}, {payload_type: 125, payload_name: H264, codec_params: {level-asymmetry-allowed: 1packetization-mode: 0profile-level-id: 42e01f}}], rtp: {remote_ssrc: 1676248609, local_ssrc: 1, rtcp_mode: RtcpMode::kReducedSize, rtcp_xr: {receiver_reference_time_report: off}, remb: on, transport_cc: on, nack: {rtp_history_ms: 1000}, ulpfec_payload_type: -1, red_type: -1, rtx_ssrc: 0, rtx_payload_types: {-1 (pt) -> 125 (apt), }, extensions: [{uri: http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07, id: 10}, {uri: http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01, id: 5}, {uri: http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time, id: 3}, {uri: http://www.webrtc.org/experiments/rtp-hdrext/playout-delay, id: 6}, {uri: http://www.webrtc.org/experiments/rtp-hdrext/video-content-type, id: 7}, {uri: http://www.webrtc.org/experiments/rtp-hdrext/video-timing, id: 8}, {uri: urn:3gpp:video-orientation, id: 4}, {uri: urn:ietf:params:rtp-hdrext:sdes:mid, id: 9}, {uri: urn:ietf:params:rtp-hdrext:toffset, id: 2}]}, renderer: (renderer), render_delay_ms: 10, sync_group: stream_id, target_delay_ms: 0}
    (call.cc:1079): UpdateAggregateNetworkState: aggregate_state=down
    (send_side_congestion_controller.cc:334): SignalNetworkState Down
    (h264.cc:105): Creating H264DecoderImpl.
    (h264.cc:105): Creating H264DecoderImpl.
    (h264.cc:105): Creating H264DecoderImpl.
    (h264.cc:105): Creating H264DecoderImpl.
    (channel.cc:680): Add remote ssrc: 1676248609
    (channel.cc:939): Changing video state, send=0
    (peerconnection.cc:3737): Changing IceConnectionState 0 => 1
    (peerconnection.cc:5105): Non-rejected SCTP m= section is needed to get the SSL Role of the SCTP transport.
    (peerconnection.cc:2542): Processing the MSIDs for MID=0 (streams=[stream_id]).
    (peerconnection.cc:2553): Processing the addition of a remote track for MID=0.
    (rtptransceiver.cc:168): Changing transceiver (MID=0) current direction from <not set> to kRecvOnly.
    (webrtcvideoengine.cc:1296): SetSink: ssrc:1676248609 (ptr)
    (conductor.cc:166): OnAddTrack 8be8dfda-b07e-4040-a66f-32781a093480
    
    *************NEW_TRACK_ADDED***********
    (conductor.cc:46): OnSuccess
    (port.cc:524): Received STUN ping id=37624a527950334f76637255 from unknown address 192.168.0.105:55498
    (port.cc:1122): Conn[1401c2e0:0:Net[enp0s5:192.168.0.0/24:Unknown:id=1]:BeUe0Dqj:1:0:local:udp:192.168.0.108:54892->FngOUA40:1:1853824767:prflx:udp:192.168.0.105:55498|C--W|-|0|0|7962116751024340479|-]: Connection created
    (p2ptransportchannel.cc:966): Adding connection from peer reflexive candidate: Cand[:2389903613:1:udp:1853824767:192.168.0.105:55498:prflx::0:Kk+S:37QYNEmgDvoqcZWtsa3a1c+G:1:0:0]
    (port.cc:849): Port[140078e0:0:1:0:local:Net[enp0s5:192.168.0.0/24:Unknown:id=1]]: Sent STUN ping response, to=192.168.0.105:55498, id=37624a527950334f76637255
    (p2ptransportchannel.cc:1875): Channel[0|1|__]: Transport channel state changed from 0 to 2
    (jseptransportcontroller.cc:1251): 0 Transport 1 state changed. Check if state is complete.
    (p2ptransportchannel.cc:1453): Channel[0|1|R_]: Have a pingable connection for the first time; starting to ping.
    (p2ptransportchannel.cc:2422): Selecting connection for triggered check: Conn[1401c2e0:0:Net[enp0s5:192.168.0.0/24:Unknown:id=1]:BeUe0Dqj:1:0:local:udp:192.168.0.108:54892->FngOUA40:1:1853824767:prflx:udp:192.168.0.105:55498|CR-W|-|0|0|7962116751024340479|-]
    (port.cc:1744): Conn[1401c2e0:0:Net[enp0s5:192.168.0.0/24:Unknown:id=1]:BeUe0Dqj:1:0:local:udp:192.168.0.108:54892->FngOUA40:1:1853824767:prflx:udp:192.168.0.105:55498|CR-W|-|0|0|7962116751024340479|-]: Sent STUN ping, id=51554d544964574758534139, use_candidate=1, nomination=0
    (port.cc:1690): Conn[1401c2e0:0:Net[enp0s5:192.168.0.0/24:Unknown:id=1]:BeUe0Dqj:1:0:local:udp:192.168.0.108:54892->FngOUA40:1:1853824767:prflx:udp:192.168.0.105:55498|CR-I|-|0|0|7962116751024340479|-]: Received STUN ping response, id=51554d544964574758534139, code=0, rtt=3, pings_since_last_response=51554d544964574758534139 
    (p2ptransportchannel.cc:271): Switching selected connection due to: candidate pair state changed
    (p2ptransportchannel.cc:1830): Channel[0|1|R_]: New selected connection: Conn[1401c2e0:0:Net[enp0s5:192.168.0.0/24:Unknown:id=1]:BeUe0Dqj:1:0:local:udp:192.168.0.108:54892->FngOUA40:1:1853824767:prflx:udp:192.168.0.105:55498|CRWS|S|0|0|7962116751024340479|3]
    (channel.cc:376): Network route was changed.
    (dtlstransport.cc:779): DtlsTransport[0|1|__]: configuring DTLS handshake timeout 50 based on ICE RTT 3
    (opensslstreamadapter.cc:785): BeginSSL with peer.
    (openssladapter.cc:812): SSL_accept:TLS server read_client_hello
    (openssladapter.cc:822): SSL_accept:error in TLS server read_client_hello
    (dtlstransport.cc:692): DtlsTransport[0|1|__]: DtlsTransport: Started DTLS handshake
    (srtptransport.cc:358): The params in SRTP transport are reset.
    (openssladapter.cc:812): SSL_accept:TLS server select_certificate
    (openssladapter.cc:812): SSL_accept:TLS server select_parameters
    (openssladapter.cc:812): SSL_accept:TLS server send_server_hello
    (openssladapter.cc:812): SSL_accept:TLS server send_server_certificate
    (openssladapter.cc:812): SSL_accept:TLS server send_server_key_exchange
    (openssladapter.cc:812): SSL_accept:TLS server send_server_hello_done
    (openssladapter.cc:812): SSL_accept:TLS server read_client_certificate
    (openssladapter.cc:822): SSL_accept:error in TLS server read_client_certificate
    (openssladapter.cc:812): SSL_accept:TLS server verify_client_certificate
    (opensslstreamadapter.cc:1111): Accepted peer certificate.
    (openssladapter.cc:812): SSL_accept:TLS server read_client_key_exchange
    (openssladapter.cc:812): SSL_accept:TLS server read_client_certificate_verify
    (openssladapter.cc:812): SSL_accept:TLS server read_change_cipher_spec
    (openssladapter.cc:812): SSL_accept:TLS server process_change_cipher_spec
    (openssladapter.cc:812): SSL_accept:TLS server read_next_proto
    (openssladapter.cc:812): SSL_accept:TLS server read_channel_id
    (openssladapter.cc:812): SSL_accept:TLS server read_client_finished
    (openssladapter.cc:812): SSL_accept:TLS server send_server_finished
    (openssladapter.cc:812): SSL_accept:TLS server finish_server_handshake
    (openssladapter.cc:812): SSL_accept:TLS server done
    (dtlstransport.cc:624): DtlsTransport[0|1|__]: DTLS handshake complete.
    (jseptransportcontroller.cc:1188):  Transport 0 writability changed to 1.
    (peerconnection.cc:5656): Changing to ICE completed state because all transports are complete.
    (peerconnection.cc:3737): Changing IceConnectionState 1 => 2
    (call.cc:1079): UpdateAggregateNetworkState: aggregate_state=up
    (send_side_congestion_controller.cc:334): SignalNetworkState Up
    (peerconnection.cc:3737): Changing IceConnectionState 2 => 3
    (dtlssrtptransport.cc:218): Extracting keys from transport: 0
    (srtptransport.cc:303): SRTP activated with negotiated parameters: send cipher_suite 1 recv cipher_suite 1
    (channel.cc:584): Channel writable (0) for the first time
    (channel.cc:939): Changing video state, send=0
    (peer_connection_client.cc:375): OnHangingGetRead
    (peer_connection_client.cc:298): Headers received
    (peer_connection_client.cc:474): OnClose
    (conductor.cc:338):  Received candidate :{
       "candidate" : "candidate:1221703924 1 udp 2122260223 192.168.0.105 55498 typ host generation 0 ufrag Kk+S network-id 1",
       "sdpMLineIndex" : 0,
       "sdpMid" : "0"
    }
    
    (peer_connection_client.cc:375): OnHangingGetRead
    (peer_connection_client.cc:298): Headers received
    (peer_connection_client.cc:474): OnClose
    (port.cc:1122): Conn[14025530:0:Net[enp0s5:192.168.0.0/24:Unknown:id=1]:BeUe0Dqj:1:0:local:udp:192.168.0.108:54892->RBP4DJrJ:1:1686052607:stun:udp:49.207.200.117:2196|C--W|-|0|0|7241540810645061119|-]: Connection created
    (p2ptransportchannel.cc:1239): Channel[0|1|RW]: Created connection with origin: 2, total: 2
    (port.cc:1390): Conn[14025530:0:Net[enp0s5:192.168.0.0/24:Unknown:id=1]:BeUe0Dqj:1:0:local:udp:192.168.0.108:54892->RBP4DJrJ:1:1686052607:stun:udp:49.207.200.117:2196|C--W|-|0|0|7241540810645061119|-]: Connection pruned
    (conductor.cc:338):  Received candidate :{
       "candidate" : "candidate:3382296128 1 udp 1686052607 49.207.200.117 2196 typ srflx raddr 192.168.0.105 rport 55498 generation 0 ufrag Kk+S network-id 1",
       "sdpMLineIndex" : 0,
       "sdpMid" : "0"
    }
    
    (peer_connection_client.cc:375): OnHangingGetRead
    (peer_connection_client.cc:298): Headers received
    (peer_connection_client.cc:474): OnClose
    (port.cc:1122): Conn[14027600:0:Net[enp0s5:192.168.0.0/24:Unknown:id=1]:0S+L6DNR:1:0:local:tcp:192.168.0.108:49447->v7Tnr1KS:1:1518280447:local:tcp:192.168.0.105:39109|C--W|-|0|0|6520964869057822206|-]: Connection created
    (p2ptransportchannel.cc:1239): Channel[0|1|RW]: Created connection with origin: 2, total: 3
    (port.cc:1390): Conn[14027600:0:Net[enp0s5:192.168.0.0/24:Unknown:id=1]:0S+L6DNR:1:0:local:tcp:192.168.0.108:49447->v7Tnr1KS:1:1518280447:local:tcp:192.168.0.105:39109|---W|-|0|0|6520964869057822206|-]: Connection pruned
    (conductor.cc:338):  Received candidate :{
       "candidate" : "candidate:106054660 1 tcp 1518280447 192.168.0.105 39109 typ host tcptype passive generation 0 ufrag Kk+S network-id 1",
       "sdpMLineIndex" : 0,
       "sdpMid" : "0"
    }
    
    (port.cc:1791): Connection deleted with number of pings sent: 0
    (p2ptransportchannel.cc:2285): Channel[0|1|RW]: Removed connection 14025530 (2 remaining)
    (port.cc:1791): Connection deleted with number of pings sent: 0
    (p2ptransportchannel.cc:2285): Channel[0|1|RW]: Removed connection 14027600 (1 remaining)
    (peer_connection_client.cc:375): OnHangingGetRead
    (peer_connection_client.cc:298): Headers received
    (peer_connection_client.cc:474): OnClose
    (conductor.cc:227): OnPeerDisconnected
    (conductor.cc:229): Our peer disconnected
    (conductor.cc:473): PEER_CONNECTION_CLOSED
    (webrtcvideoengine.cc:1296): SetSink: ssrc:1676248609 nullptr
    (channel.cc:564): Channel disabled
    (channel.cc:939): Changing video state, send=0
    (call.cc:1079): UpdateAggregateNetworkState: aggregate_state=down
    (send_side_congestion_controller.cc:334): SignalNetworkState Down
    (video_receive_stream.cc:198): ~VideoReceiveStream: {decoders: [{payload_type: 98, payload_name: H264, codec_params: {level-asymmetry-allowed: 1packetization-mode: 1profile-level-id: 42001f}}, {payload_type: 100, payload_name: H264, codec_params: {level-asymmetry-allowed: 1packetization-mode: 0profile-level-id: 42001f}}, {payload_type: 127, payload_name: H264, codec_params: {level-asymmetry-allowed: 1packetization-mode: 1profile-level-id: 42e01f}}, {payload_type: 125, payload_name: H264, codec_params: {level-asymmetry-allowed: 1packetization-mode: 0profile-level-id: 42e01f}}], rtp: {remote_ssrc: 1676248609, local_ssrc: 1, rtcp_mode: RtcpMode::kReducedSize, rtcp_xr: {receiver_reference_time_report: off}, remb: on, transport_cc: on, nack: {rtp_history_ms: 1000}, ulpfec_payload_type: -1, red_type: -1, rtx_ssrc: 0, rtx_payload_types: {-1 (pt) -> 125 (apt), }, extensions: [{uri: http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07, id: 10}, {uri: http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01, id: 5}, {uri: http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time, id: 3}, {uri: http://www.webrtc.org/experiments/rtp-hdrext/playout-delay, id: 6}, {uri: http://www.webrtc.org/experiments/rtp-hdrext/video-content-type, id: 7}, {uri: http://www.webrtc.org/experiments/rtp-hdrext/video-timing, id: 8}, {uri: urn:3gpp:video-orientation, id: 4}, {uri: urn:ietf:params:rtp-hdrext:sdes:mid, id: 9}, {uri: urn:ietf:params:rtp-hdrext:toffset, id: 2}]}, renderer: (renderer), render_delay_ms: 10, sync_group: stream_id, target_delay_ms: 0}
    (video_render_frames.cc:47): WebRTC.Video.DroppedFrames.RenderQueue 0
    (receive_statistics_proxy.cc:487): Frames decoded 0
    WebRTC.Video.DroppedFrames.Receiver 0
    
    (channel.cc:133): Destroyed channel: 0
    (peerconnection.cc:868): Session: 7139805253934914836 is destroyed.
    (opensslstreamadapter.cc:917): Cleanup
    (openssladapter.cc:815): SSL3 alert write:warning:close notify
    (paced_sender.cc:385): ProcessThreadAttached 0x0
    (paced_sender.cc:385): ProcessThreadAttached 0x0
    (rtc_event_log_impl.cc:209): Stopping WebRTC event log.
    (rtc_event_log_impl.cc:226): WebRTC event log successfully stopped.
    (webrtcvideoengine.cc:467): WebRtcVideoEngine::~WebRtcVideoEngine
    (webrtcvoiceengine.cc:208): WebRtcVoiceEngine::~WebRtcVoiceEngine
    (audio_device_impl.cc:801): StopPlayout
    (audio_device_impl.cc:805): output: 0
    (audio_device_impl.cc:832): StopRecording
    (audio_device_impl.cc:836): output: 0
    (audio_device_impl.cc:850): RegisterAudioCallback
    (audio_device_buffer.cc:79): RegisterAudioCallback
    (audio_device_impl.cc:351): Terminate
    (audio_device_impl.cc:320): ~AudioDeviceModuleImpl
    (audio_device_pulse_linux.cc:91): ~AudioDeviceLinuxPulse destroyed
    (audio_mixer_manager_pulse_linux.cc:61): ~AudioMixerManagerLinuxPulse destroyed
    (audio_device_buffer.cc:73): AudioDeviceBuffer::~dtor
    (main_wnd.cc:297): SwitchToPeerList