From 74da1631de120b65596a5e29ea68e0b137a0dbfc Mon Sep 17 00:00:00 2001 From: Martin Piatka Date: Tue, 24 Sep 2024 13:47:16 +0200 Subject: [PATCH] GUI: Display incoming video & audio formats --- gui/QT/ui/ultragrid_window.ui | 58 ++++++++++++++++++++++-------- gui/QT/window/ultragrid_window.cpp | 33 +++++++++++++++++ gui/QT/window/ultragrid_window.hpp | 3 ++ 3 files changed, 80 insertions(+), 14 deletions(-) diff --git a/gui/QT/ui/ultragrid_window.ui b/gui/QT/ui/ultragrid_window.ui index 8fec2dac48..1abd64bda3 100644 --- a/gui/QT/ui/ultragrid_window.ui +++ b/gui/QT/ui/ultragrid_window.ui @@ -155,20 +155,50 @@ - - - - 0 - 0 - - - - Remote - - - Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft - - + + + + + + 0 + 0 + + + + Remote + + + Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft + + + + + + + + 0 + 0 + + + + + + + + + + + + 0 + 0 + + + + + + + + diff --git a/gui/QT/window/ultragrid_window.cpp b/gui/QT/window/ultragrid_window.cpp index b07b5d963c..a451592e30 100644 --- a/gui/QT/window/ultragrid_window.cpp +++ b/gui/QT/window/ultragrid_window.cpp @@ -17,6 +17,8 @@ #include #endif +#include "utils/string_view_utils.hpp" + namespace { QString argListToString(const QStringList& argList){ return argList.join(" "); @@ -120,6 +122,34 @@ UltragridWindow::UltragridWindow(QWidget *parent): QMainWindow(parent){ using namespace std::placeholders; controlPort.addLineCallback(std::bind(&BandwidthWidget::parseLine, ui.send_bandwidth, _1)); + + controlPort.addLineCallback(std::bind(&UltragridWindow::recvFmtCallback, this, _1)); +} + +void UltragridWindow::clearFmtLabels(){ + ui.recvVideoFmtLabel->setText(""); + ui.recvAudioFmtLabel->setText(""); +}; + +void UltragridWindow::recvFmtCallback(std::string_view line){ + static constexpr std::string_view prefix = "stats "; + if(!sv_is_prefix(line, prefix)) + return; + + line.remove_prefix(prefix.size()); + + static constexpr std::string_view videoFmt = "new incoming video fmt: "; + static constexpr std::string_view audioFmt = "new incoming audio fmt: "; + + if(sv_is_prefix(line, videoFmt)){ + line.remove_prefix(videoFmt.size()); + std::string fmt(sv_trim_whitespace_back(line)); + ui.recvVideoFmtLabel->setText(fmt.c_str()); + } else if(sv_is_prefix(line, audioFmt)){ + line.remove_prefix(audioFmt.size()); + std::string fmt(sv_trim_whitespace_back(line)); + ui.recvAudioFmtLabel->setText(fmt.c_str()); + } } void UltragridWindow::launchQuery(){ @@ -314,6 +344,8 @@ void UltragridWindow::start(){ ctx->args = launchArgs; ctx->type = LaunchContext::Type::Run; + clearFmtLabels(); + connect(&ctx->process, &QProcess::started, [=]() { @@ -330,6 +362,7 @@ void UltragridWindow::start(){ ui.startButton->setEnabled(true); ui.actionRefresh->setEnabled(true); receiverLoss.reset(); + clearFmtLabels(); rtcpRr.reset(); ui.send_bandwidth->reset(); diff --git a/gui/QT/window/ultragrid_window.hpp b/gui/QT/window/ultragrid_window.hpp index 5601ada2b6..634f8882dd 100644 --- a/gui/QT/window/ultragrid_window.hpp +++ b/gui/QT/window/ultragrid_window.hpp @@ -44,6 +44,9 @@ class UltragridWindow : public QMainWindow{ void launchQuery(); + void clearFmtLabels(); + void recvFmtCallback(std::string_view line); + Ui::UltragridWindow ui; QString ultragridExecutable;