diff options
Diffstat (limited to 'servers/audio/audio_stream.cpp')
| -rw-r--r-- | servers/audio/audio_stream.cpp | 27 | 
1 files changed, 17 insertions, 10 deletions
diff --git a/servers/audio/audio_stream.cpp b/servers/audio/audio_stream.cpp index 369dfac042..0ad30987e7 100644 --- a/servers/audio/audio_stream.cpp +++ b/servers/audio/audio_stream.cpp @@ -46,9 +46,9 @@ void AudioStreamPlaybackResampled::_begin_resample() {  void AudioStreamPlaybackResampled::mix(AudioFrame *p_buffer, float p_rate_scale, int p_frames) { -	float target_rate = AudioServer::get_singleton()->get_mix_rate() * p_rate_scale; +	float target_rate = AudioServer::get_singleton()->get_mix_rate(); -	uint64_t mix_increment = uint64_t((get_stream_sampling_rate() / double(target_rate)) * double(FP_LEN)); +	uint64_t mix_increment = uint64_t(((get_stream_sampling_rate() * p_rate_scale) / double(target_rate)) * double(FP_LEN));  	for (int i = 0; i < p_frames; i++) { @@ -91,6 +91,13 @@ void AudioStreamPlaybackResampled::mix(AudioFrame *p_buffer, float p_rate_scale,  }  //////////////////////////////// +void AudioStream::_bind_methods() { + +	ClassDB::bind_method(D_METHOD("get_length"), &AudioStream::get_length); +} + +//////////////////////////////// +  void AudioStreamRandomPitch::set_audio_stream(const Ref<AudioStream> &p_audio_stream) {  	audio_stream = p_audio_stream; @@ -136,6 +143,14 @@ String AudioStreamRandomPitch::get_stream_name() const {  	return "RandomPitch";  } +float AudioStreamRandomPitch::get_length() const { +	if (audio_stream.is_valid()) { +		return audio_stream->get_length(); +	} + +	return 0; +} +  void AudioStreamRandomPitch::_bind_methods() {  	ClassDB::bind_method(D_METHOD("set_audio_stream", "stream"), &AudioStreamRandomPitch::set_audio_stream); @@ -209,14 +224,6 @@ void AudioStreamPlaybackRandomPitch::mix(AudioFrame *p_buffer, float p_rate_scal  	}  } -float AudioStreamPlaybackRandomPitch::get_length() const { -	if (playing.is_valid()) { -		return playing->get_length(); -	} - -	return 0; -} -  AudioStreamPlaybackRandomPitch::~AudioStreamPlaybackRandomPitch() {  	random_pitch->playbacks.erase(this);  }  |