2026-01-02 20:00:18 +01:00
|
|
|
|
// clang_rt_compat.c
|
2026-01-08 22:10:38 +01:00
|
|
|
|
// 兼容 32 位 Clang 编译的 libx264 运行时函数
|
2025-11-29 10:32:35 +01:00
|
|
|
|
|
|
|
|
|
|
#ifdef _M_IX86
|
|
|
|
|
|
|
|
|
|
|
|
#pragma comment(linker, "/alternatename:__ultof3=_ultof3_impl")
|
|
|
|
|
|
#pragma comment(linker, "/alternatename:__dtoul3_legacy=_dtoul3_impl")
|
|
|
|
|
|
#pragma comment(linker, "/alternatename:__dtol3=_dtol3_impl")
|
|
|
|
|
|
#pragma comment(linker, "/alternatename:__ltod3=_ltod3_impl")
|
|
|
|
|
|
#pragma comment(linker, "/alternatename:__ultod3=_ultod3_impl")
|
|
|
|
|
|
|
|
|
|
|
|
// unsigned long long to float
|
2025-11-29 23:22:55 +01:00
|
|
|
|
float __cdecl ultof3_impl(unsigned long long a)
|
|
|
|
|
|
{
|
2025-11-29 10:32:35 +01:00
|
|
|
|
return (float)a;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// double to unsigned long long
|
2025-11-29 23:22:55 +01:00
|
|
|
|
unsigned long long __cdecl dtoul3_impl(double a)
|
|
|
|
|
|
{
|
2025-11-29 10:32:35 +01:00
|
|
|
|
if (a < 0) return 0;
|
|
|
|
|
|
if (a >= 18446744073709551616.0) return 0xFFFFFFFFFFFFFFFFULL;
|
|
|
|
|
|
return (unsigned long long)a;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// double to long long
|
2025-11-29 23:22:55 +01:00
|
|
|
|
long long __cdecl dtol3_impl(double a)
|
|
|
|
|
|
{
|
2025-11-29 10:32:35 +01:00
|
|
|
|
return (long long)a;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// long long to double
|
2025-11-29 23:22:55 +01:00
|
|
|
|
double __cdecl ltod3_impl(long long a)
|
|
|
|
|
|
{
|
2025-11-29 10:32:35 +01:00
|
|
|
|
return (double)a;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// unsigned long long to double
|
2025-11-29 23:22:55 +01:00
|
|
|
|
double __cdecl ultod3_impl(unsigned long long a)
|
|
|
|
|
|
{
|
2025-11-29 10:32:35 +01:00
|
|
|
|
return (double)a;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|