summaryrefslogtreecommitdiffstats
path: root/modules/minimp3/audio_stream_mp3.h
diff options
context:
space:
mode:
Diffstat (limited to 'modules/minimp3/audio_stream_mp3.h')
-rw-r--r--modules/minimp3/audio_stream_mp3.h17
1 files changed, 15 insertions, 2 deletions
diff --git a/modules/minimp3/audio_stream_mp3.h b/modules/minimp3/audio_stream_mp3.h
index 7d85e0a321..bb4c7f524c 100644
--- a/modules/minimp3/audio_stream_mp3.h
+++ b/modules/minimp3/audio_stream_mp3.h
@@ -49,7 +49,7 @@ class AudioStreamPlaybackMP3 : public AudioStreamPlaybackResampled {
bool looping_override = false;
bool looping = false;
- mp3dec_ex_t *mp3d = nullptr;
+ mp3dec_ex_t mp3d = {};
uint32_t frames_mixed = 0;
bool active = false;
int loops = 0;
@@ -58,6 +58,9 @@ class AudioStreamPlaybackMP3 : public AudioStreamPlaybackResampled {
Ref<AudioStreamMP3> mp3_stream;
+ bool _is_sample = false;
+ Ref<AudioSamplePlayback> sample_playback;
+
protected:
virtual int _mix_internal(AudioFrame *p_buffer, int p_frames) override;
virtual float get_stream_sampling_rate() override;
@@ -74,6 +77,11 @@ public:
virtual void tag_used_streams() override;
+ virtual void set_is_sample(bool p_is_sample) override;
+ virtual bool get_is_sample() const override;
+ virtual Ref<AudioSamplePlayback> get_sample_playback() const override;
+ virtual void set_sample_playback(const Ref<AudioSamplePlayback> &p_playback) override;
+
virtual void set_parameter(const StringName &p_name, const Variant &p_value) override;
virtual Variant get_parameter(const StringName &p_name) const override;
@@ -88,7 +96,7 @@ class AudioStreamMP3 : public AudioStream {
friend class AudioStreamPlaybackMP3;
- PackedByteArray data;
+ LocalVector<uint8_t> data;
uint32_t data_len = 0;
float sample_rate = 1.0;
@@ -131,6 +139,11 @@ public:
virtual bool is_monophonic() const override;
+ virtual bool can_be_sampled() const override {
+ return true;
+ }
+ virtual Ref<AudioSample> generate_sample() const override;
+
virtual void get_parameter_list(List<Parameter> *r_parameters) override;
AudioStreamMP3();