Media/WebRTC/WebRTC Debugging: Difference between revisions

From MozillaWiki
< Media‎ | WebRTC
Jump to navigation Jump to search
(Added JSON dumping and call stats history)
(redirect to in-tree docs)
 
(20 intermediate revisions by 3 users not shown)
Line 1: Line 1:
==Reporting WebRTC Call Issues==
[https://firefox-source-docs.mozilla.org/contributing/debugging/debugging_webrtc_calls.html Moved Here]
The best way to report an issue is through Bugzilla using this [https://bugzilla.mozilla.org/enter_bug.cgi?product=Core&component=WebRTC link]. Describing the issue you've run into, and include a URL along, with the details of the call setup.
 
For simple issues, the first place to look is to check the [https://firefox-source-docs.mozilla.org/devtools-user/web_console/ web developer console] for error messages related to media format issues. If you see messages here related to WebRTC, getUserMedia, or getDisplayMedia, please add this information to your bug.
 
'''Share Your about:webrtc Contents'''
 
# While your call is still ongoing, open a tab and visit about:webrtc<br />
# Click "Clear History" to clear the stats from other recent calls which are no longer ongoing.<br />
# At the bottom of the page click 'Save Page', and save this file.<br />
# Add this file as an attachment to your bug.<br />
This file contains statistics about your call, the signalling that was used to setup your call, and information about the network transports.
 
==Logging==
Logging can be enabled through the "Enable WebRTC Log Preset" button at the bottom of [about:webrtc]. Alternatively one can set the following environment variable:<syntaxhighlight language="shell">MOZ_LOG="jsep:5,sdp:5,signaling:5,mtransport:5,RTCRtpReceiver:5,RTCRtpSender:5,RTCDMTFSender:5,VideoFrameConverter:5,WebrtcTCPSocket:5,CamerasChild:5,CamerasParent:5,VideoEngine:5,ShmemPool:5,TabShare:5,MediaChild:5,MediaParent:5,MediaManager:5,MediaTrackGraph:5,cubeb:5,MediaStream:5,MediaStreamTrack:5,DriftCompensator:5,ForwardInputTrack:5,MediaRecorder:5,MediaEncoder:5,TrackEncoder:5,VP8TrackEncoder:5,Muxer:5,GetUserMedia:5,MediaPipeline:5,PeerConnectionImpl:5,WebAudioAPI:5,webrtc_trace:5,RTCRtpTransceiver:5,ForwardedInputTrack:5,HTMLMediaElement:5,HTMLMediaElementEvents:5"</syntaxhighlight> Note that webrtc_trace will not be active until "Enable WebRTC Log Preset" is pressed.
{| class="wikitable sortable"
|-
! Module !! Component !! Function !! Notes
|-
| jsep || signalling || JSEP state machine ||
|-
| sdp || signalling || SDP parsing ||
|-
| mtransport || networking || network transports ||
|-
| RTCRtpReceiver || networking || receiving media and media control packets ||
|-
| RTCRtpSender || networking || sending media and media control packets ||
|-
| RTCDMTFSender || networking || sending DTMF messages ||
|-
| VideoFrameConverter || ? || ? ||
|-
| WebrtcTCPSocket || networking || ? ||
|-
| CamerasChild || media capture || Content process end of IPC channel for receiving frames from media capture devices ||
|-
| CamerasParent || media capture || Parent process end of IPC channel for sending frames from media capture devices ||
|-
| VideoEngine || media capture || Orchestrates capture of frames from media capture devices in the parent process ||
|-
| ShmemPool || media capture || Object pool of shared memory frame buffers for transferring media capture frames from parent to child process ||
|-
| TabShare || media capture || ? ||
|-
| MediaChild || media || ? ||
|-
| MediaParent || media || ? ||
|-
| MediaManager || media || ? ||
|-
| MediaTrackGraph || media || ? ||
|-
| cubeb || media || ? ||
|-
| MediaStream || media || ? ||
|-
| MediaStreamTrack || media || ? ||
|-
| DriftCompensator || media || ? ||
|-
| ForwardInputTrack || media || ? ||
|-
| MediaRecorder || media || ? ||
|-
| MediaEncoder || media || ? ||
|-
| TrackEncoder || media || ? ||
|-
| VP8TrackEncoder || media || ? ||
|-
| Muxer || media || ? ||
|-
| MediaPipeline || network || ??? delivers media packets from the transport ||
|-
| PeerConnectionImpl || JS API || implements the RTCPeerConnection object ||
|-
| WebAudioAPI || ?? || ? ||
|-
| webrtc_trace || webrtc || libwebrtc logging || needs to be enabled from [about:webrtc]
|-
| RTCRtpTransceiver || JS API || implements the RTCRtpTransceiver object ||
|-
| ForwardedInputTrack || ?? || ? ||
|-
| HTMLMediaElement || ?? || ? ||
|-
| HTMLMediaElementEvents || ?? || ? ||
|-
|}
==Profiling==
One can use the "WebRTC" preset on the [about:logging] page with the [https://profiler.firefox.com/ Firefox Performance Profiler].
 
==Examining Call Performance Issues==
==Enabling Call Stats History==
Call stats history is enabled by default in Nightly. To enable in release builds open [about:config], and change "media.aboutwebrtc.hist.enabled" to true. This will keep a history windows of stats for a number of recent calls, allowing for inspection in [about:webrtc] after a call has completed.
==Dumping Call Stats==
One can dump a JSON blob of call stats for an active call, or a recent call if call stats history is enabled. There are two buttons in [about:webrtc] to do this, "Copy Report" and "Copy Report History". The former will create a copy of the most recent stats for the PeerConnection. The later will copy all the history of stats reports that [about:webrtc] has accumulated for that PeerConnection, this can be up to several minutes of stats.
==Dumping Packet Headers==
==Running WebRTC Tests==
==Debugging Using 3rd Party Websites==
==Using RR And/Or Pernosco==

Latest revision as of 14:03, 17 January 2024