Disable Broardast and inform user if SRT not available

This commit is contained in:
Bruno Herbelin
2022-10-13 16:24:01 +02:00
parent 7dfa8776fd
commit ae4fd9f7df
2 changed files with 37 additions and 28 deletions

View File

@@ -7623,6 +7623,7 @@ void Navigator::RenderMainPannelSettings()
// //
ImGui::Text("Stream"); ImGui::Text("Stream");
if (VideoBroadcast::available()) {
char msg[256]; char msg[256];
ImFormatString(msg, IM_ARRAYSIZE(msg), "Broadcast SRT\n\n" ImFormatString(msg, IM_ARRAYSIZE(msg), "Broadcast SRT\n\n"
"vimix is listening to SRT requests on Port %d. " "vimix is listening to SRT requests on Port %d. "
@@ -7644,6 +7645,7 @@ void Navigator::RenderMainPannelSettings()
if ( BaseToolkit::is_a_number(bufport, &Settings::application.broadcast_port)) if ( BaseToolkit::is_a_number(bufport, &Settings::application.broadcast_port))
Settings::application.broadcast_port = CLAMP(Settings::application.broadcast_port, 1029, 49150); Settings::application.broadcast_port = CLAMP(Settings::application.broadcast_port, 1029, 49150);
} }
}
ImGuiToolkit::Indication("Share on local network\n\n" ImGuiToolkit::Indication("Share on local network\n\n"
"vimix can stream JPEG (default) or H264 (requires less bandwidth but more resources for encoding)", ICON_FA_SHARE_ALT_SQUARE); "vimix can stream JPEG (default) or H264 (requires less bandwidth but more resources for encoding)", ICON_FA_SHARE_ALT_SQUARE);
@@ -7658,6 +7660,7 @@ void Navigator::RenderMainPannelSettings()
ImGuiToolkit::Spacing(); ImGuiToolkit::Spacing();
ImGui::Text("OSC"); ImGui::Text("OSC");
char msg[256];
ImFormatString(msg, IM_ARRAYSIZE(msg), "Open Sound Control\n\n" ImFormatString(msg, IM_ARRAYSIZE(msg), "Open Sound Control\n\n"
"vimix accepts OSC messages sent by UDP on Port %d and replies on Port %d." "vimix accepts OSC messages sent by UDP on Port %d and replies on Port %d."
"Example network addresses:\n" "Example network addresses:\n"

View File

@@ -22,8 +22,8 @@ std::string VideoBroadcast::srt_sink_;
std::string VideoBroadcast::h264_encoder_; std::string VideoBroadcast::h264_encoder_;
std::vector< std::pair<std::string, std::string> > pipeline_sink_ { std::vector< std::pair<std::string, std::string> > pipeline_sink_ {
{"srtsink", "srtsink uri=srt://:XXXX name=sink"}, {"srtsin", "srtsink uri=srt://:XXXX name=sink"},
{"srtserversink", "srtserversink uri=srt://:XXXX name=sink"} {"srtserversin", "srtserversink uri=srt://:XXXX name=sink"}
}; };
std::vector< std::pair<std::string, std::string> > pipeline_encoder_ { std::vector< std::pair<std::string, std::string> > pipeline_encoder_ {
@@ -38,6 +38,8 @@ bool VideoBroadcast::available()
static bool _tested = false; static bool _tested = false;
if (!_tested) { if (!_tested) {
srt_sink_.clear(); srt_sink_.clear();
h264_encoder_.clear();
for (auto config = pipeline_sink_.cbegin(); for (auto config = pipeline_sink_.cbegin();
config != pipeline_sink_.cend() && srt_sink_.empty(); ++config) { config != pipeline_sink_.cend() && srt_sink_.empty(); ++config) {
if ( GstToolkit::has_feature(config->first) ) { if ( GstToolkit::has_feature(config->first) ) {
@@ -45,7 +47,8 @@ bool VideoBroadcast::available()
} }
} }
h264_encoder_.clear(); if (!srt_sink_.empty())
{
for (auto config = pipeline_encoder_.cbegin(); for (auto config = pipeline_encoder_.cbegin();
config != pipeline_encoder_.cend() && h264_encoder_.empty(); ++config) { config != pipeline_encoder_.cend() && h264_encoder_.empty(); ++config) {
if ( GstToolkit::has_feature(config->first) ) { if ( GstToolkit::has_feature(config->first) ) {
@@ -54,6 +57,9 @@ bool VideoBroadcast::available()
Log::Info("Video Broadcast uses hardware-accelerated encoder (%s)", config->first.c_str()); Log::Info("Video Broadcast uses hardware-accelerated encoder (%s)", config->first.c_str());
} }
} }
}
else
Log::Info("Video SRT Broadcast not available.");
// perform test only once // perform test only once
_tested = true; _tested = true;