mirror of
https://github.com/brunoherbelin/vimix.git
synced 2025-12-16 12:49:59 +01:00
Improved SRT Receiver source
Failure cause to RETRY to connect. Info visitor informs on status of connection. Icon associated to SRT Broadcast icon.
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -1569,21 +1569,18 @@ void ImGuiVisitor::visit (SrtReceiverSource& s)
|
||||
|
||||
if ( !s.failed() ) {
|
||||
// icon (>) to open player
|
||||
if ( s.playable() ) {
|
||||
if ( s.stream()->isOpen() ) {
|
||||
ImGui::SetCursorPos(top);
|
||||
std::string msg = s.playing() ? "Open Player\n(source is playing)" : "Open Player\n(source is paused)";
|
||||
if (ImGuiToolkit::IconButton( s.playing() ? ICON_FA_PLAY_CIRCLE : ICON_FA_PAUSE_CIRCLE, msg.c_str()))
|
||||
UserInterface::manager().showSourceEditor(&s);
|
||||
}
|
||||
else
|
||||
info.reset();
|
||||
}
|
||||
else
|
||||
info.reset();
|
||||
|
||||
ImGui::SetCursorPos(botom);
|
||||
|
||||
// if ( ImGui::Button( ICON_FA_REPLY " Reconnect", ImVec2(IMGUI_RIGHT_ALIGN, 0)) )
|
||||
// {
|
||||
// s.setConnection(s.connection());
|
||||
// info.reset();
|
||||
// }
|
||||
}
|
||||
|
||||
@@ -433,15 +433,27 @@ void InfoVisitor::visit (SrtReceiverSource& s)
|
||||
if (stm->failed()) {
|
||||
oss << s.uri() << std::endl << stm->log();
|
||||
}
|
||||
else {
|
||||
if (brief_)
|
||||
else if (stm->isOpen()) {
|
||||
if (brief_) {
|
||||
oss << s.uri() << std::endl;
|
||||
oss << "Connected." << std::endl;
|
||||
}
|
||||
else {
|
||||
oss << "SRT Receiver " << s.uri() << std::endl;
|
||||
oss << "H264 (" << stm->decoderName() << ")" << std::endl;
|
||||
oss << "H264 (" << stm->decoderName() << ")" ;
|
||||
oss << stm->width() << " x " << stm->height();
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (brief_) {
|
||||
oss << s.uri() << std::endl;
|
||||
oss << "Trying to connect..." << std::endl;
|
||||
}
|
||||
else {
|
||||
oss << "SRT Receiver " << s.uri() << std::endl;
|
||||
oss << "Connecting...";
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
oss << "Undefined";
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
#define ICON_SOURCE_RENDER 0, 2
|
||||
#define ICON_SOURCE_CLONE 9, 2
|
||||
#define ICON_SOURCE_GSTREAMER 16, 16
|
||||
#define ICON_SOURCE_SRT 15, 5
|
||||
#define ICON_SOURCE_SRT 14, 5
|
||||
#define ICON_SOURCE 13, 11
|
||||
|
||||
class Visitor;
|
||||
|
||||
@@ -24,6 +24,11 @@ SrtReceiverSource::SrtReceiverSource(uint64_t id) : StreamSource(id)
|
||||
symbol_->scale_.y = 1.5f;
|
||||
}
|
||||
|
||||
Source::Failure SrtReceiverSource::failed() const
|
||||
{
|
||||
return (stream_ != nullptr && stream_->failed()) ? FAIL_RETRY : FAIL_NONE;
|
||||
}
|
||||
|
||||
|
||||
void SrtReceiverSource::setConnection(const std::string &ip, const std::string &port)
|
||||
{
|
||||
@@ -32,7 +37,7 @@ void SrtReceiverSource::setConnection(const std::string &ip, const std::string &
|
||||
port_ = port;
|
||||
Log::Notify("Creating Source SRT receiving from '%s'", uri().c_str());
|
||||
|
||||
std::string description = "srtsrc uri=" + uri() + " latency=200 ! decodebin ! videoconvert";
|
||||
std::string description = "srtsrc uri=" + uri() + " latency=200 ! queue ! decodebin ! videoconvert";
|
||||
|
||||
// open gstreamer
|
||||
stream_->open(description);
|
||||
|
||||
@@ -15,6 +15,7 @@ public:
|
||||
void accept (Visitor& v) override;
|
||||
|
||||
// StreamSource interface
|
||||
Failure failed() const override;
|
||||
Stream *stream() const override { return stream_; }
|
||||
|
||||
// specific interface
|
||||
|
||||
@@ -1642,7 +1642,7 @@ void UserInterface::RenderSourceToolbar(bool *p_open, int* p_border, int *p_mode
|
||||
ImGui::AlignTextToFramePadding();
|
||||
ImGui::Text( MENU_SOURCE_TOOL );
|
||||
ImGui::SameLine(0, sliderwidth);
|
||||
ImGui::TextDisabled("No source selected");
|
||||
ImGui::TextDisabled("No active source");
|
||||
ImGui::SameLine(0, sliderwidth);
|
||||
}
|
||||
|
||||
@@ -1852,7 +1852,7 @@ void UserInterface::RenderSourceToolbar(bool *p_open, int* p_border, int *p_mode
|
||||
else {
|
||||
|
||||
ImGui::TextDisabled(" ");
|
||||
ImGui::TextDisabled("No source selected");
|
||||
ImGui::TextDisabled("No active source");
|
||||
ImGui::TextDisabled(" ");
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user