]> git.mxchange.org Git - simgear.git/blobdiff - simgear/sound/sample_openal.hxx
Reset: allow re-init of Nasal Ghosts.
[simgear.git] / simgear / sound / sample_openal.hxx
index a231f6633a6dc3afe91c9a08f6a393026e031d4c..ba3fef3d3ac750504e77f3abb63f91261b6d0f9a 100644 (file)
 #ifndef _SG_SAMPLE_HXX
 #define _SG_SAMPLE_HXX 1
 
-#ifndef __cplusplus
-# error This library requires C++
-#endif
-
 #include <string>
-#include <cstdlib>
 
 #include <simgear/compiler.h>
-#include <simgear/debug/logstream.hxx>
 #include <simgear/structure/SGReferenced.hxx>
 #include <simgear/structure/SGSharedPtr.hxx>
 #include <simgear/math/SGMath.hxx>
-
+     
 class SGPath;
 
+#ifndef AL_FORMAT_MONO8
+     #define AL_FORMAT_MONO8    0x1100
+#endif
+
 /**
  * manages everything we need to know for an individual audio sample
  */
@@ -69,7 +68,7 @@ public:
      * Constructor.
      * @param data Pointer to a memory buffer containing this audio sample data
        The application may free the data by calling free_data(), otherwise it
-       will be resident untill the class is destroyed. This pointer will be
+       will be resident until the class is destroyed. This pointer will be
        set to NULL after calling this function.
      * @param len Byte length of array
      * @param freq Frequency of the provided data (bytes per second)
@@ -189,15 +188,13 @@ public:
     /**
      * Free the data associated with this audio sample
      */
-    void free_data() {
-        if ( _data != NULL ) free( _data ); _data = NULL;
-    }
+    void free_data();
 
     /**
      * Set the source id of this source
      * @param sid OpenAL source-id
      */
-    virtual inline void set_source(unsigned int sid) {
+    virtual void set_source(unsigned int sid) {
         _source = sid; _valid_source = true; _changed = true;
     }
 
@@ -205,18 +202,18 @@ public:
      * Get the OpenAL source id of this source
      * @return OpenAL source-id
      */
-    virtual inline unsigned int get_source() { return _source; }
+    virtual unsigned int get_source() { return _source; }
 
     /**
      * Test if the source-id of this audio sample may be passed to OpenAL.
      * @return true if the source-id is valid
      */
-    virtual inline bool is_valid_source() const { return _valid_source; }
+    virtual bool is_valid_source() const { return _valid_source; }
 
     /**
      * Set the source-id of this audio sample to invalid.
      */
-    virtual inline void no_valid_source() { _valid_source = false; }
+    virtual void no_valid_source() { _valid_source = false; }
 
     /**
      * Set the OpenAL buffer-id of this source
@@ -465,6 +462,16 @@ public:
 
     void update_pos_and_orientation();
 
+protected:
+    int _format;
+    size_t _size;
+    int _freq;
+    bool _changed;
+    
+    // Sources are points emitting sound.
+    bool _valid_source;
+    unsigned int _source;
+
 private:
 
     // Position of the source sound.
@@ -484,18 +491,11 @@ private:
     unsigned char* _data;
 
     // configuration values
-    int _format;
-    size_t _size;
-    int _freq;
-
+    
     // Buffers hold sound data.
     bool _valid_buffer;
     unsigned int _buffer;
 
-    // Sources are points emitting sound.
-    bool _valid_source;
-    unsigned int _source;
-
     // The orientation of this sound (direction and cut-off angles)
     float _inner_angle;
     float _outer_angle;
@@ -509,12 +509,11 @@ private:
     bool _loop;
 
     bool _playing;
-    bool _changed;
     bool _static_changed;
     bool _out_of_range;
     bool _is_file;
 
-    string random_string();
+    std::string random_string();
 };