Merge remote-tracking branch 'origin/beta'

This commit is contained in:
Bruno Herbelin
2025-12-24 22:11:25 +01:00
3 changed files with 17 additions and 7 deletions
+2
View File
@@ -334,6 +334,8 @@ std::string VideoRecorder::init(GstCaps *caps)
// This uploads system memory to GPU and does color conversion in GPU shader
if (Settings::application.render.gpu_decoding &&
(int) hardware_encoder.size() > 0 &&
GstToolkit::has_feature("glupload") &&
GstToolkit::has_feature("glcolorconvert") &&
GstToolkit::has_feature(hardware_encoder[Settings::application.record.profile])) {
// glupload: system memory → GLMemory (in GStreamer's thread)
// glcolorconvert: GPU color conversion (RGBA → NV12 for VAAPI, passthrough for NVIDIA)
+11 -5
View File
@@ -400,12 +400,18 @@ std::string VideoStreamer::init(GstCaps *caps)
config != NetworkToolkit::stream_h264_send_pipeline.cend() && !found_harware_acceleration; ++config) {
if ( GstToolkit::has_feature(config->first) ) {
#ifdef USE_GST_OPENGL_SYNC_HANDLER
description += "glupload ! glcolorconvert ! ";
Log::Info("Video Streamer with glupload & GPU color conversion");
if ( GstToolkit::has_feature("glupload") &&
GstToolkit::has_feature("glcolorconvert") ) {
description += "glupload ! glcolorconvert ! ";
Log::Info("Video Streamer with glupload & GPU color conversion");
}
else
#endif
description += config->second;
found_harware_acceleration = true;
Log::Info("Video Streamer using hardware accelerated encoder (%s)", config->first.c_str());
{
description += config->second;
found_harware_acceleration = true;
Log::Info("Video Streamer using hardware accelerated encoder (%s)", config->first.c_str());
}
}
}
}
+4 -2
View File
@@ -70,9 +70,11 @@ bool VideoBroadcast::available()
if (!srt_sink_.empty())
{
if (Settings::application.render.gpu_decoding) {
if (Settings::application.render.gpu_decoding &&
GstToolkit::has_feature("glupload") &&
GstToolkit::has_feature("glcolorconvert")) {
for (auto config = srt_encoder_alternatives_.cbegin();
config != srt_encoder_alternatives_.cend() && srt_encoder_.empty(); ++config) {
config != srt_encoder_alternatives_.cend() && srt_encoder_.empty(); ++config) {
if ( GstToolkit::has_feature(config->first) ) {
srt_encoder_ = config->second;
if (config->first != srt_encoder_alternatives_.back().first)