#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
#include "ppport.h"
#include "helper.h"
#ifndef aTHX_
#define aTHX_
#endif
#ifdef HAVE_SMPEG
#include <smpeg/smpeg.h>
void smpeg_display_callback (SDL_Surface* s , int a, int b, unsigned int c, unsigned int d)
{
}
#endif
MODULE = SDL::SMPEG PACKAGE = SDL::SMPEG
PROTOTYPES : DISABLE
#ifdef HAVE_SMPEG
char *
SMPEGError ( mpeg )
SMPEG* mpeg
CODE:
RETVAL = SMPEG_error(mpeg);
OUTPUT:
RETVAL
SMPEG*
NewSMPEG ( filename, info, use_audio )
char* filename
SMPEG_Info* info
int use_audio
PREINIT:
char* CLASS = "SDL::SMPEG";
CODE:
#ifdef HAVE_SDL_MIXER
RETVAL = SMPEG_new(filename,info,0);
#else
RETVAL = SMPEG_new(filename,info,use_audio);
#endif
OUTPUT:
RETVAL
void
FreeSMPEG ( mpeg )
SV* mpeg
CODE:
objDESTROY(mpeg, (void (*)(void *))SMPEG_delete);
void
SMPEGEnableAudio ( mpeg , flag )
SMPEG* mpeg
int flag
CODE:
SMPEG_enableaudio(mpeg,flag);
/*#ifdef HAVE_SDL_MIXER */
/* sdl_perl_use_smpeg_audio = flag; */
/*#endif */
void
SMPEGEnableVideo ( mpeg , flag )
SMPEG* mpeg
int flag
CODE:
SMPEG_enablevideo(mpeg,flag);
void
SMPEGSetVolume ( mpeg , volume )
SMPEG* mpeg
int volume
CODE:
SMPEG_setvolume(mpeg,volume);
void
SMPEGSetDisplay ( mpeg, dest, callback )
SMPEG* mpeg
SDL_Surface* dest
SV* callback
CODE:
SMPEG_setdisplay(mpeg,dest,NULL,(void*)&smpeg_display_callback);
void
SMPEGScaleXY ( mpeg, w, h)
SMPEG* mpeg
int w
int h
CODE:
SMPEG_scaleXY(mpeg,w,h);
void
SMPEGScale ( mpeg, scale )
SMPEG* mpeg
int scale
CODE:
SMPEG_scale(mpeg,scale);
void
SMPEGPlay ( mpeg )
SMPEG* mpeg
CODE:
SDL_AudioSpec audiofmt;
Uint16 format;
int freq, channels;
/*#ifdef HAVE_SDL_MIXER */
/* if (sdl_perl_use_smpeg_audio ) { */
/* SMPEG_enableaudio(mpeg, 0); */
/* Mix_QuerySpec(&freq, &format, &channels); */
/* audiofmt.format = format; */
/* audiofmt.freq = freq; */
/* audiofmt.channels = channels; */
/* SMPEG_actualSpec(mpeg, &audiofmt); */
/* Mix_HookMusic(SMPEG_playAudioSDL, mpeg); */
/* SMPEG_enableaudio(mpeg, 1); */
/* } */
/*#endif */
SMPEG_play(mpeg);
SMPEGstatus
SMPEGStatus ( mpeg )
SMPEG* mpeg
CODE:
RETVAL = SMPEG_status(mpeg);
OUTPUT:
RETVAL
void
SMPEGPause ( mpeg )
SMPEG* mpeg
CODE:
SMPEG_pause(mpeg);
void
SMPEGLoop ( mpeg, repeat )
SMPEG* mpeg
int repeat
CODE:
SMPEG_loop(mpeg,repeat);
void
SMPEGStop ( mpeg )
SMPEG* mpeg
CODE:
SMPEG_stop(mpeg);
/*#ifdef HAVE_SDL_MIXER */
/* Mix_HookMusic(NULL, NULL); */
/*#endif */
void
SMPEGRewind ( mpeg )
SMPEG* mpeg
CODE:
SMPEG_rewind(mpeg);
void
SMPEGSeek ( mpeg, bytes )
SMPEG* mpeg
int bytes
CODE:
SMPEG_seek(mpeg,bytes);
void
SMPEGSkip ( mpeg, seconds )
SMPEG* mpeg
float seconds
CODE:
SMPEG_skip(mpeg,seconds);
void
SMPEGSetDisplayRegion ( mpeg, rect )
SMPEG* mpeg
SDL_Rect* rect
CODE:
SMPEG_setdisplayregion(mpeg,rect->x,rect->y,rect->w,rect->h);
void
SMPEGRenderFrame ( mpeg, frame )
SMPEG* mpeg
int frame
CODE:
SMPEG_renderFrame(mpeg,frame);
SMPEG_Info *
SMPEGGetInfo ( mpeg )
SMPEG* mpeg
PREINIT:
char* CLASS = "SDL::SMPEG::Info";
CODE:
RETVAL = (SMPEG_Info *) safemalloc (sizeof(SMPEG_Info));
SMPEG_getinfo(mpeg,RETVAL);
OUTPUT:
RETVAL
#endif