Cat Audio/Video Codec Solution : AGC(Automatic Gain Control)

AGC(Automatic Gain Control)



EasyAGC is an implementation of AGCAutomatic Gain Control. EasyAGC support
multiple channels concurrent. There is no limit on concurrent channels and it can up to
thousands channels.
The binary library of EasyAGC only support 8kHz samples. If you want to support samples
other than 8kHz, you need buy the source code of EasyAGC.
EasyAGC specifications
Speech sampling rate(Hz) 8000
Samples in one Frame any
EasyAGC has a binary release version on Windows and Linux. The source code of
EasyAGC is written by C/C++, so you can easily port it to UNIX, PPC,DSP, Vxworks or
other operation system that support C/C++.
PACKAGE CONTENTS
EasyAGC.pdf This document
EasyAGC.lib Win32 statically linkable library of AGC for Pentium and
compatible processors.
libAGC.a Linux statically linkable library of AGC for Pentium and
compatible processors.
EasyAGC.h API prototypes and constants declarations required by the
sample programs.
test_agc directory Microsoft VC6.0 sample application and Linux GCC sample
application. Demonstrating how to use AGC API calls.
The input requires raw 16-bit mono PCM speech data sampled at 8000 Hz as input, i.e., without
any header information. For every speech frame, consisting of any number samples
ALGORITHM COMPLEXITY
The complexity of AGC is represented as percentage of CPU usage, and is as follows when
tested on an Intel 800 MHz Celeron-MMX:
AGC less than 1% CPU time
ABOUT THE SAMPLE PROGRAMS
The sample programs under test_agc directory are used to simulate the AGC and demonstrate
how to initialize and call the AGC process. The program is run as follows (where infile and
outfile are raw 16 bit PCM files sampled at 8 kHz):
test_agc infile outfile
To build the AGC sample programs on Windows, you can open test_agc.dsw with VC6.0 or later
version. After compiler and link, it will create the execute program of test_agc.exe, you can test it
with following command.
EasyAGC
Imtelephone.com 4
test_agc test.pcm test1.pcm
To build the AGC sample programs on Linux, you only need rum make command. After you
successfully finished make command, you can run make run to test AGC.
EasyAGC API FUNCTIONS
EasyAGC_init
Description Initializes the memory needed by the AGC process. This function must be
called prior to opening or re-opening a channel.
Syntax #include “EasyAGC.h”
AGC_HANDLE EasyAGC_init();
Arguments none
Returned value Return a handle that represent an AGC channel, this value will used
at EasyAGC_convert and EasyAGC_release
EasyAGC_convert
Description Add automatic gain control to a speech frame, the samples in speech frame can
be defined.
Syntax #include “EasyAGC.h”
bool EasyAGC_Convert(AGC_HANDLE hAGC, short *input, short
*output, int numSamples);
Arguments hAGC The handle returned by EasyAGC_init
input Input speech buffer containing 16-bit PCM speech data.
output Output speech buffer containing 16-bit PCM speech data which
after automatic gain control.
numSamples The samples number in input speech.
Returned
value
Return true if successful, return false if failed.
EasyAGC_release
Description release the memory allocated by the AGC process. This function must be
called before you quit your program. If not, it will cause the memory leak.
Syntax #include “EasyAGC.h”
EasyAGC
Imtelephone.com 5
bool EasyAGC_release(AGC_HANDLE hAGC);
Arguments hAGC The AGC handle returned by EasyAGC_init
Returned value Return true if successful, return false if failed.
FAQS
Here are some frequently asked questions about the EasyAGC.
Q — What type of speech input format is required?
A — Raw 16-bit mono PCM sampled at 8000Hz. Do not use .WAV files. They contain a header
that will produce distortion at the start of a decoded audio sample because the encoder interprets
the header as speech data.
Q — How can I convert my .WAV files to raw 16 bit mono PCM sampled at 8000 Hz?
A — Use an audio editing tool such as SoX - Sound eXchange. See
home.sprynet.com/~cbagwell/sox.html for more information
Q — Can I get link on platforms other than Pentium or compatible?
A — The object code provided in this package is Microsoft Win32 and Linux x86 compatible. It is
compiled for the Pentium family of processors. If you want to use EasyAGC on other platforms,
you should buy the source code of EasyAGC. Then you can compile and link.
Q — Is the EasyAGC able to handle multiple channels?
A — Yes, It can handle multiple channels. There is no limited.
Q — Is the EasyAGC codec free to use?
A — No, The version you get freely is a version only for test. If you want to use it in commercial,
you must buy it from www.imtelephone.com. This version has the same function with the formal
release version, but It can only run less than 6 hours continuously.
Q — How much does the EasyAGC codec cost?
A — The object code of Windows or Linux is $2000/year. The source code is $20000/year. You
can buy it from www.imtelephone.com

Tidak ada komentar:

Posting Komentar