mirror of
https://github.com/obsproject/obs-studio.git
synced 2024-07-14 23:34:08 +00:00
UI: Add QSV AV1 to simple output mode
This commit is contained in:
parent
3c4f9f18c7
commit
00078a6a73
|
@ -961,6 +961,7 @@ Basic.Settings.Output.Simple.Warn.Lossless.Msg="Are you sure you want to use los
|
|||
Basic.Settings.Output.Simple.Warn.Lossless.Title="Lossless quality warning!"
|
||||
Basic.Settings.Output.Simple.Encoder.Software="Software (x264)"
|
||||
Basic.Settings.Output.Simple.Encoder.Hardware.QSV.H264="Hardware (QSV, H.264)"
|
||||
Basic.Settings.Output.Simple.Encoder.Hardware.QSV.AV1="Hardware (QSV, AV1)"
|
||||
Basic.Settings.Output.Simple.Encoder.Hardware.AMD.H264="Hardware (AMD, H.264)"
|
||||
Basic.Settings.Output.Simple.Encoder.Hardware.AMD.HEVC="Hardware (AMD, HEVC)"
|
||||
Basic.Settings.Output.Simple.Encoder.Hardware.AMD.AV1="Hardware (AMD, AV1)"
|
||||
|
|
|
@ -288,7 +288,7 @@ struct SimpleOutput : BasicOutputHandler {
|
|||
int CalcCRF(int crf);
|
||||
|
||||
void UpdateRecordingSettings_x264_crf(int crf);
|
||||
void UpdateRecordingSettings_qsv11(int crf);
|
||||
void UpdateRecordingSettings_qsv11(int crf, bool av1);
|
||||
void UpdateRecordingSettings_nvenc(int cqp);
|
||||
void UpdateRecordingSettings_nvenc_hevc_av1(int cqp);
|
||||
void UpdateRecordingSettings_amd_cqp(int cqp);
|
||||
|
@ -371,6 +371,8 @@ const char *get_simple_output_encoder(const char *encoder)
|
|||
return "obs_x264";
|
||||
} else if (strcmp(encoder, SIMPLE_ENCODER_QSV) == 0) {
|
||||
return "obs_qsv11_v2";
|
||||
} else if (strcmp(encoder, SIMPLE_ENCODER_QSV_AV1) == 0) {
|
||||
return "obs_qsv11_av1";
|
||||
} else if (strcmp(encoder, SIMPLE_ENCODER_AMD) == 0) {
|
||||
return "h264_texture_amf";
|
||||
#ifdef ENABLE_HEVC
|
||||
|
@ -535,6 +537,9 @@ void SimpleOutput::Update()
|
|||
if (strcmp(encoder, SIMPLE_ENCODER_QSV) == 0) {
|
||||
presetType = "QSVPreset";
|
||||
|
||||
} else if (strcmp(encoder, SIMPLE_ENCODER_QSV_AV1) == 0) {
|
||||
presetType = "QSVPreset";
|
||||
|
||||
} else if (strcmp(encoder, SIMPLE_ENCODER_AMD) == 0) {
|
||||
presetType = "AMDPreset";
|
||||
|
||||
|
@ -665,14 +670,14 @@ static bool icq_available(obs_encoder_t *encoder)
|
|||
return icq_found;
|
||||
}
|
||||
|
||||
void SimpleOutput::UpdateRecordingSettings_qsv11(int crf)
|
||||
void SimpleOutput::UpdateRecordingSettings_qsv11(int crf, bool av1)
|
||||
{
|
||||
bool icq = icq_available(videoRecording);
|
||||
|
||||
OBSDataAutoRelease settings = obs_data_create();
|
||||
obs_data_set_string(settings, "profile", "high");
|
||||
|
||||
if (icq) {
|
||||
if (icq && !av1) {
|
||||
obs_data_set_string(settings, "rate_control", "ICQ");
|
||||
obs_data_set_int(settings, "icq_quality", crf);
|
||||
} else {
|
||||
|
@ -744,7 +749,10 @@ void SimpleOutput::UpdateRecordingSettings()
|
|||
UpdateRecordingSettings_x264_crf(crf);
|
||||
|
||||
} else if (videoEncoder == SIMPLE_ENCODER_QSV) {
|
||||
UpdateRecordingSettings_qsv11(crf);
|
||||
UpdateRecordingSettings_qsv11(crf, false);
|
||||
|
||||
} else if (videoEncoder == SIMPLE_ENCODER_QSV_AV1) {
|
||||
UpdateRecordingSettings_qsv11(crf, true);
|
||||
|
||||
} else if (videoEncoder == SIMPLE_ENCODER_AMD) {
|
||||
UpdateRecordingSettings_amd_cqp(crf);
|
||||
|
|
|
@ -822,6 +822,7 @@ void OBSBasic::CheckForSimpleModeX264Fallback()
|
|||
const char *curRecEncoder =
|
||||
config_get_string(basicConfig, "SimpleOutput", "RecEncoder");
|
||||
bool qsv_supported = false;
|
||||
bool qsv_av1_supported = false;
|
||||
bool amd_supported = false;
|
||||
bool nve_supported = false;
|
||||
#ifdef ENABLE_HEVC
|
||||
|
@ -840,6 +841,8 @@ void OBSBasic::CheckForSimpleModeX264Fallback()
|
|||
amd_supported = true;
|
||||
else if (strcmp(id, "obs_qsv11") == 0)
|
||||
qsv_supported = true;
|
||||
else if (strcmp(id, "obs_qsv11_av1") == 0)
|
||||
qsv_av1_supported = true;
|
||||
else if (strcmp(id, "ffmpeg_nvenc") == 0)
|
||||
nve_supported = true;
|
||||
#ifdef ENABLE_HEVC
|
||||
|
@ -869,6 +872,12 @@ void OBSBasic::CheckForSimpleModeX264Fallback()
|
|||
name = SIMPLE_ENCODER_X264;
|
||||
return false;
|
||||
}
|
||||
} else if (strcmp(name, SIMPLE_ENCODER_QSV_AV1) == 0) {
|
||||
if (!qsv_av1_supported) {
|
||||
changed = true;
|
||||
name = SIMPLE_ENCODER_X264;
|
||||
return false;
|
||||
}
|
||||
} else if (strcmp(name, SIMPLE_ENCODER_NVENC) == 0) {
|
||||
if (!nve_supported) {
|
||||
changed = true;
|
||||
|
|
|
@ -65,6 +65,7 @@ class OBSBasicStats;
|
|||
#define SIMPLE_ENCODER_X264 "x264"
|
||||
#define SIMPLE_ENCODER_X264_LOWCPU "x264_lowcpu"
|
||||
#define SIMPLE_ENCODER_QSV "qsv"
|
||||
#define SIMPLE_ENCODER_QSV_AV1 "qsv_av1"
|
||||
#define SIMPLE_ENCODER_NVENC "nvenc"
|
||||
#define SIMPLE_ENCODER_NVENC_AV1 "nvenc_av1"
|
||||
#define SIMPLE_ENCODER_NVENC_HEVC "nvenc_hevc"
|
||||
|
|
|
@ -1411,6 +1411,10 @@ void OBSBasicSettings::ResetEncoders(bool streamOnly)
|
|||
ui->simpleOutStrEncoder->addItem(
|
||||
ENCODER_STR("Hardware.QSV.H264"),
|
||||
QString(SIMPLE_ENCODER_QSV));
|
||||
if (service_supports_encoder(codecs, "obs_qsv11_av1"))
|
||||
ui->simpleOutStrEncoder->addItem(
|
||||
ENCODER_STR("Hardware.QSV.AV1"),
|
||||
QString(SIMPLE_ENCODER_QSV_AV1));
|
||||
if (service_supports_encoder(codecs, "ffmpeg_nvenc"))
|
||||
ui->simpleOutStrEncoder->addItem(
|
||||
ENCODER_STR("Hardware.NVENC.H264"),
|
||||
|
|
|
@ -3575,6 +3575,8 @@ void OBSBasicSettings::SaveOutputSettings()
|
|||
|
||||
if (encoder == SIMPLE_ENCODER_QSV)
|
||||
presetType = "QSVPreset";
|
||||
else if (encoder == SIMPLE_ENCODER_QSV_AV1)
|
||||
presetType = "QSVPreset";
|
||||
else if (encoder == SIMPLE_ENCODER_NVENC)
|
||||
presetType = "NVENCPreset2";
|
||||
else if (encoder == SIMPLE_ENCODER_NVENC_AV1)
|
||||
|
@ -4857,6 +4859,10 @@ void OBSBasicSettings::FillSimpleRecordingValues()
|
|||
ui->simpleOutRecEncoder->addItem(
|
||||
ENCODER_STR("Hardware.QSV.H264"),
|
||||
QString(SIMPLE_ENCODER_QSV));
|
||||
if (EncoderAvailable("obs_qsv11_av1"))
|
||||
ui->simpleOutRecEncoder->addItem(
|
||||
ENCODER_STR("Hardware.QSV.AV1"),
|
||||
QString(SIMPLE_ENCODER_QSV_AV1));
|
||||
if (EncoderAvailable("ffmpeg_nvenc"))
|
||||
ui->simpleOutRecEncoder->addItem(
|
||||
ENCODER_STR("Hardware.NVENC.H264"),
|
||||
|
@ -4952,7 +4958,8 @@ void OBSBasicSettings::SimpleStreamingEncoderChanged()
|
|||
ui->simpleOutPreset->setVisible(true);
|
||||
ui->simpleOutPreset->clear();
|
||||
|
||||
if (encoder == SIMPLE_ENCODER_QSV) {
|
||||
if (encoder == SIMPLE_ENCODER_QSV ||
|
||||
encoder == SIMPLE_ENCODER_QSV_AV1) {
|
||||
ui->simpleOutPreset->addItem("speed", "speed");
|
||||
ui->simpleOutPreset->addItem("balanced", "balanced");
|
||||
ui->simpleOutPreset->addItem("quality", "quality");
|
||||
|
|
Loading…
Reference in a new issue