diff options
author | PatTheMav <PatTheMav@users.noreply.github.com> | 2022-11-02 17:29:56 +0100 |
---|---|---|
committer | PatTheMav <PatTheMav@users.noreply.github.com> | 2022-11-02 17:31:11 +0100 |
commit | bb9ec651691cb94838f044ed92cb74a8e6c3d4cc (patch) | |
tree | 55605e61d684035f54e242c3aab8d01f2859aba3 | |
parent | 2e672462814ceb37ce0f1dd34be9edfe81ce0374 (diff) |
UI: Add VideoToolbox HEVC encoders to simple output optionsvt-hevc-prores
-rw-r--r-- | UI/data/locale/en-US.ini | 1 | ||||
-rw-r--r-- | UI/window-basic-main-outputs.cpp | 2 | ||||
-rw-r--r-- | UI/window-basic-main-profiles.cpp | 10 | ||||
-rw-r--r-- | UI/window-basic-main.hpp | 1 | ||||
-rw-r--r-- | UI/window-basic-settings-stream.cpp | 7 | ||||
-rw-r--r-- | UI/window-basic-settings.cpp | 4 |
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( |