i.MX6开发系列(二)——应用层处理音频数据

 

 

i.MX6开发系列(二)——应用层处理音频数据

小狼@http://blog.csdn.net/xiaolangyangyang

源码下载地址:http://download.csdn.net/detail/xiaolangyangyang/9631833

 


一、内核配置中打开硬浮点运算

    Floating point emulation  --->

        [*] VFP-format floating point maths
        [*]   Advanced SIMD (NEON) Extension support

二、应用层实现音频播放器

    转码:# ffmepg -i 1.mp3 -f wav 1.wav

    如果ffmepg命令不可用,也可以使用酷狗音乐等音乐播放器进行转码

    在下载的源码中,player.c为播放器源码

    编译:# arm-fsl-linux-gnueabi-gcc -o player player.c -lasound

    运行:# ./player 1.wav

    如果缺少asound库可参考:alsa-lib及alsa-utils成功移植(原创)

三、音频播放器中实现FFT与IFFT

    在下载的源码中,包括fft.c fft.h fft_test.c三个文件

    编译:# arm-fsl-linux-gnueabi-gcc -o fft_test fft.c fft_test.c -march=armv7-a -mtune=cortex-a9 -mfpu=neon -mfloat-abi=hard -lm

    运行:# ./fft_test

    这里采用的neon硬件浮点运算器,也可以使用其他的硬件浮点运算器,如vfp

    FFT结果的物理意义ZZ

四、音频播放器中实现IIR滤波

    FDAtool参数如下(低通滤波器):

 

  • Edit -> Convert Structure -> Direct-Form I, SOS
  • Targets -> Generate C Header
  • Generate -> iir_coefs.h
  • 打开iir_coefs.h把MWSPT_NSEC替换成IIR_NSEC, NL、DL数组删除掉,real32_T改成float,删掉#include "tmwtypes.h"
    添加IIR低通滤波器的player源码下载地址: http://download.csdn.net/detail/xiaolangyangyang/9633733
    编译:# arm-fsl-linux-gnueabi-gcc -o player player.c iir_filter.c -march=armv7-a -mtune=cortex-a9 -mfpu=neon -mfloat-abi=hard -lm -lasound
    运行:# ./player 1.wav
    Note:滤波频率跟数据采样频率有关

 

五、音频播放器中实现FIR滤波

    FDAtool参数如下(低通滤波器):

 

  • 点击左下侧快捷图标栏中的“Set quantization parameters”快捷图标 -> Single-precision floating-point
  • Targets -> Generate C header ...

 

  • Generate -> fir_coefs.h
  • 打开fir_coefs.h把BL数组删除掉,real32_T改成float,删掉#include "tmwtypes.h"
    添加FIR低通滤波器的player源码下载地址: http://download.csdn.net/detail/xiaolangyangyang/9636065
    编译:# arm-fsl-linux-gnueabi-gcc -o player player.c fir_filter.c -march=armv7-a -mtune=cortex-a9 -mfpu=neon -mfloat-abi=hard -lm -lasound
    运行:# ./player 1.wav

 

六、几种数字滤波器比较

    IIR滤波器

  1. 巴特沃斯滤波器:通带最平坦,阻带下降慢
  2. 切比雪夫滤波器:通带等纹波,阻带下降较快
  3. 贝塞尔滤波器:通带等纹波,阻带下降慢,选频特性最差,最佳的线性相位
  4. 椭圆滤波器:通带等纹波(阻带平坦或等纹波),阻带下降最快
    FIR滤波器
  1. equiripple
  2. least-squares(最小乘方)
  3. window(窗函数)
 
参考文献:
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值