/*
	This file is part of Warzone 2100.
	Copyright (C) 1999-2004  Eidos Interactive
	Copyright (C) 2005-2007  Warzone Resurrection Project

	Warzone 2100 is free software; you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation; either version 2 of the License, or
	(at your option) any later version.

	Warzone 2100 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 General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with Warzone 2100; if not, write to the Free Software
	Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
/***************************************************************************/
/*
 * Library-specific sound library functions;
 * these need to be re-written for each library.
 */
/***************************************************************************/
						
#ifndef _TRACKLIB_H_
#define _TRACKLIB_H_

/***************************************************************************/



#include "track.h"

/***************************************************************************/

#define	KHZ22					(22050L)
#define	KHZ11					(11025L)
#define	MAX_AUDIO_SAMPLES		20

#undef	USE_COMPRESSED_SPEECH

/***************************************************************************/

BOOL	sound_InitLibrary( void );
void	sound_ShutdownLibrary( void );

BOOL	sound_ReadTrackFromFile(TRACK * psTrack, char szFileName[]);
BOOL	sound_ReadTrackFromBuffer( TRACK * psTrack, void *pBuffer,
									UDWORD udwSize );
void	sound_FreeTrack( TRACK * psTrack );

BOOL	sound_Play2DSample( TRACK * psTrack, AUDIO_SAMPLE * psSample,
							BOOL bQueued );
BOOL	sound_Play3DSample( TRACK * psTrack, AUDIO_SAMPLE * psSample );
void	sound_StopSample( UDWORD iSample );
void	sound_PauseSample( AUDIO_SAMPLE * psSample );
void	sound_ResumeSample( AUDIO_SAMPLE * psSample );

BOOL	sound_PlayStream( AUDIO_SAMPLE *psSample, const char szFileName[],
							SDWORD iVol );

void	sound_SetSamplePan( AUDIO_SAMPLE * psSample, SDWORD iPan );
void	sound_SetSampleFreq( AUDIO_SAMPLE * psSample, SDWORD iFreq );
void	sound_SetSampleVol( AUDIO_SAMPLE * psSample, SDWORD iVol,
							BOOL bScale3D );
void	sound_SetSampleVolAll( int iVol );

int		sound_GetMaxVolume( void );

int		sound_GetNumSamples( void );
BOOL	sound_SampleIsFinished( AUDIO_SAMPLE * psSample );
BOOL	sound_QueueSamplePlaying( void );

void	sound_SetPlayerPos( SDWORD iX, SDWORD iY, SDWORD iZ );
void	sound_SetPlayerOrientation( SDWORD iX, SDWORD iY, SDWORD iZ );
void	sound_SetObjectPosition( SDWORD iSample,
									SDWORD iX, SDWORD iY, SDWORD iZ );

void *	sound_GetObject( SDWORD iSample );
void	sound_SetObject( SDWORD iSample, void *pObj );

void	sound_SetCallback( SDWORD iSample, AUDIO_CALLBACK pCallBack );

void	sound_PauseAll( void );
void	sound_ResumeAll( void );
void	sound_StopAll( void );
void	sound_Update( void );

UDWORD	sound_GetGameTime( void );

/***************************************************************************/

#endif	// _TRACKLIB_H_

/***************************************************************************/
