| 558 | } |
| 559 | |
| 560 | void CtStatisticsPanel::UpdateDataSpeedChart() { |
| 561 | if (!lbl_received_data_) { |
| 562 | return; |
| 563 | } |
| 564 | // data speed |
| 565 | { |
| 566 | auto recv_data_speeds = sdk_stat_->GetRecvDataSpeeds(); |
| 567 | auto send_data_speeds = sdk_stat_->GetSendDataSpeeds(); |
| 568 | std::map<QString, std::vector<float>> stat_value; |
| 569 | stat_value.insert({kChartSendDataSpeed, send_data_speeds}); |
| 570 | stat_value.insert({kChartRecvDataSpeed, recv_data_speeds}); |
| 571 | data_speed_stat_chart_->UpdateLines(stat_value); |
| 572 | if (!recv_data_speeds.empty() && !send_data_speeds.empty()) { |
| 573 | auto send_value = send_data_speeds[send_data_speeds.size() - 1] * 1024 * 1024; |
| 574 | auto recv_value = recv_data_speeds[recv_data_speeds.size() - 1] * 1024 * 1024; |
| 575 | lbl_data_speed_->setText(tcTr("id_media_data_speed") |
| 576 | + std::format("( Out[ {} ] In[ {} ])", NumFormatter::FormatSpeed(send_value), NumFormatter::FormatSpeed(recv_value)).c_str()); |
| 577 | } |
| 578 | } |
| 579 | |
| 580 | // network |
| 581 | { |
| 582 | std::map<QString, std::vector<float>> stat_value; |
| 583 | auto delays = sdk_stat_->GetNetDelays(); |
| 584 | if (!delays.empty()) { |
| 585 | auto delay = delays[delays.size() - 1]; |
| 586 | lbl_network_->setText(tcTr("id_network") + std::format(" ( Delay[ {}ms ] ) ", delay).c_str()); |
| 587 | } |
| 588 | stat_value.insert({kChartNetworkDelay, delays}); |
| 589 | durations_stat_chart_->UpdateLines(stat_value); |
| 590 | } |
| 591 | |
| 592 | { |
| 593 | lbl_received_data_->setText(NumFormatter::FormatStorageSize(sdk_stat_->recv_data_size_).c_str()); |
| 594 | lbl_video_format_->setText(sdk_stat_->video_format_.Clone().c_str()); |
| 595 | lbl_video_color_->setText(sdk_stat_->video_color_.Clone().c_str()); |
| 596 | lbl_sent_data_->setText(NumFormatter::FormatStorageSize(sdk_stat_->send_data_size_).c_str()); |
| 597 | lbl_video_decoder_->setText(sdk_stat_->video_decoder_.Clone().c_str()); |
| 598 | lbl_video_capture_type_->setText(sdk_stat_->video_capture_type_.Clone().c_str()); |
| 599 | lbl_audio_capture_type_->setText(sdk_stat_->audio_capture_type_.Clone().c_str()); |
| 600 | |
| 601 | lbl_audio_encode_type_->setText(sdk_stat_->audio_encode_type_.Clone().c_str()); |
| 602 | |
| 603 | auto hardware = Hardware::Instance(); |
| 604 | std::stringstream ss; |
| 605 | if (hardware->gpus_.empty()) { |
| 606 | ss << "NO GPU"; |
| 607 | } |
| 608 | else { |
| 609 | for (const auto &gpu: hardware->gpus_) { |
| 610 | ss << gpu.name_ << ";"; |
| 611 | } |
| 612 | } |
| 613 | auto cpu_name = QString::fromStdString(hardware->hw_cpu_.name_).trimmed(); |
| 614 | lbl_local_computer_info_->setText(std::format("{} / {} / {}", cpu_name.toStdString(), NumFormatter::FormatStorageSize(hardware->memory_size_), ss.str()).c_str()); |
| 615 | lbl_local_computer_info_->setToolTip(lbl_local_computer_info_->text()); |
| 616 | |
| 617 | lbl_remote_computer_info_->setText(sdk_stat_->remote_pc_info_.Clone().c_str()); |
no test coverage detected