This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Apply AEC/AER on Windows phone

Other Parts Discussed in Thread: TWL6040

Hi,

My embedded device uses OMAP4430+TWL6040 and WinCE7 OS, in order to do echo cancellation and noise suppression on VoIP, I have downloaded aer_gcarmv7a_obj_16_1_0_3_Win32.exe and installed on my Windows7 PC, but I have no idea how to apply AEC/AER on my embedded device.

Do I need to copy Cortex-A8 libraries : aer_a.av7A and aer_c.av7A to my embedded device, integrate AER API into my WinCE7 codes, then do a Windows build and load image into my embedded device, after that I can perceive the echo cancellation effect when start VoIP?

Thanks,

Chang-Chih

  • Hi,

    Follow the integration guidelines in "AER_Integration_Guide.pdf", I add some AER files into my WinCE7 codes to do a Windows build, then some errors occurred during the build process :

    Error(s) in directory "D:\OMAP4430_CE\WINCE7_AER_0517\platform\SDP4430\SRC\CSP\OMAP\TWL6040\TWA\".
    BUILD: [01:0000000849:ERRORE] twl6040.obj : error LNK2019: unresolved external symbol "short __cdecl aerCreate(struct aerCreateConfig_s *)" (?aerCreate@@YAFPAUaerCreateConfig_s@@@Z) referenced in function "unsigned long __cdecl TWA_Init(unsigned short const *,void const *)" (?TWA_Init@@YAKPBGPBX@Z)
    BUILD: [01:0000000850:ERRORE] D:\OMAP4430_CE\WINCE7_AER_0517\public\CEBASE\cesysgen\SDP4430_ARMV7\platform\SDP4430\target\ARMV7\debug\twl6040.dll : fatal error LNK1120: 1 unresolved externals

    I think it may be library issue.

    The libraries of Cortex-A8 are aer_a.av7A and aer_c.av7A, does anybody know how to load these libraries into my WinCE7 codes?

  • Hi,

    I refer to thread http://e2e.ti.com/support/embedded/multimedia_software_codecs/f/356/t/128093.aspx : "To build the AER library into your project, you'll need to include the two library files : ti/mas/aer/c55L/aer_c.a55L and aer_a.a55L."  I work on Cortex-A8, so I use aer_a.av7A and aer_c.av7A instead of aer_c.a55L and aer_a.a55L, but does anybody know how to "include" aer_a.av7A and aer_c.av7A into C++ source file and compile?

  • Hi Chang-Chih,

    There is a pre-built AER test program that can be an example for your application. Please refer to the following two files regarding how to link aer_a.av7A and aer_c.av7A:

    1. <Your AER installation root>\packages\ti\mas\aer\test\makefile

    2. <Your AER installation root>\packages\ti\mas\aer\test\lnkr\gcarmv7a\aertest_cortexA8.xv7A.mk

    Basically, you'll need to do something like the following:

    lnkr/gcarmv7a/aertest_cortexA8.xv7A :  $(MAS_INSTALL_DIR)/ti/mas/aer/gcarmv7a/aer_c.av7A
    lnkr/gcarmv7a/aertest_cortexA8.xv7A :  $(MAS_INSTALL_DIR)/ti/mas/aer/gcarmv7a/aer_a.av7A
    lnkr/gcarmv7a/aertest_cortexA8.xv7A :  $(MAS_INSTALL_DIR)/ti/mas/aer/gcarmv7a/aer_c.av7A
    lnkr/gcarmv7a/aertest_cortexA8.xv7A :  $(MAS_INSTALL_DIR)/ti/mas/sdk/gcarmv7a/sdk_c.av7A
    lnkr/gcarmv7a/aertest_cortexA8.xv7A :  $(MAS_INSTALL_DIR)/ti/mas/vpe/gcarmv7a/vpe_c.av7A
    lnkr/gcarmv7a/aertest_cortexA8.xv7A :  $(MAS_INSTALL_DIR)/ti/mas/util/gcarmv7a/util_c.av7A
    lnkr/gcarmv7a/aertest_cortexA8.xv7A :  $(CORTEXTA8TESTSRCCOBJS) $(COMMONTESTSRCCOBJS)

    Regards,

    Jianzhong

  • Hi Jianzhong,

    Thanks for your reply.

    For my Windows build environment, Visual Studio 2008 and WinCE 7.0(ARM V6,V7 compiler and platform builder) are installed on my Windows7 PC,  then I open cmd.exe and issue build commands to compile SW(Wince7 AKU and BSP).

    For linking aer_a.av7A and aer_c.av7A, do you mean I need to copy some contents in aertest_cortexA8.xv7A.mk to the makefile on my own SW?

    Another question, according to "AER_Installation_Verification.pdf", Cortex-A8 build was generated in Linux environment, can Cortex-A8 only be generated in Linux environment? if yes, why? if not, how Cortex-A8 build was generated in Windows environment?

    Thanks,

    Chang-Chih

  • Chang-Chih,

    The makefile I pointed to you was an example on how to build a system with AER in Linux. The Cortex-A8 library of AER was compiled and generated in a Linux environment. That doesn't mean Linux is the only environment for building Cortex-A8, but I don't know how to do it in Windows environment.

    Regards,

    Jianzhong

  • Hi Jianzhong,

    Thanks for your reply, but I still don't know how to use AER.

    This is the first time for my company to use TI chipset(OMAP4430 and Twl6040 for audio system), I look for the SW solution of echo cancellation and noise suppression all the way(And I know there is little SW solution for Windows). In the beginning, I think the AER is easy to install and use just like the application installer, after reading the documents and extracting the installer, the event didn't go the way I thought.

    Below are my new questions :

    1. What is the "correct way" to use the AER(or what's its release object)? Because I think it's not easy to integrate AER into my own project.

    2. Is the core algorithm of AER packaged as library? The echo cancellation procedures can not be seen on the test source codes?

    3. There is pre-build executable for testing, is that mean to use the AER, it needs to call the executable during VoIP even I integrate AER to my own project?

    Thanks for your kindly support.

    Chang-Chih

  • Hi Chang-Chih,

    For your questions #1 and #2, yes, the AER package you downloaded from ti.com is a library. You'll need to integrate the object code library aer_a.av7A and aer_c.av7A into your VoIP application. The AER library only performs acoustic echo cancellation. Your VoIP application need other pieces such as voice codec, jitter buffer, etc.

    For question #3, the pre-built executable is an example how AER API should be used. It uses file I/O as input and output for simulation. This executable should not be in your own project.

    Regards,

    Jianzhong