Patch SVT-AV1 to avoid corrupted files with MSVC (#3257)
diff --git a/CHANGELOG.md b/CHANGELOG.md index a0a8d88..d743ef8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md
@@ -16,6 +16,9 @@ * Update LocalAvm.cmake: v1.0.0 * Copy XMP/Exif in avifgainmaputil tonemap +* Apply patch to SVT-AV1 with AVIF_CODEC_SVT=LOCAL to fix corrupted encoded + files when SVT-AV1 is built with MSVC. See + https://github.com/AOMediaCodec/libavif/issues/3255. ## [1.4.2] - 2026-05-26
diff --git a/cmake/Modules/LocalSvt.cmake b/cmake/Modules/LocalSvt.cmake index 770989a..33a1d5d 100644 --- a/cmake/Modules/LocalSvt.cmake +++ b/cmake/Modules/LocalSvt.cmake
@@ -42,6 +42,8 @@ GIT_TAG "${AVIF_SVT_GIT_TAG}" UPDATE_COMMAND "" GIT_SHALLOW ON + # See https://github.com/AOMediaCodec/libavif/issues/3255. + PATCH_COMMAND git apply ${AVIF_SOURCE_DIR}/cmake/Modules/LocalSvt.diff ) set(BUILD_DEC OFF CACHE BOOL "")
diff --git a/cmake/Modules/LocalSvt.diff b/cmake/Modules/LocalSvt.diff new file mode 100644 index 0000000..72d88ef --- /dev/null +++ b/cmake/Modules/LocalSvt.diff
@@ -0,0 +1,19 @@ +diff --git a/Source/Lib/ASM_AVX2/synonyms_avx2.h b/Source/Lib/ASM_AVX2/synonyms_avx2.h +index ce35493..48fef09 100644 +--- a/Source/Lib/ASM_AVX2/synonyms_avx2.h ++++ b/Source/Lib/ASM_AVX2/synonyms_avx2.h +@@ -83,7 +83,13 @@ static INLINE __m256i yy_loadu2_128(const void* hi, const void* lo) { + return yy_set_m128i(mhi, mlo); + } + +-static INLINE __m256i yy_unpacklo_epi128(const __m256i in0, const __m256i in1) { ++#if defined(_MSC_VER) && _MSC_VER >= 1950 ++#define MAYBE_INLINE NOINLINE ++#else ++#define MAYBE_INLINE INLINE ++#endif ++ ++static MAYBE_INLINE __m256i yy_unpacklo_epi128(const __m256i in0, const __m256i in1) { + return _mm256_inserti128_si256(in0, _mm256_castsi256_si128(in1), 1); + } +