The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
#include "ppport.h"

#ifndef aTHX_
#define aTHX_
#endif

#include <SDL.h>

#ifdef HAVE_SDL_MIXER
#include <SDL_mixer.h>
#endif

#ifdef HAVE_SMPEG
#include <smpeg/smpeg.h>
#ifdef HAVE_SDL_MIXER
static int sdl_perl_use_smpeg_audio = 0;
#endif
#endif



MODULE = SDL::Mixer::Samples 	PACKAGE = SDL::Mixer::Samples    PREFIX = mixsam_

=for documentation

SDL_mixer bindings

See: http:/*www.libsdl.org/projects/SDL_mixer/docs/SDL_mixer.html */

=cut

#ifdef HAVE_SDL_MIXER


#if (SDL_MIXER_MAJOR_VERSION >= 1 && SDL_MIXER_MINOR_VERSION >= 2 && SDL_MIXER_PATCHLEVEL >= 10)

int 
mixsam_get_num_chunk_decoders()
	CODE:
		RETVAL = Mix_GetNumChunkDecoders();
	OUTPUT:
		RETVAL

char * 
mixsam_get_chunk_decoder( index )
	int index
	CODE:
		RETVAL = (char *)Mix_GetChunkDecoder(index);
	OUTPUT:
		RETVAL

#else

int
mixsam_get_num_chunk_decoders( )
	CODE:
		warn("SDL_mixer >= 1.2.10 needed for SDL::Mixer::Samples::get_num_chunk_decoders()");
		XSRETURN_UNDEF;
	OUTPUT:
		RETVAL

char *
mixsam_get_chunk_decoder( index )
	int index
	CODE:
		warn("SDL_mixer >= 1.2.10 needed for SDL::Mixer::Samples::get_chunk_decoder( index )");
		XSRETURN_UNDEF;
	OUTPUT:
		RETVAL

#endif

Mix_Chunk *
mixsam_load_WAV ( filename )
	char *filename
	PREINIT:
		char * CLASS = "SDL::Mixer::MixChunk";
	CODE:
		Mix_Chunk * mixchunk;
		mixchunk = Mix_LoadWAV(filename);
		RETVAL = mixchunk;
	OUTPUT:
		RETVAL

Mix_Chunk *
mixsam_load_WAV_RW ( src, freesrc)
	SDL_RWops * src
	int freesrc
	PREINIT:
		char * CLASS = "SDL::Mixer::MixChunk";
	CODE:
		Mix_Chunk * mixchunk;
		mixchunk = Mix_LoadWAV_RW(src, freesrc);
		RETVAL = mixchunk;
	OUTPUT:
		RETVAL

Mix_Chunk *
mixsam_quick_load_WAV ( buf )
	Uint8 *buf
	PREINIT:
		char * CLASS = "SDL::Mixer::MixChunk";
	CODE:
		RETVAL = Mix_QuickLoad_WAV(buf);
	OUTPUT:
		RETVAL

Mix_Chunk *
mixsam_quick_load_RAW ( buf , len)
	Uint8 *buf
	int len
	PREINIT:
		char * CLASS = "SDL::Mixer::MixChunk";
	CODE:
		RETVAL = Mix_QuickLoad_RAW( buf, len );
	OUTPUT:
		RETVAL

int
mixsam_volume_chunk ( chunk, volume )
	Mix_Chunk *chunk
	int volume
	CODE:
		RETVAL = Mix_VolumeChunk(chunk,volume);
	OUTPUT:
		RETVAL

void
mixsam_free_chunk( chunk )
	Mix_Chunk *chunk
	CODE:
		Mix_FreeChunk(chunk);

#endif