header for the linux OSS driver

This commit is contained in:
Cary Sandvig 2000-10-04 23:12:13 +00:00
parent 1b3ed5dbda
commit 27e72f817a
1 changed files with 88 additions and 0 deletions

View File

@ -0,0 +1,88 @@
// Filename: audio_linux_traits.h
// Created by: cary (02Oct00)
//
////////////////////////////////////////////////////////////////////
#ifndef __AUDIO_LINUX_TRAITS_H__
#define __AUDIO_LINUX_TRAITS_H__
#include "audio_trait.h"
typedef unsigned char byte;
class EXPCL_PANDA Buffer {
private:
byte* _data;
unsigned long _size;
unsigned long _pos;
bool _done;
public:
INLINE Buffer(byte* data, unsigned long size) : _data(data), _size(size),
_pos(0), _done(false) {}
INLINE byte* get_buffer(byte* buf) {
memcpy(buf, &_data[_pos], audio_buffer_size);
_pos += audio_buffer_size;
if (_pos > _size) {
_pos -= _size;
memcpy(&buf[audio_buffer_size-_pos-1], zero_buffer, _pos);
_done = true;
}
return buf;
}
INLINE bool is_done(void) const {
return _done;
}
INLINE unsigned long get_size(void) const {
return _size
}
INLINE void reset(void) {
_done = false;
_pos = 0;
}
};
class EXPCL_PANDA LinuxSample : public AudioTraits::SampleClass {
private:
Buffer* _data;
public:
INLINE LinuxSample(Buffer*);
virtual ~LinuxSample(void);
virtual float length(void);
virtual AudioTraits::SampleClass::SampleStatus status(void);
static void destroy(AudioTraits::SampleClass*);
public:
// used by the loader
static LinuxSample* load_raw(byte*, unsigned long)
// used by the players
INLINE Buffer* get_data(void);
};
class EXPCL_PANDA LinuxMusic : public AudioTraits::MusicClass {
public:
INLINE LinuxMusic(void);
virtual ~LinuxMusic(void);
virtual AudioTraits::MusicClass::MusicStatus status(void);
};
class EXPCL_PANDA LinuxPlayer : public AudioTraits::PlayerClass {
public:
INLINE LinuxPlayer(void);
virtual ~LinuxPlayer(void);
virtual void play_sample(AudioTraits::SampleClass*);
virtual void play_music(AudioTraits::MusicClass*);
virtual void set_volume(AudioTraits::SampleClass*, int);
virtual void set_volume(AudioTraits::MusicClass*, int);
public:
// used by the readers
static LinuxPlayer* get_instance(void);
private:
static LinuxPlayer* _global_instance;
};
#include "audio_linux_traits.I"
#endif /* __AUDIO_LINUX_TRAITS_H__ */