/*
   Copyright (C) 2003 Commonwealth Scientific and Industrial Research
   Organisation (CSIRO) Australia

   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 CSIRO Australia 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 ORGANISATION 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.
*/

PRJ_EXPORTS

..\include\speex\speex_bits.h          \epoc32\include\speex\speex_bits.h
..\include\speex\speex_callbacks.h     \epoc32\include\speex\speex_callbacks.h
..\include\speex\speex_config_types.h  \epoc32\include\speex\speex_config_types.h
..\include\speex\speex_echo.h          \epoc32\include\speex\speex_echo.h
..\include\speex\speex.h               \epoc32\include\speex\speex.h
..\include\speex\speex_header.h        \epoc32\include\speex\speex_header.h
..\include\speex\speex_jitter.h        \epoc32\include\speex\speex_jitter.h
..\include\speex\speex_preprocess.h    \epoc32\include\speex\speex_preprocess.h
..\include\speex\speex_stereo.h        \epoc32\include\speex\speex_stereo.h
..\include\speex\speex_types.h         \epoc32\include\speex\speex_types.h


PRJ_MMPFILES

speex.mmp
