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

This commit is contained in:
PatTheMav
2025-02-04 20:38:15 +01:00
committed by Ryan Foster
parent df97bddd87
commit d6e5ecd88a
4 changed files with 13 additions and 11 deletions

View File

@@ -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()

View File

@@ -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)

View File

@@ -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
}

View File

@@ -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);