// Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: MIT-0 import React from 'react'; import { useMediaStreamMetrics, useAudioVideo, PopOverHeader, useMeetingManager, } from 'amazon-chime-sdk-component-library-react'; import { MediaStatsList } from '../../components/MediaStatsList'; import MetricItem from '../../components/MediaStatsList/MetricItem'; import { StyledMediaMetricsWrapper } from '../../components/MediaStatsList/Styled'; export const LocalMediaStreamMetrics: React.FC = () => { const audioVideo = useAudioVideo(); if (!audioVideo) { return null; } const { audioPacketsSentFractionLossPercent, audioPacketsReceivedFractionLossPercent, availableIncomingBandwidth, availableOutgoingBandwidth, videoStreamMetrics, } = useMediaStreamMetrics(); const isLocalAudioActive = audioPacketsSentFractionLossPercent !== null && audioPacketsReceivedFractionLossPercent !== null; const meetingManager = useMeetingManager(); const localAttendeeId = meetingManager.meetingSession?.configuration.credentials?.attendeeId; const localVideoStreamMetrics = localAttendeeId ? videoStreamMetrics[localAttendeeId] : {}; const ssrcArray = localVideoStreamMetrics ? Object.keys(localVideoStreamMetrics) : []; const isLocalVideoActive = ssrcArray.length !== 0; const hasBandwidthInfo = availableIncomingBandwidth !== null && availableOutgoingBandwidth !== null; return ( {isLocalAudioActive && ( <> )} {isLocalVideoActive && ( <> { return localVideoStreamMetrics[ssrc].videoUpstreamBitrate ? Math.trunc( localVideoStreamMetrics[ssrc].videoUpstreamBitrate / 1000 ).toString() : ''; })} /> { return localVideoStreamMetrics[ssrc].videoUpstreamPacketsSent ? localVideoStreamMetrics[ ssrc ].videoUpstreamPacketsSent.toString() : ''; })} /> { return localVideoStreamMetrics[ssrc] .videoUpstreamFramesEncodedPerSecond ? localVideoStreamMetrics[ ssrc ].videoUpstreamFramesEncodedPerSecond.toString() : ''; })} /> { return localVideoStreamMetrics[ssrc].videoUpstreamFrameHeight ? localVideoStreamMetrics[ ssrc ].videoUpstreamFrameHeight.toString() : ''; })} /> { return localVideoStreamMetrics[ssrc].videoUpstreamFrameWidth ? localVideoStreamMetrics[ ssrc ].videoUpstreamFrameWidth.toString() : ''; })} /> )} {hasBandwidthInfo && ( <> )} ); }; export default LocalMediaStreamMetrics;