1*d9f75844SAndroid Build Coastguard Worker<?% config.freshness.reviewed = '2021-04-14' %?> 2*d9f75844SAndroid Build Coastguard Worker<?% config.freshness.owner = 'asapersson' %?> 3*d9f75844SAndroid Build Coastguard Worker 4*d9f75844SAndroid Build Coastguard Worker# Video stats 5*d9f75844SAndroid Build Coastguard Worker 6*d9f75844SAndroid Build Coastguard WorkerOverview of collected statistics for [VideoSendStream] and [VideoReceiveStream]. 7*d9f75844SAndroid Build Coastguard Worker 8*d9f75844SAndroid Build Coastguard Worker## VideoSendStream 9*d9f75844SAndroid Build Coastguard Worker 10*d9f75844SAndroid Build Coastguard Worker[VideoSendStream::Stats] for a sending stream can be gathered via `VideoSendStream::GetStats()`. 11*d9f75844SAndroid Build Coastguard Worker 12*d9f75844SAndroid Build Coastguard WorkerSome statistics are collected per RTP stream (see [StreamStats]) and can be of `StreamType`: `kMedia`, `kRtx`, `kFlexfec`. 13*d9f75844SAndroid Build Coastguard Worker 14*d9f75844SAndroid Build Coastguard WorkerMultiple `StreamStats` objects are for example present if simulcast is used (multiple `kMedia` objects) or if RTX or FlexFEC is negotiated. 15*d9f75844SAndroid Build Coastguard Worker 16*d9f75844SAndroid Build Coastguard Worker### SendStatisticsProxy 17*d9f75844SAndroid Build Coastguard Worker`VideoSendStream` owns a [SendStatisticsProxy] which implements 18*d9f75844SAndroid Build Coastguard Worker`VideoStreamEncoderObserver`, 19*d9f75844SAndroid Build Coastguard Worker`RtcpStatisticsCallback`, 20*d9f75844SAndroid Build Coastguard Worker`ReportBlockDataObserver`, 21*d9f75844SAndroid Build Coastguard Worker`RtcpPacketTypeCounterObserver`, 22*d9f75844SAndroid Build Coastguard Worker`StreamDataCountersCallback`, 23*d9f75844SAndroid Build Coastguard Worker`BitrateStatisticsObserver`, 24*d9f75844SAndroid Build Coastguard Worker`FrameCountObserver`, 25*d9f75844SAndroid Build Coastguard Worker`SendSideDelayObserver` 26*d9f75844SAndroid Build Coastguard Workerand holds a `VideoSendStream::Stats` object. 27*d9f75844SAndroid Build Coastguard Worker 28*d9f75844SAndroid Build Coastguard Worker`SendStatisticsProxy` is called via these interfaces by different components (e.g. `RtpRtcp` module) to update stats. 29*d9f75844SAndroid Build Coastguard Worker 30*d9f75844SAndroid Build Coastguard Worker#### StreamStats 31*d9f75844SAndroid Build Coastguard Worker* `type` - kMedia, kRtx or kFlexfec. 32*d9f75844SAndroid Build Coastguard Worker* `referenced_media_ssrc` - only present for type kRtx/kFlexfec. The SSRC for the kMedia stream that retransmissions or FEC is performed for. 33*d9f75844SAndroid Build Coastguard Worker 34*d9f75844SAndroid Build Coastguard WorkerUpdated when a frame has been encoded, `VideoStreamEncoder::OnEncodedImage`. 35*d9f75844SAndroid Build Coastguard Worker* `frames_encoded `- total number of encoded frames. 36*d9f75844SAndroid Build Coastguard Worker* `encode_frame_rate` - number of encoded frames during the last second. 37*d9f75844SAndroid Build Coastguard Worker* `width` - width of last encoded frame [[rtcoutboundrtpstreamstats-framewidth]]. 38*d9f75844SAndroid Build Coastguard Worker* `height` - height of last encoded frame [[rtcoutboundrtpstreamstats-frameheight]]. 39*d9f75844SAndroid Build Coastguard Worker* `total_encode_time_ms` - total encode time for encoded frames. 40*d9f75844SAndroid Build Coastguard Worker* `qp_sum` - sum of quantizer values of encoded frames [[rtcoutboundrtpstreamstats-qpsum]]. 41*d9f75844SAndroid Build Coastguard Worker* `frame_counts` - total number of encoded key/delta frames [[rtcoutboundrtpstreamstats-keyframesencoded]]. 42*d9f75844SAndroid Build Coastguard Worker 43*d9f75844SAndroid Build Coastguard WorkerUpdated when a RTP packet is transmitted to the network, `RtpSenderEgress::SendPacket`. 44*d9f75844SAndroid Build Coastguard Worker* `rtp_stats` - total number of sent bytes/packets. 45*d9f75844SAndroid Build Coastguard Worker* `total_bitrate_bps` - total bitrate sent in bits per second (over a one second window). 46*d9f75844SAndroid Build Coastguard Worker* `retransmit_bitrate_bps` - total retransmit bitrate sent in bits per second (over a one second window). 47*d9f75844SAndroid Build Coastguard Worker* `avg_delay_ms` - average capture-to-send delay for sent packets (over a one second window). 48*d9f75844SAndroid Build Coastguard Worker* `max_delay_ms` - maximum capture-to-send delay for sent packets (over a one second window). 49*d9f75844SAndroid Build Coastguard Worker* `total_packet_send_delay_ms` - total capture-to-send delay for sent packets [[rtcoutboundrtpstreamstats-totalpacketsenddelay]]. 50*d9f75844SAndroid Build Coastguard Worker 51*d9f75844SAndroid Build Coastguard WorkerUpdated when an incoming RTCP packet is parsed, `RTCPReceiver::ParseCompoundPacket`. 52*d9f75844SAndroid Build Coastguard Worker* `rtcp_packet_type_counts` - total number of received NACK/FIR/PLI packets [rtcoutboundrtpstreamstats-[nackcount], [fircount], [plicount]]. 53*d9f75844SAndroid Build Coastguard Worker 54*d9f75844SAndroid Build Coastguard WorkerUpdated when a RTCP report block packet is received, `RTCPReceiver::TriggerCallbacksFromRtcpPacket`. 55*d9f75844SAndroid Build Coastguard Worker* `rtcp_stats` - RTCP report block data. 56*d9f75844SAndroid Build Coastguard Worker* `report_block_data` - RTCP report block data. 57*d9f75844SAndroid Build Coastguard Worker 58*d9f75844SAndroid Build Coastguard Worker#### Stats 59*d9f75844SAndroid Build Coastguard Worker* `std::map<uint32_t, StreamStats> substreams` - StreamStats mapped per SSRC. 60*d9f75844SAndroid Build Coastguard Worker 61*d9f75844SAndroid Build Coastguard WorkerUpdated when a frame is received from the source, `VideoStreamEncoder::OnFrame`. 62*d9f75844SAndroid Build Coastguard Worker* `frames` - total number of frames fed to VideoStreamEncoder. 63*d9f75844SAndroid Build Coastguard Worker* `input_frame_rate` - number of frames fed to VideoStreamEncoder during the last second. 64*d9f75844SAndroid Build Coastguard Worker* `frames_dropped_by_congestion_window` - total number of dropped frames due to congestion window pushback. 65*d9f75844SAndroid Build Coastguard Worker* `frames_dropped_by_encoder_queue` - total number of dropped frames due to that the encoder is blocked. 66*d9f75844SAndroid Build Coastguard Worker 67*d9f75844SAndroid Build Coastguard WorkerUpdated if a frame from the source is dropped, `VideoStreamEncoder::OnDiscardedFrame`. 68*d9f75844SAndroid Build Coastguard Worker* `frames_dropped_by_capturer` - total number dropped frames by the source. 69*d9f75844SAndroid Build Coastguard Worker 70*d9f75844SAndroid Build Coastguard WorkerUpdated if a frame is dropped by `FrameDropper`, `VideoStreamEncoder::MaybeEncodeVideoFrame`. 71*d9f75844SAndroid Build Coastguard Worker* `frames_dropped_by_rate_limiter` - total number of dropped frames to avoid bitrate overuse. 72*d9f75844SAndroid Build Coastguard Worker 73*d9f75844SAndroid Build Coastguard WorkerUpdated (if changed) before a frame is passed to the encoder, `VideoStreamEncoder::EncodeVideoFrame`. 74*d9f75844SAndroid Build Coastguard Worker* `encoder_implementation_name` - name of encoder implementation [[rtcoutboundrtpstreamstats-encoderimplementation]]. 75*d9f75844SAndroid Build Coastguard Worker 76*d9f75844SAndroid Build Coastguard WorkerUpdated after a frame has been encoded, `VideoStreamEncoder::OnEncodedImage`. 77*d9f75844SAndroid Build Coastguard Worker* `frames_encoded `- total number of encoded frames [[rtcoutboundrtpstreamstats-framesencoded]]. 78*d9f75844SAndroid Build Coastguard Worker* `encode_frame_rate` - number of encoded frames during the last second [[rtcoutboundrtpstreamstats-framespersecond]]. 79*d9f75844SAndroid Build Coastguard Worker* `total_encoded_bytes_target` - total target frame size in bytes [[rtcoutboundrtpstreamstats-totalencodedbytestarget]]. 80*d9f75844SAndroid Build Coastguard Worker* `huge_frames_sent` - total number of huge frames sent [[rtcoutboundrtpstreamstats-hugeframessent]]. 81*d9f75844SAndroid Build Coastguard Worker* `media_bitrate_bps` - the actual bitrate the encoder is producing. 82*d9f75844SAndroid Build Coastguard Worker* `avg_encode_time_ms` - average encode time for encoded frames. 83*d9f75844SAndroid Build Coastguard Worker* `total_encode_time_ms` - total encode time for encoded frames [[rtcoutboundrtpstreamstats-totalencodetime]]. 84*d9f75844SAndroid Build Coastguard Worker* `frames_dropped_by_encoder`- total number of dropped frames by the encoder. 85*d9f75844SAndroid Build Coastguard Worker 86*d9f75844SAndroid Build Coastguard WorkerAdaptation stats. 87*d9f75844SAndroid Build Coastguard Worker* `bw_limited_resolution` - shows if resolution is limited due to restricted bandwidth. 88*d9f75844SAndroid Build Coastguard Worker* `cpu_limited_resolution` - shows if resolution is limited due to cpu. 89*d9f75844SAndroid Build Coastguard Worker* `bw_limited_framerate` - shows if framerate is limited due to restricted bandwidth. 90*d9f75844SAndroid Build Coastguard Worker* `cpu_limited_framerate` - shows if framerate is limited due to cpu. 91*d9f75844SAndroid Build Coastguard Worker* `quality_limitation_reason` - current reason for limiting resolution and/or framerate [[rtcoutboundrtpstreamstats-qualitylimitationreason]]. 92*d9f75844SAndroid Build Coastguard Worker* `quality_limitation_durations_ms` - total time spent in quality limitation state [[rtcoutboundrtpstreamstats-qualitylimitationdurations]]. 93*d9f75844SAndroid Build Coastguard Worker* `quality_limitation_resolution_changes` - total number of times that resolution has changed due to quality limitation [[rtcoutboundrtpstreamstats-qualitylimitationresolutionchanges]]. 94*d9f75844SAndroid Build Coastguard Worker* `number_of_cpu_adapt_changes` - total number of times resolution/framerate has changed due to cpu limitation. 95*d9f75844SAndroid Build Coastguard Worker* `number_of_quality_adapt_changes` - total number of times resolution/framerate has changed due to quality limitation. 96*d9f75844SAndroid Build Coastguard Worker 97*d9f75844SAndroid Build Coastguard WorkerUpdated when the encoder is configured, `VideoStreamEncoder::ReconfigureEncoder`. 98*d9f75844SAndroid Build Coastguard Worker* `content_type` - configured content type (UNSPECIFIED/SCREENSHARE). 99*d9f75844SAndroid Build Coastguard Worker 100*d9f75844SAndroid Build Coastguard WorkerUpdated when the available bitrate changes, `VideoSendStreamImpl::OnBitrateUpdated`. 101*d9f75844SAndroid Build Coastguard Worker* `target_media_bitrate_bps` - the bitrate the encoder is configured to use. 102*d9f75844SAndroid Build Coastguard Worker* `suspended` - shows if video is suspended due to zero target bitrate. 103*d9f75844SAndroid Build Coastguard Worker 104*d9f75844SAndroid Build Coastguard Worker## VideoReceiveStream 105*d9f75844SAndroid Build Coastguard Worker[VideoReceiveStream::Stats] for a receiving stream can be gathered via `VideoReceiveStream::GetStats()`. 106*d9f75844SAndroid Build Coastguard Worker 107*d9f75844SAndroid Build Coastguard Worker### ReceiveStatisticsProxy 108*d9f75844SAndroid Build Coastguard Worker`VideoReceiveStream` owns a [ReceiveStatisticsProxy] which implements 109*d9f75844SAndroid Build Coastguard Worker`VCMReceiveStatisticsCallback`, 110*d9f75844SAndroid Build Coastguard Worker`RtcpCnameCallback`, 111*d9f75844SAndroid Build Coastguard Worker`RtcpPacketTypeCounterObserver`, 112*d9f75844SAndroid Build Coastguard Worker`CallStatsObserver` 113*d9f75844SAndroid Build Coastguard Workerand holds a `VideoReceiveStream::Stats` object. 114*d9f75844SAndroid Build Coastguard Worker 115*d9f75844SAndroid Build Coastguard Worker`ReceiveStatisticsProxy` is called via these interfaces by different components (e.g. `RtpRtcp` module) to update stats. 116*d9f75844SAndroid Build Coastguard Worker 117*d9f75844SAndroid Build Coastguard Worker#### Stats 118*d9f75844SAndroid Build Coastguard Worker* `current_payload_type` - current payload type. 119*d9f75844SAndroid Build Coastguard Worker* `ssrc` - configured SSRC for the received stream. 120*d9f75844SAndroid Build Coastguard Worker 121*d9f75844SAndroid Build Coastguard WorkerUpdated when a complete frame is received, `FrameBuffer::InsertFrame`. 122*d9f75844SAndroid Build Coastguard Worker* `frame_counts` - total number of key/delta frames received [[rtcinboundrtpstreamstats-keyframesdecoded]]. 123*d9f75844SAndroid Build Coastguard Worker* `network_frame_rate` - number of frames received during the last second. 124*d9f75844SAndroid Build Coastguard Worker 125*d9f75844SAndroid Build Coastguard WorkerUpdated when a frame is ready for decoding, `FrameBuffer::GetNextFrame`. From `VCMTiming`: 126*d9f75844SAndroid Build Coastguard Worker* `jitter_buffer_ms` - jitter buffer delay in ms. 127*d9f75844SAndroid Build Coastguard Worker* `max_decode_ms` - the 95th percentile observed decode time within a time window (10 sec). 128*d9f75844SAndroid Build Coastguard Worker* `render_delay_ms` - render delay in ms. 129*d9f75844SAndroid Build Coastguard Worker* `min_playout_delay_ms` - minimum playout delay in ms. 130*d9f75844SAndroid Build Coastguard Worker* `target_delay_ms` - target playout delay in ms. Max(`min_playout_delay_ms`, `jitter_delay_ms` + `max_decode_ms` + `render_delay_ms`). 131*d9f75844SAndroid Build Coastguard Worker* `current_delay_ms` - actual playout delay in ms. 132*d9f75844SAndroid Build Coastguard Worker* `jitter_buffer_delay_seconds` - total jitter buffer delay in seconds [[rtcinboundrtpstreamstats-jitterbufferdelay]]. 133*d9f75844SAndroid Build Coastguard Worker* `jitter_buffer_emitted_count` - total number of frames that have come out from the jitter buffer [[rtcinboundrtpstreamstats-jitterbufferemittedcount]]. 134*d9f75844SAndroid Build Coastguard Worker 135*d9f75844SAndroid Build Coastguard WorkerUpdated (if changed) after a frame is passed to the decoder, `VCMGenericDecoder::Decode`. 136*d9f75844SAndroid Build Coastguard Worker* `decoder_implementation_name` - name of decoder implementation [[rtcinboundrtpstreamstats-decoderimplementation]]. 137*d9f75844SAndroid Build Coastguard Worker 138*d9f75844SAndroid Build Coastguard WorkerUpdated when a frame is ready for decoding, `FrameBuffer::GetNextFrame`. 139*d9f75844SAndroid Build Coastguard Worker* `timing_frame_info` - timestamps for a full lifetime of a frame. 140*d9f75844SAndroid Build Coastguard Worker* `first_frame_received_to_decoded_ms` - initial decoding latency between the first arrived frame and the first decoded frame. 141*d9f75844SAndroid Build Coastguard Worker* `frames_dropped` - total number of dropped frames prior to decoding or if the system is too slow [[rtcreceivedrtpstreamstats-framesdropped]]. 142*d9f75844SAndroid Build Coastguard Worker 143*d9f75844SAndroid Build Coastguard WorkerUpdated after a frame has been decoded, `VCMDecodedFrameCallback::Decoded`. 144*d9f75844SAndroid Build Coastguard Worker* `frames_decoded` - total number of decoded frames [[rtcinboundrtpstreamstats-framesdecoded]]. 145*d9f75844SAndroid Build Coastguard Worker* `decode_frame_rate` - number of decoded frames during the last second [[rtcinboundrtpstreamstats-framespersecond]]. 146*d9f75844SAndroid Build Coastguard Worker* `decode_ms` - time to decode last frame in ms. 147*d9f75844SAndroid Build Coastguard Worker* `total_decode_time_ms` - total decode time for decoded frames [[rtcinboundrtpstreamstats-totaldecodetime]]. 148*d9f75844SAndroid Build Coastguard Worker* `qp_sum` - sum of quantizer values of decoded frames [[rtcinboundrtpstreamstats-qpsum]]. 149*d9f75844SAndroid Build Coastguard Worker* `content_type` - content type (UNSPECIFIED/SCREENSHARE). 150*d9f75844SAndroid Build Coastguard Worker* `interframe_delay_max_ms` - max inter-frame delay within a time window between decoded frames. 151*d9f75844SAndroid Build Coastguard Worker* `total_inter_frame_delay` - sum of inter-frame delay in seconds between decoded frames [[rtcinboundrtpstreamstats-totalinterframedelay]]. 152*d9f75844SAndroid Build Coastguard Worker* `total_squared_inter_frame_delay` - sum of squared inter-frame delays in seconds between decoded frames [[rtcinboundrtpstreamstats-totalsquaredinterframedelay]]. 153*d9f75844SAndroid Build Coastguard Worker 154*d9f75844SAndroid Build Coastguard WorkerUpdated before a frame is sent to the renderer, `VideoReceiveStream2::OnFrame`. 155*d9f75844SAndroid Build Coastguard Worker* `frames_rendered` - total number of rendered frames. 156*d9f75844SAndroid Build Coastguard Worker* `render_frame_rate` - number of rendered frames during the last second. 157*d9f75844SAndroid Build Coastguard Worker* `width` - width of last frame fed to renderer [[rtcinboundrtpstreamstats-framewidth]]. 158*d9f75844SAndroid Build Coastguard Worker* `height` - height of last frame fed to renderer [[rtcinboundrtpstreamstats-frameheight]]. 159*d9f75844SAndroid Build Coastguard Worker* `estimated_playout_ntp_timestamp_ms` - estimated playout NTP timestamp [[rtcinboundrtpstreamstats-estimatedplayouttimestamp]]. 160*d9f75844SAndroid Build Coastguard Worker* `sync_offset_ms` - NTP timestamp difference between the last played out audio and video frame. 161*d9f75844SAndroid Build Coastguard Worker* `freeze_count` - total number of detected freezes. 162*d9f75844SAndroid Build Coastguard Worker* `pause_count` - total number of detected pauses. 163*d9f75844SAndroid Build Coastguard Worker* `total_freezes_duration_ms` - total duration of freezes in ms. 164*d9f75844SAndroid Build Coastguard Worker* `total_pauses_duration_ms` - total duration of pauses in ms. 165*d9f75844SAndroid Build Coastguard Worker* `total_frames_duration_ms` - time in ms between the last rendered frame and the first rendered frame. 166*d9f75844SAndroid Build Coastguard Worker* `sum_squared_frame_durations` - sum of squared inter-frame delays in seconds between rendered frames. 167*d9f75844SAndroid Build Coastguard Worker 168*d9f75844SAndroid Build Coastguard Worker`ReceiveStatisticsImpl::OnRtpPacket` is updated for received RTP packets. From `ReceiveStatistics`: 169*d9f75844SAndroid Build Coastguard Worker* `total_bitrate_bps` - incoming bitrate in bps. 170*d9f75844SAndroid Build Coastguard Worker* `rtp_stats` - RTP statistics for the received stream. 171*d9f75844SAndroid Build Coastguard Worker 172*d9f75844SAndroid Build Coastguard WorkerUpdated when a RTCP packet is sent, `RTCPSender::ComputeCompoundRTCPPacket`. 173*d9f75844SAndroid Build Coastguard Worker* `rtcp_packet_type_counts` - total number of sent NACK/FIR/PLI packets [rtcinboundrtpstreamstats-[nackcount], [fircount], [plicount]]. 174*d9f75844SAndroid Build Coastguard Worker 175*d9f75844SAndroid Build Coastguard Worker 176*d9f75844SAndroid Build Coastguard Worker[VideoSendStream]: https://source.chromium.org/chromium/chromium/src/+/main:third_party/webrtc/call/video_send_stream.h 177*d9f75844SAndroid Build Coastguard Worker[VideoSendStream::Stats]: https://source.chromium.org/chromium/chromium/src/+/main:third_party/webrtc/call/video_send_stream.h?q=VideoSendStream::Stats 178*d9f75844SAndroid Build Coastguard Worker[StreamStats]: https://source.chromium.org/chromium/chromium/src/+/main:third_party/webrtc/call/video_send_stream.h?q=VideoSendStream::StreamStats 179*d9f75844SAndroid Build Coastguard Worker[SendStatisticsProxy]: https://source.chromium.org/chromium/chromium/src/+/main:third_party/webrtc/video/send_statistics_proxy.h 180*d9f75844SAndroid Build Coastguard Worker[rtcoutboundrtpstreamstats-framewidth]: https://w3c.github.io/webrtc-stats/#dom-rtcoutboundrtpstreamstats-framewidth 181*d9f75844SAndroid Build Coastguard Worker[rtcoutboundrtpstreamstats-frameheight]: https://w3c.github.io/webrtc-stats/#dom-rtcoutboundrtpstreamstats-frameheight 182*d9f75844SAndroid Build Coastguard Worker[rtcoutboundrtpstreamstats-qpsum]: https://w3c.github.io/webrtc-stats/#dom-rtcoutboundrtpstreamstats-qpsum 183*d9f75844SAndroid Build Coastguard Worker[rtcoutboundrtpstreamstats-keyframesencoded]: https://w3c.github.io/webrtc-stats/#dom-rtcoutboundrtpstreamstats-keyframesencoded 184*d9f75844SAndroid Build Coastguard Worker[rtcoutboundrtpstreamstats-totalpacketsenddelay]: https://w3c.github.io/webrtc-stats/#dom-rtcoutboundrtpstreamstats-totalpacketsenddelay 185*d9f75844SAndroid Build Coastguard Worker[nackcount]: https://w3c.github.io/webrtc-stats/#dom-rtcoutboundrtpstreamstats-nackcount 186*d9f75844SAndroid Build Coastguard Worker[fircount]: https://w3c.github.io/webrtc-stats/#dom-rtcoutboundrtpstreamstats-fircount 187*d9f75844SAndroid Build Coastguard Worker[plicount]: https://w3c.github.io/webrtc-stats/#dom-rtcoutboundrtpstreamstats-plicount 188*d9f75844SAndroid Build Coastguard Worker[rtcoutboundrtpstreamstats-encoderimplementation]: https://w3c.github.io/webrtc-stats/#dom-rtcoutboundrtpstreamstats-encoderimplementation 189*d9f75844SAndroid Build Coastguard Worker[rtcoutboundrtpstreamstats-framesencoded]: https://w3c.github.io/webrtc-stats/#dom-rtcoutboundrtpstreamstats-framesencoded 190*d9f75844SAndroid Build Coastguard Worker[rtcoutboundrtpstreamstats-framespersecond]: https://w3c.github.io/webrtc-stats/#dom-rtcoutboundrtpstreamstats-framespersecond 191*d9f75844SAndroid Build Coastguard Worker[rtcoutboundrtpstreamstats-totalencodedbytestarget]: https://w3c.github.io/webrtc-stats/#dom-rtcoutboundrtpstreamstats-totalencodedbytestarget 192*d9f75844SAndroid Build Coastguard Worker[rtcoutboundrtpstreamstats-hugeframessent]: https://w3c.github.io/webrtc-stats/#dom-rtcoutboundrtpstreamstats-hugeframessent 193*d9f75844SAndroid Build Coastguard Worker[rtcoutboundrtpstreamstats-totalencodetime]: https://w3c.github.io/webrtc-stats/#dom-rtcoutboundrtpstreamstats-totalencodetime 194*d9f75844SAndroid Build Coastguard Worker[rtcoutboundrtpstreamstats-qualitylimitationreason]: https://w3c.github.io/webrtc-stats/#dom-rtcoutboundrtpstreamstats-qualitylimitationreason 195*d9f75844SAndroid Build Coastguard Worker[rtcoutboundrtpstreamstats-qualitylimitationdurations]: https://w3c.github.io/webrtc-stats/#dom-rtcoutboundrtpstreamstats-qualitylimitationdurations 196*d9f75844SAndroid Build Coastguard Worker[rtcoutboundrtpstreamstats-qualitylimitationresolutionchanges]: https://w3c.github.io/webrtc-stats/#dom-rtcoutboundrtpstreamstats-qualitylimitationresolutionchanges 197*d9f75844SAndroid Build Coastguard Worker 198*d9f75844SAndroid Build Coastguard Worker[VideoReceiveStream]: https://source.chromium.org/chromium/chromium/src/+/main:third_party/webrtc/call/video_receive_stream.h 199*d9f75844SAndroid Build Coastguard Worker[VideoReceiveStream::Stats]: https://source.chromium.org/chromium/chromium/src/+/main:third_party/webrtc/call/video_receive_stream.h?q=VideoReceiveStream::Stats 200*d9f75844SAndroid Build Coastguard Worker[ReceiveStatisticsProxy]: https://source.chromium.org/chromium/chromium/src/+/main:third_party/webrtc/video/receive_statistics_proxy2.h 201*d9f75844SAndroid Build Coastguard Worker[rtcinboundrtpstreamstats-keyframesdecoded]: https://w3c.github.io/webrtc-stats/#dom-rtcinboundrtpstreamstats-keyframesdecoded 202*d9f75844SAndroid Build Coastguard Worker[rtcinboundrtpstreamstats-jitterbufferdelay]: https://w3c.github.io/webrtc-stats/#dom-rtcinboundrtpstreamstats-jitterbufferdelay 203*d9f75844SAndroid Build Coastguard Worker[rtcinboundrtpstreamstats-jitterbufferemittedcount]: https://w3c.github.io/webrtc-stats/#dom-rtcinboundrtpstreamstats-jitterbufferemittedcount 204*d9f75844SAndroid Build Coastguard Worker[rtcinboundrtpstreamstats-decoderimplementation]: https://w3c.github.io/webrtc-stats/#dom-rtcinboundrtpstreamstats-decoderimplementation 205*d9f75844SAndroid Build Coastguard Worker[rtcreceivedrtpstreamstats-framesdropped]: https://www.w3.org/TR/webrtc-stats/#dom-rtcreceivedrtpstreamstats-framesdropped 206*d9f75844SAndroid Build Coastguard Worker[rtcinboundrtpstreamstats-framesdecoded]: https://w3c.github.io/webrtc-stats/#dom-rtcinboundrtpstreamstats-framesdecoded 207*d9f75844SAndroid Build Coastguard Worker[rtcinboundrtpstreamstats-framespersecond]: https://w3c.github.io/webrtc-stats/#dom-rtcinboundrtpstreamstats-framespersecond 208*d9f75844SAndroid Build Coastguard Worker[rtcinboundrtpstreamstats-totaldecodetime]: https://w3c.github.io/webrtc-stats/#dom-rtcinboundrtpstreamstats-totaldecodetime 209*d9f75844SAndroid Build Coastguard Worker[rtcinboundrtpstreamstats-qpsum]: https://w3c.github.io/webrtc-stats/#dom-rtcinboundrtpstreamstats-qpsum 210*d9f75844SAndroid Build Coastguard Worker[rtcinboundrtpstreamstats-totalinterframedelay]: https://w3c.github.io/webrtc-stats/#dom-rtcinboundrtpstreamstats-totalinterframedelay 211*d9f75844SAndroid Build Coastguard Worker[rtcinboundrtpstreamstats-totalsquaredinterframedelay]: https://w3c.github.io/webrtc-stats/#dom-rtcinboundrtpstreamstats-totalsquaredinterframedelay 212*d9f75844SAndroid Build Coastguard Worker[rtcinboundrtpstreamstats-estimatedplayouttimestamp]: https://w3c.github.io/webrtc-stats/#dom-rtcinboundrtpstreamstats-estimatedplayouttimestamp 213*d9f75844SAndroid Build Coastguard Worker[rtcinboundrtpstreamstats-framewidth]: https://w3c.github.io/webrtc-stats/#dom-rtcinboundrtpstreamstats-framewidth 214*d9f75844SAndroid Build Coastguard Worker[rtcinboundrtpstreamstats-frameheight]: https://w3c.github.io/webrtc-stats/#dom-rtcinboundrtpstreamstats-frameheight 215*d9f75844SAndroid Build Coastguard Worker[nackcount]: https://w3c.github.io/webrtc-stats/#dom-rtcinboundrtpstreamstats-nackcount 216*d9f75844SAndroid Build Coastguard Worker[fircount]: https://w3c.github.io/webrtc-stats/#dom-rtcinboundrtpstreamstats-fircount 217*d9f75844SAndroid Build Coastguard Worker[plicount]: https://w3c.github.io/webrtc-stats/#dom-rtcinboundrtpstreamstats-plicount 218