Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
Xiph.Org
Speex
Commits
7bd8f386
Commit
7bd8f386
authored
Dec 22, 2009
by
slicer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Split libspeex and libspeexdsp
parent
a6d05eb5
Changes
38
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
38 changed files
with
49 additions
and
9706 deletions
+49
-9706
Makefile.am
Makefile.am
+1
-1
configure.ac
configure.ac
+4
-5
include/speex/Makefile.am
include/speex/Makefile.am
+2
-2
include/speex/speex_buffer.h
include/speex/speex_buffer.h
+0
-72
include/speex/speex_echo.h
include/speex/speex_echo.h
+0
-174
include/speex/speex_jitter.h
include/speex/speex_jitter.h
+0
-201
include/speex/speex_preprocess.h
include/speex/speex_preprocess.h
+0
-223
include/speex/speex_resampler.h
include/speex/speex_resampler.h
+0
-344
libspeex/Makefile.am
libspeex/Makefile.am
+17
-29
libspeex/echo_diagnostic.m
libspeex/echo_diagnostic.m
+0
-72
libspeex/jitter.c
libspeex/jitter.c
+0
-843
libspeex/mdf.c
libspeex/mdf.c
+0
-1285
libspeex/preprocess.c
libspeex/preprocess.c
+0
-1215
libspeex/pseudofloat.h
libspeex/pseudofloat.h
+0
-379
libspeex/resample.c
libspeex/resample.c
+0
-1137
libspeex/resample_sse.h
libspeex/resample_sse.h
+0
-128
libspeex/scal.c
libspeex/scal.c
+0
-293
libspeex/testdenoise.c
libspeex/testdenoise.c
+0
-44
libspeex/testecho.c
libspeex/testecho.c
+0
-53
libspeex/testjitter.c
libspeex/testjitter.c
+0
-75
libspeex/testresample.c
libspeex/testresample.c
+0
-86
speexdsp.pc.in
speexdsp.pc.in
+0
-15
src/Makefile.am
src/Makefile.am
+5
-10
src/speexenc.c
src/speexenc.c
+15
-3
win32/Makefile.am
win32/Makefile.am
+1
-1
win32/VS2003/Makefile.am
win32/VS2003/Makefile.am
+1
-1
win32/VS2003/libspeexdsp/Makefile.am
win32/VS2003/libspeexdsp/Makefile.am
+0
-8
win32/VS2003/libspeexdsp/libspeexdsp.vcproj
win32/VS2003/libspeexdsp/libspeexdsp.vcproj
+0
-345
win32/VS2005/Makefile.am
win32/VS2005/Makefile.am
+1
-1
win32/VS2005/libspeexdsp/Makefile.am
win32/VS2005/libspeexdsp/Makefile.am
+0
-8
win32/VS2005/libspeexdsp/libspeexdsp.vcproj
win32/VS2005/libspeexdsp/libspeexdsp.vcproj
+0
-1628
win32/VS2008/Makefile.am
win32/VS2008/Makefile.am
+1
-1
win32/VS2008/libspeexdsp/Makefile.am
win32/VS2008/libspeexdsp/Makefile.am
+0
-8
win32/VS2008/libspeexdsp/libspeexdsp.vcproj
win32/VS2008/libspeexdsp/libspeexdsp.vcproj
+0
-474
win32/libspeex/Makefile.am
win32/libspeex/Makefile.am
+1
-1
win32/libspeex/libspeexdsp.dsp
win32/libspeex/libspeexdsp.dsp
+0
-228
win32/libspeex/libspeexdsp_dynamic.dsp
win32/libspeex/libspeexdsp_dynamic.dsp
+0
-237
win32/libspeexdsp.def
win32/libspeexdsp.def
+0
-76
No files found.
Makefile.am
View file @
7bd8f386
...
...
@@ -8,7 +8,7 @@ m4datadir = $(datadir)/aclocal
m4data_DATA
=
speex.m4
pkgconfigdir
=
$(libdir)
/pkgconfig
pkgconfig_DATA
=
speex.pc
speexdsp.pc
pkgconfig_DATA
=
speex.pc
EXTRA_DIST
=
Speex.spec Speex.spec.in Speex.kdevelop speex.m4 speex.pc.in README.blackfin README.symbian README.TI-DSP
...
...
configure.ac
View file @
7bd8f386
...
...
@@ -204,7 +204,7 @@ AC_ARG_ENABLE(ti-c55x, [ --enable-ti-c55x Enable support for TI C55X DSP
AC_DEFINE([TI_C55X], , [Enable support for TI C55X DSP])
fi])
AC_ARG_ENABLE(vorbis-psy, [ --enable-psy Enable the Vorbis psy model],
AC_ARG_ENABLE(vorbis-psy, [ --enable-
vorbis-
psy Enable the Vorbis psy model],
[if test "$enableval" = yes; then
vorbis_psy=yes;
AC_DEFINE([VORBIS_PSYCHO], , [Enable support for the Vorbis psy model])
...
...
@@ -249,6 +249,8 @@ AC_SUBST(FFT_PKGCONFIG)
AM_CONDITIONAL(BUILD_VORBIS_PSY, [test "x$vorbis_psy" = "xyes"])
PKG_CHECK_MODULES([SPEEXDSP], [speexdsp], [AC_DEFINE([USE_SPEEXDSP], [], [Use SpeexDSP library])], [speexdsp_failed=yes])
AC_CHECK_SIZEOF(short)
AC_CHECK_SIZEOF(int)
AC_CHECK_SIZEOF(long)
...
...
@@ -285,22 +287,19 @@ AC_SUBST(SIZE32)
AC_DEFINE([_BUILD_SPEEX], [], [Defined only when Speex itself is build built])
AC_OUTPUT([Makefile libspeex/Makefile src/Makefile doc/Makefile Speex.spec
include/Makefile include/speex/Makefile speex.pc
speexdsp.pc
include/Makefile include/speex/Makefile speex.pc
win32/Makefile win32/libspeex/Makefile win32/speexenc/Makefile
win32/speexdec/Makefile symbian/Makefile
win32/VS2003/Makefile
win32/VS2003/tests/Makefile
win32/VS2003/libspeex/Makefile
win32/VS2003/libspeexdsp/Makefile
win32/VS2003/speexdec/Makefile
win32/VS2003/speexenc/Makefile
win32/VS2005/Makefile
win32/VS2005/libspeex/Makefile
win32/VS2005/speexdec/Makefile
win32/VS2005/speexenc/Makefile
win32/VS2005/libspeexdsp/Makefile
win32/VS2005/tests/Makefile
win32/VS2008/libspeexdsp/Makefile
win32/VS2008/Makefile
win32/VS2008/speexdec/Makefile
win32/VS2008/tests/Makefile
...
...
include/speex/Makefile.am
View file @
7bd8f386
...
...
@@ -3,7 +3,7 @@
nodist_pkginclude_HEADERS
=
speex_config_types.h
pkginclude_HEADERS
=
speex.h speex_bits.h
speex_buffer.h
speex_callbacks.h
\
speex_
echo.h speex_header.h speex_jitter.h speex_preprocess.h speex_resampl
er.h
\
pkginclude_HEADERS
=
speex.h speex_bits.h speex_callbacks.h
\
speex_
head
er.h
\
speex_stereo.h speex_types.h
include/speex/speex_buffer.h
deleted
100644 → 0
View file @
a6d05eb5
/* Copyright (C) 2007 Jean-Marc Valin
File: speex_buffer.h
This is a very simple ring buffer implementation. It is not thread-safe
so you need to do your own locking.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The name of the author may not be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef SPEEX_BUFFER_H
#define SPEEX_BUFFER_H
#ifdef _BUILD_SPEEX
# include "speex_types.h"
#else
# include <speex/speex_types.h>
#endif
#ifdef __cplusplus
extern
"C"
{
#endif
struct
SpeexBuffer_
;
typedef
struct
SpeexBuffer_
SpeexBuffer
;
SpeexBuffer
*
speex_buffer_init
(
int
size
);
void
speex_buffer_destroy
(
SpeexBuffer
*
st
);
int
speex_buffer_write
(
SpeexBuffer
*
st
,
void
*
data
,
int
len
);
int
speex_buffer_writezeros
(
SpeexBuffer
*
st
,
int
len
);
int
speex_buffer_read
(
SpeexBuffer
*
st
,
void
*
data
,
int
len
);
int
speex_buffer_get_available
(
SpeexBuffer
*
st
);
int
speex_buffer_resize
(
SpeexBuffer
*
st
,
int
len
);
#ifdef __cplusplus
}
#endif
#endif
include/speex/speex_echo.h
deleted
100644 → 0
View file @
a6d05eb5
/* Copyright (C) Jean-Marc Valin */
/**
@file speex_echo.h
@brief Echo cancellation
*/
/*
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The name of the author may not be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef SPEEX_ECHO_H
#define SPEEX_ECHO_H
/** @defgroup SpeexEchoState SpeexEchoState: Acoustic echo canceller
* This is the acoustic echo canceller module.
* @{
*/
#ifdef _BUILD_SPEEX
# include "speex_types.h"
#else
# include <speex/speex_types.h>
#endif
#ifdef __cplusplus
extern
"C"
{
#endif
/** Obtain frame size used by the AEC */
#define SPEEX_ECHO_GET_FRAME_SIZE 3
/** Set sampling rate */
#define SPEEX_ECHO_SET_SAMPLING_RATE 24
/** Get sampling rate */
#define SPEEX_ECHO_GET_SAMPLING_RATE 25
/* Can't set window sizes */
/** Get size of impulse response (int32) */
#define SPEEX_ECHO_GET_IMPULSE_RESPONSE_SIZE 27
/* Can't set window content */
/** Get impulse response (int32[]) */
#define SPEEX_ECHO_GET_IMPULSE_RESPONSE 29
/** Internal echo canceller state. Should never be accessed directly. */
struct
SpeexEchoState_
;
/** @class SpeexEchoState
* This holds the state of the echo canceller. You need one per channel.
*/
/** Internal echo canceller state. Should never be accessed directly. */
typedef
struct
SpeexEchoState_
SpeexEchoState
;
/** Creates a new echo canceller state
* @param frame_size Number of samples to process at one time (should correspond to 10-20 ms)
* @param filter_length Number of samples of echo to cancel (should generally correspond to 100-500 ms)
* @return Newly-created echo canceller state
*/
SpeexEchoState
*
speex_echo_state_init
(
int
frame_size
,
int
filter_length
);
/** Creates a new multi-channel echo canceller state
* @param frame_size Number of samples to process at one time (should correspond to 10-20 ms)
* @param filter_length Number of samples of echo to cancel (should generally correspond to 100-500 ms)
* @param nb_mic Number of microphone channels
* @param nb_speakers Number of speaker channels
* @return Newly-created echo canceller state
*/
SpeexEchoState
*
speex_echo_state_init_mc
(
int
frame_size
,
int
filter_length
,
int
nb_mic
,
int
nb_speakers
);
/** Destroys an echo canceller state
* @param st Echo canceller state
*/
void
speex_echo_state_destroy
(
SpeexEchoState
*
st
);
/** Performs echo cancellation a frame, based on the audio sent to the speaker (no delay is added
* to playback in this form)
*
* @param st Echo canceller state
* @param rec Signal from the microphone (near end + far end echo)
* @param play Signal played to the speaker (received from far end)
* @param out Returns near-end signal with echo removed
*/
void
speex_echo_cancellation
(
SpeexEchoState
*
st
,
const
spx_int16_t
*
rec
,
const
spx_int16_t
*
play
,
spx_int16_t
*
out
);
/** Performs echo cancellation a frame (deprecated) */
void
speex_echo_cancel
(
SpeexEchoState
*
st
,
const
spx_int16_t
*
rec
,
const
spx_int16_t
*
play
,
spx_int16_t
*
out
,
spx_int32_t
*
Yout
);
/** Perform echo cancellation using internal playback buffer, which is delayed by two frames
* to account for the delay introduced by most soundcards (but it could be off!)
* @param st Echo canceller state
* @param rec Signal from the microphone (near end + far end echo)
* @param out Returns near-end signal with echo removed
*/
void
speex_echo_capture
(
SpeexEchoState
*
st
,
const
spx_int16_t
*
rec
,
spx_int16_t
*
out
);
/** Let the echo canceller know that a frame was just queued to the soundcard
* @param st Echo canceller state
* @param play Signal played to the speaker (received from far end)
*/
void
speex_echo_playback
(
SpeexEchoState
*
st
,
const
spx_int16_t
*
play
);
/** Reset the echo canceller to its original state
* @param st Echo canceller state
*/
void
speex_echo_state_reset
(
SpeexEchoState
*
st
);
/** Used like the ioctl function to control the echo canceller parameters
*
* @param st Echo canceller state
* @param request ioctl-type request (one of the SPEEX_ECHO_* macros)
* @param ptr Data exchanged to-from function
* @return 0 if no error, -1 if request in unknown
*/
int
speex_echo_ctl
(
SpeexEchoState
*
st
,
int
request
,
void
*
ptr
);
struct
SpeexDecorrState_
;
typedef
struct
SpeexDecorrState_
SpeexDecorrState
;
/** Create a state for the channel decorrelation algorithm
This is useful for multi-channel echo cancellation only
* @param rate Sampling rate
* @param channels Number of channels (it's a bit pointless if you don't have at least 2)
* @param frame_size Size of the frame to process at ones (counting samples *per* channel)
*/
SpeexDecorrState
*
speex_decorrelate_new
(
int
rate
,
int
channels
,
int
frame_size
);
/** Remove correlation between the channels by modifying the phase and possibly
adding noise in a way that is not (or little) perceptible.
* @param st Decorrelator state
* @param in Input audio in interleaved format
* @param out Result of the decorrelation (out *may* alias in)
* @param strength How much alteration of the audio to apply from 0 to 100.
*/
void
speex_decorrelate
(
SpeexDecorrState
*
st
,
const
spx_int16_t
*
in
,
spx_int16_t
*
out
,
int
strength
);
/** Destroy a Decorrelation state
* @param st State to destroy
*/
void
speex_decorrelate_destroy
(
SpeexDecorrState
*
st
);
#ifdef __cplusplus
}
#endif
/** @}*/
#endif
include/speex/speex_jitter.h
deleted
100644 → 0
View file @
a6d05eb5
/* Copyright (C) 2002 Jean-Marc Valin */
/**
@file speex_jitter.h
@brief Adaptive jitter buffer for Speex
*/
/*
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
- Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
- Neither the name of the Xiph.org Foundation nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef SPEEX_JITTER_H
#define SPEEX_JITTER_H
/** @defgroup JitterBuffer JitterBuffer: Adaptive jitter buffer
* This is the jitter buffer that reorders UDP/RTP packets and adjusts the buffer size
* to maintain good quality and low latency.
* @{
*/
#ifdef _BUILD_SPEEX
# include "speex_types.h"
#else
# include <speex/speex_types.h>
#endif
#ifdef __cplusplus
extern
"C"
{
#endif
/** Generic adaptive jitter buffer state */
struct
JitterBuffer_
;
/** Generic adaptive jitter buffer state */
typedef
struct
JitterBuffer_
JitterBuffer
;
/** Definition of an incoming packet */
typedef
struct
_JitterBufferPacket
JitterBufferPacket
;
/** Definition of an incoming packet */
struct
_JitterBufferPacket
{
char
*
data
;
/**< Data bytes contained in the packet */
spx_uint32_t
len
;
/**< Length of the packet in bytes */
spx_uint32_t
timestamp
;
/**< Timestamp for the packet */
spx_uint32_t
span
;
/**< Time covered by the packet (same units as timestamp) */
spx_uint16_t
sequence
;
/**< RTP Sequence number if available (0 otherwise) */
spx_uint32_t
user_data
;
/**< Put whatever data you like here (it's ignored by the jitter buffer) */
};
/** Packet has been retrieved */
#define JITTER_BUFFER_OK 0
/** Packet is lost or is late */
#define JITTER_BUFFER_MISSING 1
/** A "fake" packet is meant to be inserted here to increase buffering */
#define JITTER_BUFFER_INSERTION 2
/** There was an error in the jitter buffer */
#define JITTER_BUFFER_INTERNAL_ERROR -1
/** Invalid argument */
#define JITTER_BUFFER_BAD_ARGUMENT -2
/** Set minimum amount of extra buffering required (margin) */
#define JITTER_BUFFER_SET_MARGIN 0
/** Get minimum amount of extra buffering required (margin) */
#define JITTER_BUFFER_GET_MARGIN 1
/* JITTER_BUFFER_SET_AVAILABLE_COUNT wouldn't make sense */
/** Get the amount of available packets currently buffered */
#define JITTER_BUFFER_GET_AVAILABLE_COUNT 3
/** Included because of an early misspelling (will remove in next release) */
#define JITTER_BUFFER_GET_AVALIABLE_COUNT 3
/** Assign a function to destroy unused packet. When setting that, the jitter
buffer no longer copies packet data. */
#define JITTER_BUFFER_SET_DESTROY_CALLBACK 4
/** */
#define JITTER_BUFFER_GET_DESTROY_CALLBACK 5
/** Tell the jitter buffer to only adjust the delay in multiples of the step parameter provided */
#define JITTER_BUFFER_SET_DELAY_STEP 6
/** */
#define JITTER_BUFFER_GET_DELAY_STEP 7
/** Tell the jitter buffer to only do concealment in multiples of the size parameter provided */
#define JITTER_BUFFER_SET_CONCEALMENT_SIZE 8
#define JITTER_BUFFER_GET_CONCEALMENT_SIZE 9
/** Absolute max amount of loss that can be tolerated regardless of the delay. Typical loss
should be half of that or less. */
#define JITTER_BUFFER_SET_MAX_LATE_RATE 10
#define JITTER_BUFFER_GET_MAX_LATE_RATE 11
/** Equivalent cost of one percent late packet in timestamp units */
#define JITTER_BUFFER_SET_LATE_COST 12
#define JITTER_BUFFER_GET_LATE_COST 13
/** Initialises jitter buffer
*
* @param step_size Starting value for the size of concleanment packets and delay
adjustment steps. Can be changed at any time using JITTER_BUFFER_SET_DELAY_STEP
and JITTER_BUFFER_GET_CONCEALMENT_SIZE.
* @return Newly created jitter buffer state
*/
JitterBuffer
*
jitter_buffer_init
(
int
step_size
);
/** Restores jitter buffer to its original state
*
* @param jitter Jitter buffer state
*/
void
jitter_buffer_reset
(
JitterBuffer
*
jitter
);
/** Destroys jitter buffer
*
* @param jitter Jitter buffer state
*/
void
jitter_buffer_destroy
(
JitterBuffer
*
jitter
);
/** Put one packet into the jitter buffer
*
* @param jitter Jitter buffer state
* @param packet Incoming packet
*/
void
jitter_buffer_put
(
JitterBuffer
*
jitter
,
const
JitterBufferPacket
*
packet
);
/** Get one packet from the jitter buffer
*
* @param jitter Jitter buffer state
* @param packet Returned packet
* @param desired_span Number of samples (or units) we wish to get from the buffer (no guarantee)
* @param current_timestamp Timestamp for the returned packet
*/
int
jitter_buffer_get
(
JitterBuffer
*
jitter
,
JitterBufferPacket
*
packet
,
spx_int32_t
desired_span
,
spx_int32_t
*
start_offset
);
/** Used right after jitter_buffer_get() to obtain another packet that would have the same timestamp.
* This is mainly useful for media where a single "frame" can be split into several packets.
*
* @param jitter Jitter buffer state
* @param packet Returned packet
*/
int
jitter_buffer_get_another
(
JitterBuffer
*
jitter
,
JitterBufferPacket
*
packet
);
/** Get pointer timestamp of jitter buffer
*
* @param jitter Jitter buffer state
*/
int
jitter_buffer_get_pointer_timestamp
(
JitterBuffer
*
jitter
);
/** Advance by one tick
*
* @param jitter Jitter buffer state
*/
void
jitter_buffer_tick
(
JitterBuffer
*
jitter
);
/** Telling the jitter buffer about the remaining data in the application buffer
* @param jitter Jitter buffer state
* @param rem Amount of data buffered by the application (timestamp units)
*/
void
jitter_buffer_remaining_span
(
JitterBuffer
*
jitter
,
spx_uint32_t
rem
);
/** Used like the ioctl function to control the jitter buffer parameters
*
* @param jitter Jitter buffer state
* @param request ioctl-type request (one of the JITTER_BUFFER_* macros)
* @param ptr Data exchanged to-from function
* @return 0 if no error, -1 if request in unknown
*/
int
jitter_buffer_ctl
(
JitterBuffer
*
jitter
,
int
request
,
void
*
ptr
);
int
jitter_buffer_update_delay
(
JitterBuffer
*
jitter
,
JitterBufferPacket
*
packet
,
spx_int32_t
*
start_offset
);
/* @} */
#ifdef __cplusplus
}
#endif
#endif
include/speex/speex_preprocess.h
deleted
100644 → 0
View file @
a6d05eb5
/* Copyright (C) 2003 Epic Games
Written by Jean-Marc Valin */
/**
* @file speex_preprocess.h
* @brief Speex preprocessor. The preprocess can do noise suppression,
* residual echo suppression (after using the echo canceller), automatic
* gain control (AGC) and voice activity detection (VAD).
*/
/*
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The name of the author may not be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef SPEEX_PREPROCESS_H
#define SPEEX_PREPROCESS_H
/** @defgroup SpeexPreprocessState SpeexPreprocessState: The Speex preprocessor
* This is the Speex preprocessor. The preprocess can do noise suppression,
* residual echo suppression (after using the echo canceller), automatic
* gain control (AGC) and voice activity detection (VAD).
* @{
*/
#ifdef _BUILD_SPEEX
# include "speex_types.h"
#else
# include <speex/speex_types.h>
#endif
#ifdef __cplusplus
extern
"C"
{
#endif
/** State of the preprocessor (one per channel). Should never be accessed directly. */
struct
SpeexPreprocessState_
;
/** State of the preprocessor (one per channel). Should never be accessed directly. */
typedef
struct
SpeexPreprocessState_
SpeexPreprocessState
;
/** Creates a new preprocessing state. You MUST create one state per channel processed.
* @param frame_size Number of samples to process at one time (should correspond to 10-20 ms). Must be
* the same value as that used for the echo canceller for residual echo cancellation to work.
* @param sampling_rate Sampling rate used for the input.
* @return Newly created preprocessor state
*/
SpeexPreprocessState
*
speex_preprocess_state_init
(
int
frame_size
,
int
sampling_rate
);
/** Destroys a preprocessor state
* @param st Preprocessor state to destroy
*/
void
speex_preprocess_state_destroy
(
SpeexPreprocessState
*
st
);
/** Preprocess a frame
* @param st Preprocessor state
* @param x Audio sample vector (in and out). Must be same size as specified in speex_preprocess_state_init().
* @return Bool value for voice activity (1 for speech, 0 for noise/silence), ONLY if VAD turned on.
*/
int
speex_preprocess_run
(
SpeexPreprocessState
*
st
,
spx_int16_t
*
x
);
/** Preprocess a frame (deprecated, use speex_preprocess_run() instead)*/
int
speex_preprocess
(
SpeexPreprocessState
*
st
,
spx_int16_t
*
x
,
spx_int32_t
*
echo
);
/** Update preprocessor state, but do not compute the output
* @param st Preprocessor state
* @param x Audio sample vector (in only). Must be same size as specified in speex_preprocess_state_init().
*/
void
speex_preprocess_estimate_update
(
SpeexPreprocessState
*
st
,
spx_int16_t
*
x
);
/** Used like the ioctl function to control the preprocessor parameters
* @param st Preprocessor state
* @param request ioctl-type request (one of the SPEEX_PREPROCESS_* macros)
* @param ptr Data exchanged to-from function
* @return 0 if no error, -1 if request in unknown
*/
int
speex_preprocess_ctl
(
SpeexPreprocessState
*
st
,
int
request
,
void
*
ptr
);
/** Set preprocessor denoiser state */
#define SPEEX_PREPROCESS_SET_DENOISE 0
/** Get preprocessor denoiser state */
#define SPEEX_PREPROCESS_GET_DENOISE 1
/** Set preprocessor Automatic Gain Control state */
#define SPEEX_PREPROCESS_SET_AGC 2
/** Get preprocessor Automatic Gain Control state */
#define SPEEX_PREPROCESS_GET_AGC 3
/** Set preprocessor Voice Activity Detection state */
#define SPEEX_PREPROCESS_SET_VAD 4
/** Get preprocessor Voice Activity Detection state */