Speech Codecs Library

Summary

The library implements some of the speech codecs provided with Intel IPP Library samples (G.726, G.728, GSM 06.90 AMR) as DirectShow filters (using DirectX Media Object technology) making it available to a wide range of DirectX 9 compatible applications.

Usage of Intel Integrated performance primitives make the processing performance efficient.

See DirectX GraphEdt utility screenshots below to get an idea about availability of the codecs:

Screenshot 1 Screenshot 2

Screenshot 3

Requirements

The library requires the following software items to be installed in system:

  • Microsoft C++ runtime version 7.1, MSVCR71.DLL
  • Microsoft DirectX runtime, use most recent version from Microsoft’s website
  • Intel IPP Library dynamic load libraries; install IPP trial version from Intel’s website to get ones

Installation and Uninstallation

To install the codecs:

  • Download the archive and extract contained AudioCodecs.dll file
  • Register the library as COM server, e.g. run from command line “rundll32.exe AudioCodecs.dll,DllRegisterServer” (not case is important)

To uninstall the codecs:

  • Unregister the library, e.g. run from command line “rundll32.exe AudioCodecs.dll,DllUnregisterServer
  • Delete the library file AudioCodecs.dll

Implementation

The library is implemented in C++ using Microsoft Visual Studio .NET, using Active Templates Library (ATL) and Windows Templates Library (WTL) version 7.5.

The implementation of the codecs is based on Intel Intergrated Performance Primitives (IPP) Library version 5.0 and accompanying samples.

Download

Speech Codecs Library Demo: AudioCodecs-Demo-1.0.0.226.zip

Note that demo version clears some of the audio input.

9 Replies to “Speech Codecs Library”

  1. Hi there,

    i am doing almost the same thing right now and i am running in some problems here.

    I need to Decode G726 Data in Directshow. So i wrote a DMO that uses the Intel IPP (5.3) in C# with Visual Studion 2005. That worked quite ok, but the calls to the IPP just dont seem to do the right thing.No Errormessage, but only noise in the speaker. Can you give me some advice how you used the IPP g.726 gecoder?

    thank you
    hannes

  2. It was over two years ago and I used IPP 5.1 AFAIR which was quite different in interface from IPP 5.2 and 5.3 released later (hopefully there will be no major changes in coming IPP 6.0). So my speech codecs code does not compile right now with IPP 5.3 installed.

    The idea was that IPP implemented codecs use common USC interface implemeted by Intel.

    From you description it looks like you are losing some data buffers and receive noise instead of data.

    In IMediaObject::ProcessInput I saved a reference to provided buffer and in IMediaObject::ProcessOutput I used the buffer to pass atomic data buffers to IPP and use returned data to fill output buffers.

    I suggest that you put a breakpoint on USC_Fxns* Decode function call and check what are you pushing as input and what you are getting as output.

    P.S. I edited your post to hide email.

  3. i am trying to make G.722.1 DMO filter according to your example. But the problem is audio capture filter.
    The input pin of G.722.1 DMO filter should be 16KHz, 16Bit, mono.
    I can not set the audio capture filter output pin to that value.
    Mostly audio capture filter in Window doesn’t provide 16KHz, 16Bit audio, does it ?
    Your comment is highly appreciated.

  4. Jaisonkim, as far as I remember, DirectShow wold provide ACM conversion filter to convert to/from PCM 16 KHz sample rate if hardware does not support this format. I wold rather say that the problem is in AM_MEDIA_TYPE you enumerate and/or accept on the pins of your filter. Can you re-check everything is OK there?

Leave a Reply