Media/WebRTC/WebRTC Debugging: Difference between revisions

From MozillaWiki
< Media‎ | WebRTC
Jump to navigation Jump to search
(Adding profiling link)
(Adding logging modules table)
Line 14: Line 14:
==Logging==
==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.
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==
==Profiling==
One can use the "WebRTC" preset on the [about:logging] page with the [https://profiler.firefox.com/ Firefox Performance Profiler].
One can use the "WebRTC" preset on the [about:logging] page with the [https://profiler.firefox.com/ Firefox Performance Profiler].

Revision as of 16:43, 10 August 2023

Reporting WebRTC Call Issues

The best way to report an issue is through Bugzilla using this 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 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

  1. While your call is still ongoing, open a tab and visit about:webrtc
  2. Click "Clear History" to clear the stats from other recent calls which are no longer ongoing.
  3. At the bottom of the page click 'Save Page', and save this file.
  4. Add this file as an attachment to your bug.

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:

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"

Note that webrtc_trace will not be active until "Enable WebRTC Log Preset" is pressed.

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 ?

Profiling

One can use the "WebRTC" preset on the [about:logging] page with the Firefox Performance Profiler.

Examining Call Performance Issues

Dumping Packet Headers

Running WebRTC Tests

Debugging Using 3rd Party Websites

Using RR And/Or Pernosco