打印

i.MX6应用层处理音频数据

[复制链接]
588|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
联通移不动|  楼主 | 2017-4-12 09:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

    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


        相关连接:定点FIR滤波器Matlab设计及C实现

    六、几种数字滤波器比较

        IIR滤波器

    • 巴特沃斯滤波器:通带最平坦,阻带下降慢
    • 切比雪夫滤波器:通带等纹波,阻带下降较快
    • 贝塞尔滤波器:通带等纹波,阻带下降慢,选频特性最差,最佳的线性相位
    • 椭圆滤波器:通带等纹波(阻带平坦或等纹波),阻带下降最快
        FIR滤波器

    • equiripple
    • least-squares(最小乘方)
    • window(窗函数)


    参考文献:
    IIR数字滤波器实现(mantlab+C语言)

    matlab IIr C语言实现

    IIR滤波器的间接设计(C代码)

    教你如何使用matlab中的FDATOOL来设计滤波器
  • 相关帖子

    发新帖 我要提问
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    67

    主题

    127

    帖子

    0

    粉丝