Merge pull request #63265 from reduz/stream-bpm-support
Implement BPM support in AudioStream files.
This commit is contained in:
@@ -69,7 +69,7 @@ void AudioStreamPlayer2D::_notification(int p_what) {
|
||||
|
||||
if (setplay.get() >= 0 && stream.is_valid()) {
|
||||
active.set();
|
||||
Ref<AudioStreamPlayback> new_playback = stream->instance_playback();
|
||||
Ref<AudioStreamPlayback> new_playback = stream->instantiate_playback();
|
||||
ERR_FAIL_COND_MSG(new_playback.is_null(), "Failed to instantiate playback.");
|
||||
AudioServer::get_singleton()->start_playback_stream(new_playback, _get_actual_bus(), volume_vector, setplay.get(), pitch_scale);
|
||||
stream_playbacks.push_back(new_playback);
|
||||
|
||||
@@ -281,7 +281,7 @@ void AudioStreamPlayer3D::_notification(int p_what) {
|
||||
|
||||
if (setplay.get() >= 0 && stream.is_valid()) {
|
||||
active.set();
|
||||
Ref<AudioStreamPlayback> new_playback = stream->instance_playback();
|
||||
Ref<AudioStreamPlayback> new_playback = stream->instantiate_playback();
|
||||
ERR_FAIL_COND_MSG(new_playback.is_null(), "Failed to instantiate playback.");
|
||||
HashMap<StringName, Vector<AudioFrame>> bus_map;
|
||||
bus_map[_get_actual_bus()] = volume_vector;
|
||||
|
||||
@@ -136,7 +136,7 @@ void AudioStreamPlayer::play(float p_from_pos) {
|
||||
if (stream->is_monophonic() && is_playing()) {
|
||||
stop();
|
||||
}
|
||||
Ref<AudioStreamPlayback> stream_playback = stream->instance_playback();
|
||||
Ref<AudioStreamPlayback> stream_playback = stream->instantiate_playback();
|
||||
ERR_FAIL_COND_MSG(stream_playback.is_null(), "Failed to instantiate playback.");
|
||||
|
||||
AudioServer::get_singleton()->start_playback_stream(stream_playback, bus, _get_volume_vector(), p_from_pos, pitch_scale);
|
||||
|
||||
@@ -225,7 +225,7 @@ void VideoStreamPlayer::set_stream(const Ref<VideoStream> &p_stream) {
|
||||
stream = p_stream;
|
||||
if (stream.is_valid()) {
|
||||
stream->set_audio_track(audio_track);
|
||||
playback = stream->instance_playback();
|
||||
playback = stream->instantiate_playback();
|
||||
} else {
|
||||
playback = Ref<VideoStreamPlayback>();
|
||||
}
|
||||
|
||||
@@ -406,6 +406,10 @@ int AudioStreamPlaybackSample::mix(AudioFrame *p_buffer, float p_rate_scale, int
|
||||
return p_frames;
|
||||
}
|
||||
|
||||
void AudioStreamPlaybackSample::tag_used_streams() {
|
||||
base->tag_used(get_playback_position());
|
||||
}
|
||||
|
||||
AudioStreamPlaybackSample::AudioStreamPlaybackSample() {}
|
||||
|
||||
/////////////////////
|
||||
@@ -599,7 +603,7 @@ Error AudioStreamSample::save_to_wav(const String &p_path) {
|
||||
return OK;
|
||||
}
|
||||
|
||||
Ref<AudioStreamPlayback> AudioStreamSample::instance_playback() {
|
||||
Ref<AudioStreamPlayback> AudioStreamSample::instantiate_playback() {
|
||||
Ref<AudioStreamPlaybackSample> sample;
|
||||
sample.instantiate();
|
||||
sample->base = Ref<AudioStreamSample>(this);
|
||||
|
||||
@@ -75,6 +75,8 @@ public:
|
||||
|
||||
virtual int mix(AudioFrame *p_buffer, float p_rate_scale, int p_frames) override;
|
||||
|
||||
virtual void tag_used_streams() override;
|
||||
|
||||
AudioStreamPlaybackSample();
|
||||
};
|
||||
|
||||
@@ -144,7 +146,7 @@ public:
|
||||
|
||||
Error save_to_wav(const String &p_path);
|
||||
|
||||
virtual Ref<AudioStreamPlayback> instance_playback() override;
|
||||
virtual Ref<AudioStreamPlayback> instantiate_playback() override;
|
||||
virtual String get_stream_name() const override;
|
||||
|
||||
AudioStreamSample();
|
||||
|
||||
@@ -72,7 +72,7 @@ class VideoStream : public Resource {
|
||||
|
||||
public:
|
||||
virtual void set_audio_track(int p_track) = 0;
|
||||
virtual Ref<VideoStreamPlayback> instance_playback() = 0;
|
||||
virtual Ref<VideoStreamPlayback> instantiate_playback() = 0;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user