diff options
Diffstat (limited to 'servers/audio_server.h')
-rw-r--r-- | servers/audio_server.h | 45 |
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); |