summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatTheMav <PatTheMav@users.noreply.github.com>2022-11-02 17:29:56 +0100
committerPatTheMav <PatTheMav@users.noreply.github.com>2022-11-02 17:31:11 +0100
commitbb9ec651691cb94838f044ed92cb74a8e6c3d4cc (patch)
tree55605e61d684035f54e242c3aab8d01f2859aba3
parent2e672462814ceb37ce0f1dd34be9edfe81ce0374 (diff)
UI: Add VideoToolbox HEVC encoders to simple output optionsvt-hevc-prores
-rw-r--r--UI/data/locale/en-US.ini1
-rw-r--r--UI/window-basic-main-outputs.cpp2
-rw-r--r--UI/window-basic-main-profiles.cpp10
-rw-r--r--UI/window-basic-main.hpp1
-rw-r--r--UI/window-basic-settings-stream.cpp7
-rw-r--r--UI/window-basic-settings.cpp4
6 files changed, 25 insertions, 0 deletions
diff --git a/UI/data/locale/en-US.ini b/UI/data/locale/en-US.ini
index 93956a5c1..ac57cae3a 100644
--- a/UI/data/locale/en-US.ini
+++ b/UI/data/locale/en-US.ini
@@ -950,6 +950,7 @@ Basic.Settings.Output.Simple.Encoder.Hardware.NVENC.H264="Hardware (NVENC, H.264
Basic.Settings.Output.Simple.Encoder.Hardware.NVENC.AV1="Hardware (NVENC, AV1)"
Basic.Settings.Output.Simple.Encoder.Hardware.NVENC.HEVC="Hardware (NVENC, HEVC)"
Basic.Settings.Output.Simple.Encoder.Hardware.Apple.H264="Hardware (Apple, H.264)"
+Basic.Settings.Output.Simple.Encoder.Hardware.Apple.HEVC="Hardware (Apple, HEVC)"
Basic.Settings.Output.Simple.Encoder.SoftwareLowCPU="Software (x264 low CPU usage preset, increases file size)"
Basic.Settings.Output.Simple.TwitchVodTrack="Twitch VOD Track (Uses Track 2)"
Basic.Settings.Output.Warn.EnforceResolutionFPS.Title="Incompatible Resolution/Framerate"
diff --git a/UI/window-basic-main-outputs.cpp b/UI/window-basic-main-outputs.cpp
index 10f4e9d45..0b2ba5f42 100644
--- a/UI/window-basic-main-outputs.cpp
+++ b/UI/window-basic-main-outputs.cpp
@@ -381,6 +381,8 @@ const char *get_simple_output_encoder(const char *encoder)
} else if (strcmp(encoder, SIMPLE_ENCODER_NVENC_HEVC) == 0) {
return EncoderAvailable("jim_hevc_nvenc") ? "jim_hevc_nvenc"
: "ffmpeg_hevc_nvenc";
+ } else if (strcmp(encoder, SIMPLE_ENCODER_APPLE_HEVC) == 0) {
+ return "com.apple.videotoolbox.videoencoder.ave.hevc";
#endif
} else if (strcmp(encoder, SIMPLE_ENCODER_NVENC_AV1) == 0) {
return "jim_av1_nvenc";
diff --git a/UI/window-basic-main-profiles.cpp b/UI/window-basic-main-profiles.cpp
index c44e9f7a7..497425536 100644
--- a/UI/window-basic-main-profiles.cpp
+++ b/UI/window-basic-main-profiles.cpp
@@ -842,6 +842,10 @@ void OBSBasic::CheckForSimpleModeX264Fallback()
amd_hevc_supported = true;
else if (strcmp(id, "ffmpeg_hevc_nvenc") == 0)
nve_hevc_supported = true;
+ else if (strcmp(id,
+ "com.apple.videotoolbox.videoencoder.ave.hevc") ==
+ 0)
+ apple_supported = true;
#endif
else if (strcmp(id,
"com.apple.videotoolbox.videoencoder.ave.avc") ==
@@ -881,6 +885,12 @@ void OBSBasic::CheckForSimpleModeX264Fallback()
name = SIMPLE_ENCODER_X264;
return false;
}
+ } else if (strcmp(name, SIMPLE_ENCODER_APPLE_HEVC) == 0) {
+ if (!apple_supported) {
+ changed = true;
+ name = SIMPLE_ENCODER_X264;
+ return false;
+ }
#endif
} else if (strcmp(name, SIMPLE_ENCODER_AMD) == 0) {
if (!amd_supported) {
diff --git a/UI/window-basic-main.hpp b/UI/window-basic-main.hpp
index f34243fbb..29c09de0b 100644
--- a/UI/window-basic-main.hpp
+++ b/UI/window-basic-main.hpp
@@ -71,6 +71,7 @@ class OBSBasicStats;
#define SIMPLE_ENCODER_AMD "amd"
#define SIMPLE_ENCODER_AMD_HEVC "amd_hevc"
#define SIMPLE_ENCODER_APPLE_H264 "apple_h264"
+#define SIMPLE_ENCODER_APPLE_HEVC "apple_hevc"
#define PREVIEW_EDGE_SIZE 10
diff --git a/UI/window-basic-settings-stream.cpp b/UI/window-basic-settings-stream.cpp
index e7c5fdad9..c346e089c 100644
--- a/UI/window-basic-settings-stream.cpp
+++ b/UI/window-basic-settings-stream.cpp
@@ -1400,6 +1400,13 @@ void OBSBasicSettings::ResetEncoders(bool streamOnly)
ui->simpleOutStrEncoder->addItem(
ENCODER_STR("Hardware.NVENC.HEVC"),
QString(SIMPLE_ENCODER_NVENC_HEVC));
+#ifdef __APPLE__
+ if (service_supports_encoder(
+ codecs, "com.apple.videotoolbox.videoencoder.ave.hevc"))
+ ui->simpleOutStrEncoder->addItem(
+ ENCODER_STR("Hardware.Apple.HEVC"),
+ QString(SIMPLE_ENCODER_APPLE_HEVC));
+#endif
#endif
if (service_supports_encoder(codecs, "h264_texture_amf"))
ui->simpleOutStrEncoder->addItem(
diff --git a/UI/window-basic-settings.cpp b/UI/window-basic-settings.cpp
index 7fe27b7c6..0672d47e2 100644
--- a/UI/window-basic-settings.cpp
+++ b/UI/window-basic-settings.cpp
@@ -4813,6 +4813,10 @@ void OBSBasicSettings::FillSimpleRecordingValues()
ui->simpleOutRecEncoder->addItem(
ENCODER_STR("Hardware.NVENC.HEVC"),
QString(SIMPLE_ENCODER_NVENC_HEVC));
+ if (EncoderAvailable("com.apple.videotoolbox.videoencoder.ave.hevc"))
+ ui->simpleOutRecEncoder->addItem(
+ ENCODER_STR("Hardware.Apple.HEVC"),
+ QString(SIMPLE_ENCODER_APPLE_HEVC));
#endif
if (EncoderAvailable("h264_texture_amf"))
ui->simpleOutRecEncoder->addItem(