annotate src/ljvorbis.h @ 0:c84446dfb3f5

initial add
author paulo@localhost
date Fri, 13 Mar 2009 00:39:12 -0700
parents
children
rev   line source
paulo@0 1 /*
paulo@0 2
paulo@0 3 ljvorbis.h
paulo@0 4 Simple wrapper around vorbisfile for use with the Allegro library
paulo@0 5 copyright 2006 Damian Yerrick
paulo@0 6 based on vorbisfile example
paulo@0 7 copyright 1994-2004 Xiph.Org Foundation
paulo@0 8 licensed under a BSD style license set forth in COPYING-OGG.txt
paulo@0 9
paulo@0 10 */
paulo@0 11
paulo@0 12 #ifndef LJVORBIS_H
paulo@0 13 #define LJVORBIS_H
paulo@0 14
paulo@0 15 #include <vorbis/codec.h>
paulo@0 16 #include <vorbis/vorbisfile.h>
paulo@0 17 #include <allegro.h>
paulo@0 18
paulo@0 19 typedef struct LJVorbis {
paulo@0 20 FILE *fp;
paulo@0 21 AUDIOSTREAM *voice;
paulo@0 22 OggVorbis_File vf;
paulo@0 23 int bitstream;
paulo@0 24 unsigned int bufferSize;
paulo@0 25 unsigned int rate;
paulo@0 26 unsigned long int length;
paulo@0 27 unsigned long int loopPoint;
paulo@0 28 unsigned char channels;
paulo@0 29 unsigned char paused;
paulo@0 30 } LJVorbis;
paulo@0 31
paulo@0 32 /**
paulo@0 33 * Creates a new LJVorbis instance.
paulo@0 34 * @param filename the name of the .ogg file to open
paulo@0 35 * @return an LJVorbis pointer
paulo@0 36 */
paulo@0 37 LJVorbis *LJVorbis_open(const char *filename);
paulo@0 38
paulo@0 39 /**
paulo@0 40 * Sets the loop point of an LJVorbis. If it is past the end
paulo@0 41 * of the file, sets the loop point to the start of the file.
paulo@0 42 * @param loopPoint the sample number to seek back to
paulo@0 43 */
paulo@0 44 void LJVorbis_setLoop(LJVorbis *ogg, unsigned long int loopPoint);
paulo@0 45
paulo@0 46 /**
paulo@0 47 * Starts or restarts an LJVorbis playing in a new Allegro voice.
paulo@0 48 * @param bufferSize the size of the Allegro audio buffer in samples
paulo@0 49 * @param vol the Allegro volume (0-255?)
paulo@0 50 * @param pan the Allegro pan value (0=left, 256=right)
paulo@0 51 */
paulo@0 52 int LJVorbis_start(LJVorbis *ogg, int bufferSize, int vol, int pan);
paulo@0 53
paulo@0 54 /**
paulo@0 55 * Stops an LJVorbis and frees its Allegro voice.
paulo@0 56 */
paulo@0 57 void LJVorbis_stop(LJVorbis *ogg);
paulo@0 58
paulo@0 59 /**
paulo@0 60 * Destroys an LJVorbis instance entirely.
paulo@0 61 */
paulo@0 62 void LJVorbis_close(LJVorbis *ogg);
paulo@0 63
paulo@0 64 /**
paulo@0 65 * Pauses or resumes an LJVorbis.
paulo@0 66 * @param value 0 to pause, or nonzero to resume
paulo@0 67 */
paulo@0 68 void LJVorbis_pause(LJVorbis *ogg, int value);
paulo@0 69
paulo@0 70 /**
paulo@0 71 * Processes an LJVorbis
paulo@0 72 * Must be called periodically, at least once every bufferSize samples.
paulo@0 73 */
paulo@0 74 int LJVorbis_poll(LJVorbis *ogg);
paulo@0 75
paulo@0 76 #endif