()
| 569 | } |
| 570 | |
| 571 | async function pollWebRTCStats() { |
| 572 | if (!pc) return; |
| 573 | try { |
| 574 | const stats = await pc.getStats(); |
| 575 | const raw = []; |
| 576 | stats.forEach((report) => { |
| 577 | if (report.type === 'inbound-rtp' && report.kind === 'audio') { |
| 578 | document.getElementById('statPacketsRecv').textContent = |
| 579 | report.packetsReceived ?? '--'; |
| 580 | document.getElementById('statPacketsLost').textContent = |
| 581 | report.packetsLost ?? '--'; |
| 582 | document.getElementById('statJitter').textContent = |
| 583 | report.jitter !== undefined ? (report.jitter * 1000).toFixed(1) + ' ms' : '--'; |
| 584 | document.getElementById('statConcealed').textContent = |
| 585 | report.concealedSamples ?? '--'; |
| 586 | |
| 587 | raw.push('── inbound-rtp (audio) ──'); |
| 588 | raw.push(' packetsReceived: ' + report.packetsReceived); |
| 589 | raw.push(' packetsLost: ' + report.packetsLost); |
| 590 | raw.push(' jitter: ' + (report.jitter !== undefined ? (report.jitter * 1000).toFixed(2) + ' ms' : 'N/A')); |
| 591 | raw.push(' bytesReceived: ' + report.bytesReceived); |
| 592 | raw.push(' concealedSamples: ' + report.concealedSamples); |
| 593 | raw.push(' silentConcealedSamples: ' + report.silentConcealedSamples); |
| 594 | raw.push(' totalSamplesReceived: ' + report.totalSamplesReceived); |
| 595 | raw.push(' insertedSamplesForDecel: ' + report.insertedSamplesForDeceleration); |
| 596 | raw.push(' removedSamplesForAccel: ' + report.removedSamplesForAcceleration); |
| 597 | raw.push(' jitterBufferDelay: ' + (report.jitterBufferDelay !== undefined ? report.jitterBufferDelay.toFixed(3) + ' s' : 'N/A')); |
| 598 | raw.push(' jitterBufferTargetDelay: ' + (report.jitterBufferTargetDelay !== undefined ? report.jitterBufferTargetDelay.toFixed(3) + ' s' : 'N/A')); |
| 599 | raw.push(' jitterBufferEmittedCount: ' + report.jitterBufferEmittedCount); |
| 600 | } |
| 601 | }); |
| 602 | document.getElementById('statsRaw').textContent = raw.join('\n'); |
| 603 | } catch (e) { |
| 604 | console.warn('Stats polling error:', e); |
| 605 | } |
| 606 | } |
no test coverage detected