header for the linux OSS driver
This commit is contained in:
parent
1b3ed5dbda
commit
27e72f817a
|
|
@ -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__ */
|
||||
Loading…
Reference in New Issue