From d6e5ecd88a936dac36595dfd0f9959f40a6b17d0 Mon Sep 17 00:00:00 2001 From: PatTheMav Date: Tue, 4 Feb 2025 20:38:15 +0100 Subject: [PATCH] plugins: Add ARM64 support to obs-ffmpeg, obs-filters, and obs-outputs --- plugins/obs-ffmpeg/CMakeLists.txt | 8 +++++--- plugins/obs-ffmpeg/cmake/dependencies.cmake | 2 +- plugins/obs-ffmpeg/obs-ffmpeg.c | 6 +++--- plugins/obs-filters/compressor-filter.c | 8 ++++---- 4 files changed, 13 insertions(+), 11 deletions(-) diff --git a/plugins/obs-ffmpeg/CMakeLists.txt b/plugins/obs-ffmpeg/CMakeLists.txt index 6bc0ab087..4074dde0f 100644 --- a/plugins/obs-ffmpeg/CMakeLists.txt +++ b/plugins/obs-ffmpeg/CMakeLists.txt @@ -26,8 +26,6 @@ target_sources( $<$:obs-ffmpeg-vaapi.c> $<$:vaapi-utils.c> $<$:vaapi-utils.h> - $<$:texture-amf-opts.hpp> - $<$:texture-amf.cpp> obs-ffmpeg-audio-encoders.c obs-ffmpeg-av1.c obs-ffmpeg-compat.h @@ -65,7 +63,6 @@ target_link_libraries( FFmpeg::swscale FFmpeg::swresample $<$:OBS::w32-pthreads> - $<$:AMF::AMF> $<$:ws2_32> $<$:Libva::va> $<$:Libva::drm> @@ -76,6 +73,11 @@ target_link_libraries( ) if(OS_WINDOWS) + if(CMAKE_VS_PLATFORM_NAME STREQUAL x64) + target_sources(obs-ffmpeg PRIVATE texture-amf-opts.hpp texture-amf.cpp) + target_link_libraries(obs-ffmpeg PRIVATE AMF::AMF) + endif() + configure_file(cmake/windows/obs-module.rc.in obs-ffmpeg.rc) target_sources(obs-ffmpeg PRIVATE obs-ffmpeg.rc) endif() diff --git a/plugins/obs-ffmpeg/cmake/dependencies.cmake b/plugins/obs-ffmpeg/cmake/dependencies.cmake index 39641fadf..5e523cd37 100644 --- a/plugins/obs-ffmpeg/cmake/dependencies.cmake +++ b/plugins/obs-ffmpeg/cmake/dependencies.cmake @@ -12,7 +12,7 @@ if(NOT TARGET OBS::opts-parser) add_subdirectory("${CMAKE_SOURCE_DIR}/shared/opts-parser" "${CMAKE_BINARY_DIR}/shared/opts-parser") endif() -if(OS_WINDOWS) +if(OS_WINDOWS AND CMAKE_VS_PLATFORM_NAME STREQUAL x64) find_package(AMF 1.4.29 REQUIRED) add_subdirectory(obs-amf-test) elseif(OS_LINUX OR OS_FREEBSD OR OS_OPENBSD) diff --git a/plugins/obs-ffmpeg/obs-ffmpeg.c b/plugins/obs-ffmpeg/obs-ffmpeg.c index df631a672..57c6dcbeb 100644 --- a/plugins/obs-ffmpeg/obs-ffmpeg.c +++ b/plugins/obs-ffmpeg/obs-ffmpeg.c @@ -322,7 +322,7 @@ static bool hevc_vaapi_supported(void) #endif #endif -#ifdef _WIN32 +#if defined(_WIN32) && !defined(_M_ARM64) extern void amf_load(void); extern void amf_unload(void); #endif @@ -372,7 +372,7 @@ bool obs_module_load(void) } #endif -#ifdef _WIN32 +#if defined(_WIN32) && !defined(_M_ARM64) amf_load(); #endif @@ -421,7 +421,7 @@ void obs_module_unload(void) obs_ffmpeg_unload_logging(); #endif -#ifdef _WIN32 +#if defined(_WIN32) && !defined(_M_ARM64) amf_unload(); #endif } diff --git a/plugins/obs-filters/compressor-filter.c b/plugins/obs-filters/compressor-filter.c index 432263e73..9c1aa35c8 100644 --- a/plugins/obs-filters/compressor-filter.c +++ b/plugins/obs-filters/compressor-filter.c @@ -26,7 +26,7 @@ /* clang-format off */ -#define S_RATIO "ratio" +#define S_FILTER_RATIO "ratio" #define S_FILTER_THRESHOLD "threshold" #define S_ATTACK_TIME "attack_time" #define S_RELEASE_TIME "release_time" @@ -189,7 +189,7 @@ static void compressor_update(void *data, obs_data_t *s) const float output_gain_db = (float)obs_data_get_double(s, S_OUTPUT_GAIN); const char *sidechain_name = obs_data_get_string(s, S_SIDECHAIN_SOURCE); - cd->ratio = (float)obs_data_get_double(s, S_RATIO); + cd->ratio = (float)obs_data_get_double(s, S_FILTER_RATIO); cd->threshold = (float)obs_data_get_double(s, S_FILTER_THRESHOLD); cd->attack_gain = gain_coefficient(sample_rate, attack_time_ms / MS_IN_S_F); cd->release_gain = gain_coefficient(sample_rate, release_time_ms / MS_IN_S_F); @@ -437,7 +437,7 @@ static struct obs_audio_data *compressor_filter_audio(void *data, struct obs_aud static void compressor_defaults(obs_data_t *s) { - obs_data_set_default_double(s, S_RATIO, 10.0f); + obs_data_set_default_double(s, S_FILTER_RATIO, 10.0f); obs_data_set_default_double(s, S_FILTER_THRESHOLD, -18.0f); obs_data_set_default_int(s, S_ATTACK_TIME, 6); obs_data_set_default_int(s, S_RELEASE_TIME, 60); @@ -475,7 +475,7 @@ static obs_properties_t *compressor_properties(void *data) if (cd) parent = obs_filter_get_parent(cd->context); - p = obs_properties_add_float_slider(props, S_RATIO, TEXT_RATIO, MIN_RATIO, MAX_RATIO, 0.5); + p = obs_properties_add_float_slider(props, S_FILTER_RATIO, TEXT_RATIO, MIN_RATIO, MAX_RATIO, 0.5); obs_property_float_set_suffix(p, ":1"); p = obs_properties_add_float_slider(props, S_FILTER_THRESHOLD, TEXT_THRESHOLD, MIN_THRESHOLD_DB, MAX_THRESHOLD_DB, 0.1);