mirror of
https://github.com/brunoherbelin/vimix.git
synced 2025-12-05 15:30:00 +01:00
Improved package support of encoder selection (x265)
This commit is contained in:
@@ -59,6 +59,22 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "x265",
|
||||
"buildsystem": "cmake-ninja",
|
||||
"subdir": "source",
|
||||
"config-opts": [
|
||||
"-DCMAKE_BUILD_TYPE=Release",
|
||||
"-DCMAKE_POSITION_INDEPENDENT_CODE=ON"
|
||||
],
|
||||
"sources": [
|
||||
{
|
||||
"type": "git",
|
||||
"tag": "3.4",
|
||||
"url": "https://bitbucket.org/multicoreware/x265_git.git"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "srt",
|
||||
"buildsystem": "cmake-ninja",
|
||||
@@ -96,24 +112,25 @@
|
||||
"buildsystem": "meson",
|
||||
"builddir": true,
|
||||
"config-opts": [
|
||||
"-Ddoc=disabled",
|
||||
"-Dpython=disabled",
|
||||
"-Dges=disabled",
|
||||
"-Drs=disabled",
|
||||
"-Dgst-examples=disabled",
|
||||
"-Drtsp_server=disabled",
|
||||
"-Ddevtools=disabled",
|
||||
"-Dqt5=disabled",
|
||||
"-Dlibav=enabled",
|
||||
"-Dbase=enabled",
|
||||
"-Dgood=enabled",
|
||||
"-Dgst-plugins-good:v4l2=enabled",
|
||||
"-Dgpl=enabled",
|
||||
"-Dbad=enabled",
|
||||
"-Dgst-plugins-bad:srt=enabled",
|
||||
"-Dgst-plugins-bad:shm=enabled",
|
||||
"-Dugly=enabled",
|
||||
"-Dgst-plugins-ugly:x264=enabled"
|
||||
"-Ddoc=disabled",
|
||||
"-Dpython=disabled",
|
||||
"-Dges=disabled",
|
||||
"-Drs=disabled",
|
||||
"-Dgst-examples=disabled",
|
||||
"-Drtsp_server=disabled",
|
||||
"-Ddevtools=disabled",
|
||||
"-Dqt5=disabled",
|
||||
"-Dlibav=enabled",
|
||||
"-Dbase=enabled",
|
||||
"-Dgood=enabled",
|
||||
"-Dgst-plugins-good:v4l2=enabled",
|
||||
"-Dgpl=enabled",
|
||||
"-Dbad=enabled",
|
||||
"-Dgst-plugins-bad:x265=enabled",
|
||||
"-Dgst-plugins-bad:srt=enabled",
|
||||
"-Dgst-plugins-bad:shm=enabled",
|
||||
"-Dugly=enabled",
|
||||
"-Dgst-plugins-ugly:x264=enabled"
|
||||
],
|
||||
"sources": [
|
||||
{
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
|
||||
#include "Log.h"
|
||||
#include "GstToolkit.h"
|
||||
#include "Settings.h"
|
||||
|
||||
#include "VideoBroadcast.h"
|
||||
|
||||
@@ -47,6 +48,7 @@ std::vector< std::string > srt_sink_alternatives_ {
|
||||
std::vector< std::pair<std::string, std::string> > srt_encoder_alternatives_ {
|
||||
{"nvh264enc", "nvh264enc zerolatency=true rc-mode=cbr-ld-hq bitrate=4000 ! "},
|
||||
{"vaapih264enc", "vaapih264enc rate-control=cqp init-qp=26 ! "},
|
||||
{"vtenc_h264_hw", "vtenc_h264_hw realtime=1 allow-frame-reordering=0 ! "},
|
||||
{"x264enc", "x264enc tune=zerolatency ! "}
|
||||
};
|
||||
|
||||
@@ -67,14 +69,20 @@ bool VideoBroadcast::available()
|
||||
|
||||
if (!srt_sink_.empty())
|
||||
{
|
||||
for (auto config = srt_encoder_alternatives_.cbegin();
|
||||
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)
|
||||
Log::Info("Video Broadcast uses hardware-accelerated encoder (%s)", config->first.c_str());
|
||||
if (Settings::application.render.gpu_decoding) {
|
||||
for (auto config = srt_encoder_alternatives_.cbegin();
|
||||
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)
|
||||
Log::Info("Video Broadcast uses hardware-accelerated encoder (%s)", config->first.c_str());
|
||||
}
|
||||
}
|
||||
}
|
||||
// disabled hardware accelerated encoding
|
||||
else {
|
||||
srt_encoder_ = srt_encoder_alternatives_.back().second;
|
||||
}
|
||||
}
|
||||
else
|
||||
Log::Info("Video SRT Broadcast not available.");
|
||||
|
||||
Reference in New Issue
Block a user