Use force inlining of YUV conversion functions
Force inling of the 444->420 conversion functions because their CPU usage goes up pretty heavily without it when compiling without optimizations
This commit is contained in:
parent
e4921074c1
commit
4be4dd735e
@ -19,17 +19,17 @@
|
||||
#include <xmmintrin.h>
|
||||
#include <emmintrin.h>
|
||||
|
||||
static inline uint32_t get_m128_32_0(const __m128i val)
|
||||
static FORCE_INLINE uint32_t get_m128_32_0(const __m128i val)
|
||||
{
|
||||
return *(uint32_t* const)&val;
|
||||
}
|
||||
|
||||
static inline uint32_t get_m128_32_1(const __m128i val)
|
||||
static FORCE_INLINE uint32_t get_m128_32_1(const __m128i val)
|
||||
{
|
||||
return *(((uint32_t* const)&val)+1);
|
||||
}
|
||||
|
||||
static inline void pack_lum(uint8_t *lum_plane,
|
||||
static FORCE_INLINE void pack_lum(uint8_t *lum_plane,
|
||||
uint32_t lum_pos0, uint32_t lum_pos1,
|
||||
const __m128i line1, const __m128i line2,
|
||||
const __m128i lum_mask)
|
||||
@ -43,7 +43,7 @@ static inline void pack_lum(uint8_t *lum_plane,
|
||||
*(uint32_t*)(lum_plane+lum_pos1) = get_m128_32_1(pack_val);
|
||||
}
|
||||
|
||||
static inline void pack_chroma_1plane(uint8_t *uv_plane,
|
||||
static FORCE_INLINE void pack_chroma_1plane(uint8_t *uv_plane,
|
||||
uint32_t chroma_pos,
|
||||
const __m128i line1, const __m128i line2,
|
||||
const __m128i uv_mask)
|
||||
@ -61,7 +61,7 @@ static inline void pack_chroma_1plane(uint8_t *uv_plane,
|
||||
*(uint32_t*)(uv_plane+chroma_pos) = get_m128_32_0(avg_val);
|
||||
}
|
||||
|
||||
static inline void pack_chroma_2plane(uint8_t *u_plane, uint8_t *v_plane,
|
||||
static FORCE_INLINE void pack_chroma_2plane(uint8_t *u_plane, uint8_t *v_plane,
|
||||
uint32_t chroma_pos,
|
||||
const __m128i line1, const __m128i line2,
|
||||
const __m128i uv_mask)
|
||||
|
@ -36,6 +36,12 @@
|
||||
#define inline __inline
|
||||
#endif
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#define FORCE_INLINE __forceinline
|
||||
#else
|
||||
#define FORCE_INLINE __attribute__(always_inline)
|
||||
#endif
|
||||
|
||||
#define EXPORT __declspec(dllexport)
|
||||
#else
|
||||
#define EXPORT
|
||||
|
@ -194,6 +194,8 @@
|
||||
<ExceptionHandling>false</ExceptionHandling>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<AdditionalIncludeDirectories>../../../libobs/util/vc</AdditionalIncludeDirectories>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
@ -215,6 +217,7 @@
|
||||
<ExceptionHandling>false</ExceptionHandling>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<AdditionalIncludeDirectories>../../../libobs/util/vc</AdditionalIncludeDirectories>
|
||||
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
|
Loading…
x
Reference in New Issue
Block a user