Rockchip AEC_ANR_AGC算法

compile

mkdir -p build
cd build
cmake .. -DCMAKE_TOOLCHAIN_FILE=~/video/rv1109/buildroot/output/rockchip_puma_toolchain/host/share/buildroot/toolchainfile.cmake
make

优化选项: -O3 -mfpu=neon -mfloat-abi=hard

资源占用情况

测试环境

  • RV1808 EVB

  • cpu: 关闭ARM核保留一个核,定频 1Ghz

echo userspace > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

echo 1008000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed

echo 0 > /sys/devices/system/cpu/cpu1/online

  • ddr : LPDDR3 933MHz

Test

  • 内存占用情况:RSS 1.6M

  • 计算耗时 cpu 37%

  • ./test_aec_anr_agc csq_0_1mic.wav csq_0_1mic-out.wav
    filename=csq_0_1mic.wav format=1 num_channels=2 sample_rate=16000 sample_bits=16 num_samples=128001
    mic_channel = 1, ref channel = 1
    init ch 0
    init ch 0 succeed
    init ok
    alloc ok
    elapse 6 ms //PROCESS TX 16ms数据

    elapse 0 ms //PROCESS RX
    elapse 6 ms
    elapse 0 ms
    elapse 6 ms
    elapse 0 ms
    elapse 6 ms
    elapse 0 ms
    elapse 6 ms
    elapse 0 ms

  • 稳定性测试
    * 多实例循环压力测试通过:没有内存泄露,可以稳定长时运行

    cat /proc/673/status

    Name: test_aec_anr_ag
    State: R (running)
    Tgid: 673
    Ngid: 0
    Pid: 673
    PPid: 609
    TracerPid: 0
    Uid: 0 0 0 0
    Gid: 0 0 0 0
    FDSize: 64
    Groups:
    VmPeak: 2444 kB
    VmSize: 2444 kB
    VmLck: 0 kB
    VmPin: 0 kB
    VmHWM: 1672 kB
    VmRSS: 1672 kB
    VmData: 292 kB
    VmStk: 132 kB
    VmExe: 8 kB
    VmLib: 1784 kB
    VmPTE: 20 kB
    VmPMD: 8 kB
    VmSwap: 0 kB
    Threads: 1
    SigQ: 0/7992
    SigPnd: 0000000000000000
    ShdPnd: 0000000000000000
    SigBlk: 0000000000000000
    SigIgn: 0000000000000000
    SigCgt: 0000000000000000
    CapInh: 0000000000000000
    CapPrm: 0000003fffffffff
    CapEff: 0000003fffffffff
    CapBnd: 0000003fffffffff
    CapAmb: 0000000000000000
    Speculation_Store_Bypass: unknown
    Cpus_allowed: 3
    Cpus_allowed_list: 0-1
    Mems_allowed: 1
    Mems_allowed_list: 0
    voluntary_ctxt_switches: 1
    nonvoluntary_ctxt_switches: 38