view alt_audio_convert.h @ 371:1b463ef9bcc2

More work from Frank.
author Ryan C. Gordon <icculus@icculus.org>
date Tue, 25 Jun 2002 17:15:03 +0000
parents eda146d666d1
children 24a610dfbbfd
line wrap: on
line source

/*
 *  Extended Audio Converter for SDL (Simple DirectMedia Layer)
 *  Copyright (C) 2002  Frank Ranostaj
 *                      Institute of Applied Physik
 *                      Johann Wolfgang Goethe-Universität
 *                      Frankfurt am Main, Germany
 *
 *   This library is free software; you can redistribute it and/or
 *   modify it under the terms of the GNU Library General Public
 *   License as published by the Free Software Foundation; either
 *   version 2 of the License, or (at your option) any later version.
 *
 *  This library is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 *  Library General Public License for more details.
 *
 *  You should have received a copy of the GNU Library General Public
 *  License along with this library; if not, write to the Free
 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 *  Frank Ranostaj
 *  ranostaj@stud.uni-frankfurt.de
 *
 * (This code blatantly abducted for SDL_sound. Thanks, Frank! --ryan.)
 */

#ifndef _INCLUDE_AUDIO_CONVERT_H_
#define _INCLUDE_AUDIO_CONVERT_H_

#include "SDL_audio.h"
#define Sound_AI_Loop 0x2
#define _fsize 32


typedef struct{
   Sint16 c[16][4*_fsize];
   Uint8 incr[16];
   int denominator;
   int numerator;
} VarFilter;

typedef struct{
   Uint8* buffer;
   int mode;
   VarFilter *filter;
} AdapterC;

/*
typedef struct{
    VarFilter filter;
    double mult;           // buffer must be len*buf_mult big
    int    add;
    int (*adapter[32]) ( AdapterC Data, int length );
} SDL_AudioC;

*/

/* the len_* variables and the needed variable are not used internally, 
they are provided for compatibility */

typedef struct{
   int needed;
   VarFilter filter;
   Uint8* buf;
   int len;                /* Length of original audio buffer  */ 
   int len_cvt;            /* Length of converted audio buffer */
   int len_mult;           /* buffer must be len*len_mult big */
   double len_ratio;       /* Given len, final size is len*len_ratio */
        
   double add;
   double mult;        
   int (*adapter[32]) ( AdapterC Data, int length );
} Sound_AudioCVT;

#define SDL_AI_Loop 0x01

extern DECLSPEC int Sound_ConvertAudio( Sound_AudioCVT *Data );

extern DECLSPEC int Sound_BuildAudioCVT( Sound_AudioCVT *Data,
   Uint16 src_format, Uint8 src_channels, int src_rate,
   Uint16 dst_format, Uint8 dst_channels, int dst_rate );

#endif /* _INCLUDE_AUDIO_CONVERT_H_ */