将ffmpeg库集成到我们项目代码中在板子上跑时候报错:Illegal instruction,通过定位是在代码中Init位置崩溃,写了个demo来验证具体崩在哪部分代码,以下代码的Init调用的是ffmpeg中的swr_init 接口,所以确定是ffmpeg编译问题。
// main.cpp : 定义控制台应用程序的入口点。
//
#include <stdio.h>
#include <stdlib.h>
#include "Swscale/IAVXSwscale.h"
int main(int argc, char * argv[])
{
int32_t avx_success = 0;
static const int32_t kAudioChannels = 1;
static const int32_t kAudioSampleRate = 16000;
IAVXSwscale * kImplSwscale = CreateSwscale(AVXSWSCALE_ID_FLTP2S16);
if (kImplSwscale == NULL)
{
printf("OpenALAudioDecoder|Init: CreateSwscale is failure\n");
return -1;
}
AVXSwscaleInfo avx_swscale_info;
avx_swscale_info.src_codec_fmt = AVXCODEC_FMT_FLT;
avx_swscale_info.src_dimension.nb_channel = kAudioChannels;//2;//lpSliceInfo->codec.channels;
avx_swscale_info.src_dimension.nb_samples = 1024 * 1;
avx_swscale_info.src_dimension.sample_rate = kAudioSampleRate;//44100;//lpSliceInfo->codec.sample_rate;
avx_swsc