Forráskód Böngészése

header for the linux OSS driver

Cary Sandvig 25 éve
szülő
commit
27e72f817a
1 módosított fájl, 88 hozzáadás és 0 törlés
  1. 88 0
      panda/src/audio/audio_linux_traits.h

+ 88 - 0
panda/src/audio/audio_linux_traits.h

@@ -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__ */