+ /**
+ * Free an OpenAL buffer-id for this sample
+ * @param sample Pointer to an audio sample for which to free the buffer
+ */
+ void release_buffer( SGSoundSample *sample );
+
+ /**
+ * Test if the position of the sound manager has changed.
+ * The value will be set to false upon the next call to update_late()
+ * @return true if the position has changed
+ */
+ inline bool has_changed() { return _changed; }
+
+ /**
+ * Some implementations seem to need the velocity miltyplied by a
+ * factor of 100 to make them distinct. I've not found if this is
+ * a problem in the implementation or in out code. Until then
+ * this function is used to detect the problematic implementations.
+ */
+ inline bool bad_doppler_effect() { return _bad_doppler; }
+
+ /**
+ * Load a sample file and return it's configuration and data.
+ * @param samplepath Path to the file to load
+ * @param data Pointer to a variable that points to the allocated data
+ * @param format Pointer to a vairable that gets the OpenAL format
+ * @param size Pointer to a vairable that gets the sample size in bytes
+ * @param freq Pointer to a vairable that gets the sample frequency in Herz
+ * @return true if succesful, false on error
+ */
+ bool load(string &samplepath, void **data, int *format,
+ size_t *size, int *freq );
+
+ /**
+ * Get a list of available playback devices.
+ */
+ std::vector<const char*> get_available_devices();
+
+ /**
+ * Get the current OpenAL vendor or rendering backend.
+ */
+ const std::string& get_vendor() { return _vendor; }
+ const std::string& get_renderer() { return _renderer; }