summaryrefslogtreecommitdiffstats
path: root/servers/audio_server.h
diff options
context:
space:
mode:
Diffstat (limited to 'servers/audio_server.h')
-rw-r--r--servers/audio_server.h45
1 files changed, 45 insertions, 0 deletions
diff --git a/servers/audio_server.h b/servers/audio_server.h
index 7dd81beabe..4825e24336 100644
--- a/servers/audio_server.h
+++ b/servers/audio_server.h
@@ -42,9 +42,11 @@
#include <atomic>
class AudioDriverDummy;
+class AudioSample;
class AudioStream;
class AudioStreamWAV;
class AudioStreamPlayback;
+class AudioSamplePlayback;
class AudioDriver {
static AudioDriver *singleton;
@@ -129,6 +131,28 @@ public:
void reset_profiling_time() { prof_time.set(0); }
#endif
+ // Samples handling.
+ virtual bool is_stream_registered_as_sample(const Ref<AudioStream> &p_stream) const {
+ return false;
+ }
+ virtual void register_sample(const Ref<AudioSample> &p_sample) {}
+ virtual void unregister_sample(const Ref<AudioSample> &p_sample) {}
+ virtual void start_sample_playback(const Ref<AudioSamplePlayback> &p_playback);
+ virtual void stop_sample_playback(const Ref<AudioSamplePlayback> &p_playback) {}
+ virtual void set_sample_playback_pause(const Ref<AudioSamplePlayback> &p_playback, bool p_paused) {}
+ virtual bool is_sample_playback_active(const Ref<AudioSamplePlayback> &p_playback) { return false; }
+ virtual void update_sample_playback_pitch_scale(const Ref<AudioSamplePlayback> &p_playback, float p_pitch_scale = 0.0f) {}
+ virtual void set_sample_playback_bus_volumes_linear(const Ref<AudioSamplePlayback> &p_playback, const HashMap<StringName, Vector<AudioFrame>> &p_bus_volumes) {}
+
+ virtual void set_sample_bus_count(int p_count) {}
+ virtual void remove_sample_bus(int p_bus) {}
+ virtual void add_sample_bus(int p_at_pos = -1) {}
+ virtual void move_sample_bus(int p_bus, int p_to_pos) {}
+ virtual void set_sample_bus_send(int p_bus, const StringName &p_send) {}
+ virtual void set_sample_bus_volume_db(int p_bus, float p_volume_db) {}
+ virtual void set_sample_bus_solo(int p_bus, bool p_enable) {}
+ virtual void set_sample_bus_mute(int p_bus, bool p_enable) {}
+
AudioDriver() {}
virtual ~AudioDriver() {}
};
@@ -166,6 +190,13 @@ public:
SPEAKER_SURROUND_71,
};
+ enum PlaybackType {
+ PLAYBACK_TYPE_DEFAULT,
+ PLAYBACK_TYPE_STREAM,
+ PLAYBACK_TYPE_SAMPLE,
+ PLAYBACK_TYPE_MAX
+ };
+
enum {
AUDIO_DATA_INVALID_ID = -1,
MAX_CHANNELS_PER_BUS = 4,
@@ -440,11 +471,25 @@ public:
virtual void get_argument_options(const StringName &p_function, int p_idx, List<String> *r_options) const override;
#endif
+ PlaybackType get_default_playback_type() const;
+
+ bool is_stream_registered_as_sample(const Ref<AudioStream> &p_stream);
+ void register_stream_as_sample(const Ref<AudioStream> &p_stream);
+ void unregister_stream_as_sample(const Ref<AudioStream> &p_stream);
+ void register_sample(const Ref<AudioSample> &p_sample);
+ void unregister_sample(const Ref<AudioSample> &p_sample);
+ void start_sample_playback(const Ref<AudioSamplePlayback> &p_playback);
+ void stop_sample_playback(const Ref<AudioSamplePlayback> &p_playback);
+ void set_sample_playback_pause(const Ref<AudioSamplePlayback> &p_playback, bool p_paused);
+ bool is_sample_playback_active(const Ref<AudioSamplePlayback> &p_playback);
+ void update_sample_playback_pitch_scale(const Ref<AudioSamplePlayback> &p_playback, float p_pitch_scale = 0.0f);
+
AudioServer();
virtual ~AudioServer();
};
VARIANT_ENUM_CAST(AudioServer::SpeakerMode)
+VARIANT_ENUM_CAST(AudioServer::PlaybackType)
class AudioBusLayout : public Resource {
GDCLASS(AudioBusLayout, Resource);