本文主要是介绍MSVC2017 编译WebRTC Release VP8编码崩溃的问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
问题描述:
使用msvs2017编译webrtc。release版本使用VP8会出现奔溃,H264无问题。现象如下:
编译选项:
"--args=target_cpu=\"x86\" is_debug=false use_rtti=true is_clang = false "
原因:
MSVC编译器的bug
解决办法
解决方法一:
使用CLANG编译,编译选项如下,记得加不使用webrtc带的c++库,否则又是一通错误:
"--args=target_cpu=\"x86\" is_debug=false use_rtti=true is_clang=true use_lld=false use_custom_libcxx=false "
解决方法二:
依旧使用MSVC编译,这个是MSVC编译器的bug。
禁用这个选项,找到代码文件相关代码的函数,修改如下: libvpx\source\libvpx\vpx_dsp\x86\variance_avx2.c
#ifdef _MSC_VER
#pragma optimize("", off)
#endif
static INLINE void variance_final_from_16bit_sum_avx2(__m256i vsse,__m256i vsum,unsigned int *const sse,int *const sum) {// extract the low lane and add it to the high laneconst __m128i sum_reg_128 = _mm_add_epi16(_mm256_castsi256_si128(vsum),_mm256_extractf128_si256(vsum, 1));const __m128i sum_reg_64 =_mm_add_epi16(sum_reg_128, _mm_srli_si128(sum_reg_128, 8));const __m128i sum_int32 = _mm_cvtepi16_epi32(sum_reg_64);variance_final_from_32bit_sum_avx2(vsse, sum_int32, sse, sum);
}
#ifdef _MSC_VER
#pragma optimize("", on)
#endif
这篇关于MSVC2017 编译WebRTC Release VP8编码崩溃的问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!