0
0
mirror of https://github.com/obsproject/obs-studio.git synced 2024-09-19 20:32:15 +02:00

obs-ffmpeg: Remove Ubuntu 20.04 NVENC fallback

Effectively reverts dd26fe4f8a
This commit is contained in:
Rodney 2023-12-25 11:09:19 +01:00 committed by Lain
parent 8496d58a2c
commit 3594017fac
2 changed files with 24 additions and 87 deletions

View File

@ -41,10 +41,6 @@ struct nvenc_encoder {
int64_t dts_offset; // Revert when FFmpeg fixes b-frame DTS calculation
};
#ifdef __linux__
extern bool ubuntu_20_04_nvenc_fallback;
#endif
#define ENCODER_NAME_H264 "NVIDIA NVENC H.264 (FFmpeg)"
static const char *h264_nvenc_getname(void *unused)
{
@ -128,12 +124,6 @@ static bool nvenc_update(struct nvenc_encoder *enc, obs_data_t *settings,
rc = "CBR";
}
#ifdef __linux__
bool use_old_nvenc = ubuntu_20_04_nvenc_fallback;
#else
#define use_old_nvenc false
#endif
info.format = voi->format;
info.colorspace = voi->colorspace;
info.range = voi->range;
@ -143,8 +133,8 @@ static bool nvenc_update(struct nvenc_encoder *enc, obs_data_t *settings,
av_opt_set_int(enc->ffve.context->priv_data, "cbr", false, 0);
av_opt_set(enc->ffve.context->priv_data, "profile", profile, 0);
if (use_old_nvenc || (obs_data_has_user_value(settings, "preset") &&
!obs_data_has_user_value(settings, "preset2"))) {
if (obs_data_has_user_value(settings, "preset") &&
!obs_data_has_user_value(settings, "preset2")) {
if (astrcmpi(preset, "mq") == 0) {
preset = "hq";
@ -505,12 +495,6 @@ obs_properties_t *nvenc_properties_internal(enum codec_type codec, bool ffmpeg)
obs_properties_t *props = obs_properties_create();
obs_property_t *p;
#ifdef __linux__
bool use_old_nvenc = ubuntu_20_04_nvenc_fallback;
#else
#define use_old_nvenc false
#endif
p = obs_properties_add_list(props, "rate_control",
obs_module_text("RateControl"),
OBS_COMBO_TYPE_LIST,
@ -539,60 +523,47 @@ obs_properties_t *nvenc_properties_internal(enum codec_type codec, bool ffmpeg)
10, 1);
obs_property_int_set_suffix(p, " s");
p = obs_properties_add_list(props, use_old_nvenc ? "preset" : "preset2",
obs_module_text("Preset"),
p = obs_properties_add_list(props, "preset2", obs_module_text("Preset"),
OBS_COMBO_TYPE_LIST,
OBS_COMBO_FORMAT_STRING);
#define add_preset(val) \
obs_property_list_add_string(p, obs_module_text("NVENC.Preset2." val), \
val)
if (use_old_nvenc) {
add_preset("mq");
add_preset("hq");
add_preset("default");
add_preset("hp");
add_preset("ll");
add_preset("llhq");
add_preset("llhp");
} else {
add_preset("p1");
add_preset("p2");
add_preset("p3");
add_preset("p4");
add_preset("p5");
add_preset("p6");
add_preset("p7");
}
add_preset("p1");
add_preset("p2");
add_preset("p3");
add_preset("p4");
add_preset("p5");
add_preset("p6");
add_preset("p7");
#undef add_preset
if (!use_old_nvenc) {
p = obs_properties_add_list(props, "tune",
obs_module_text("Tuning"),
OBS_COMBO_TYPE_LIST,
OBS_COMBO_FORMAT_STRING);
p = obs_properties_add_list(props, "tune", obs_module_text("Tuning"),
OBS_COMBO_TYPE_LIST,
OBS_COMBO_FORMAT_STRING);
#define add_tune(val) \
obs_property_list_add_string(p, obs_module_text("NVENC.Tuning." val), \
val)
add_tune("hq");
add_tune("ll");
add_tune("ull");
add_tune("hq");
add_tune("ll");
add_tune("ull");
#undef add_tune
p = obs_properties_add_list(props, "multipass",
obs_module_text("NVENC.Multipass"),
OBS_COMBO_TYPE_LIST,
OBS_COMBO_FORMAT_STRING);
p = obs_properties_add_list(props, "multipass",
obs_module_text("NVENC.Multipass"),
OBS_COMBO_TYPE_LIST,
OBS_COMBO_FORMAT_STRING);
#define add_multipass(val) \
obs_property_list_add_string( \
p, obs_module_text("NVENC.Multipass." val), val)
add_multipass("disabled");
add_multipass("qres");
add_multipass("fullres");
add_multipass("disabled");
add_multipass("qres");
add_multipass("fullres");
#undef add_multipass
}
p = obs_properties_add_list(props, "profile",
obs_module_text("Profile"),

View File

@ -1,4 +1,3 @@
#include <util/dstr.h>
#include <obs-module.h>
#include <util/platform.h>
#include <libavutil/avutil.h>
@ -241,34 +240,6 @@ extern bool load_nvenc_lib(void);
extern uint32_t get_nvenc_ver();
#endif
/* please remove this annoying garbage and the associated garbage in
* obs-ffmpeg-nvenc.c when ubuntu 20.04 is finally gone for good. */
#ifdef __linux__
bool ubuntu_20_04_nvenc_fallback = false;
static void do_nvenc_check_for_ubuntu_20_04(void)
{
FILE *fp;
char *line = NULL;
size_t linecap = 0;
fp = fopen("/etc/os-release", "r");
if (!fp) {
return;
}
while (getline(&line, &linecap, fp) != -1) {
if (strncmp(line, "VERSION_CODENAME=focal", 22) == 0) {
ubuntu_20_04_nvenc_fallback = true;
}
}
fclose(fp);
free(line);
}
#endif
static bool nvenc_codec_exists(const char *name, const char *fallback)
{
const AVCodec *nvenc = avcodec_find_encoder_by_name(name);
@ -397,11 +368,6 @@ bool obs_module_load(void)
if (nvenc_supported(&h264, &hevc, &av1)) {
blog(LOG_INFO, "NVENC supported");
#ifdef __linux__
/* why are we here? just to suffer? */
do_nvenc_check_for_ubuntu_20_04();
#endif
#ifdef _WIN32
if (get_win_ver_int() > 0x0601) {
obs_nvenc_load(h264, hevc, av1);