Kaynağa Gözat

plugins: Add ARM64 support to obs-ffmpeg, obs-filters, and obs-outputs

PatTheMav 8 ay önce
ebeveyn
işleme
d6e5ecd88a

+ 5 - 3
plugins/obs-ffmpeg/CMakeLists.txt

@@ -26,8 +26,6 @@ target_sources(
     $<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>:obs-ffmpeg-vaapi.c>
     $<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>:vaapi-utils.c>
     $<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>:vaapi-utils.h>
-    $<$<PLATFORM_ID:Windows>:texture-amf-opts.hpp>
-    $<$<PLATFORM_ID:Windows>: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
     $<$<PLATFORM_ID:Windows>:OBS::w32-pthreads>
-    $<$<PLATFORM_ID:Windows>:AMF::AMF>
     $<$<PLATFORM_ID:Windows>:ws2_32>
     $<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>:Libva::va>
     $<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>: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()

+ 1 - 1
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)

+ 3 - 3
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
 }

+ 4 - 4
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);