summaryrefslogtreecommitdiffstats
path: root/Telegram/SourceFiles/media/audio/media_audio_loaders.h
diff options
context:
space:
mode:
Diffstat (limited to 'Telegram/SourceFiles/media/audio/media_audio_loaders.h')
-rw-r--r--Telegram/SourceFiles/media/audio/media_audio_loaders.h41
1 files changed, 24 insertions, 17 deletions
diff --git a/Telegram/SourceFiles/media/audio/media_audio_loaders.h b/Telegram/SourceFiles/media/audio/media_audio_loaders.h
index 220d338efc..d8b732235d 100644
--- a/Telegram/SourceFiles/media/audio/media_audio_loaders.h
+++ b/Telegram/SourceFiles/media/audio/media_audio_loaders.h
@@ -37,7 +37,31 @@ public Q_SLOTS:
void onCancel(const AudioMsgId &audio);
private:
+ struct SetupLoaderResult {
+ AudioPlayerLoader *loader = nullptr;
+ float64 oldSpeed = 0.;
+ float64 newSpeed = 0.;
+ int64 fadeStartPosition = 0;
+ int64 position = 0;
+ int64 normalLength = 0;
+ int frequency = 0;
+ bool errorAtStart = false;
+ bool justStarted = false;
+ };
+
void videoSoundAdded();
+ [[nodiscard]] Mixer::Track::WithSpeed rebufferOnSpeedChange(
+ const SetupLoaderResult &setup);
+
+ void emitError(AudioMsgId::Type type);
+ AudioMsgId clear(AudioMsgId::Type type);
+ void setStoppedState(Mixer::Track *m, State state = State::Stopped);
+
+ void loadData(AudioMsgId audio, crl::time positionMs = 0);
+ [[nodiscard]] SetupLoaderResult setupLoader(
+ const AudioMsgId &audio,
+ crl::time positionMs);
+ Mixer::Track *checkLoader(AudioMsgId::Type type);
AudioMsgId _audio, _song, _video;
std::unique_ptr<AudioPlayerLoader> _audioLoader;
@@ -51,23 +75,6 @@ private:
base::flat_set<AudioMsgId> _fromExternalForceToBuffer;
SingleQueuedInvokation _fromExternalNotify;
- void emitError(AudioMsgId::Type type);
- AudioMsgId clear(AudioMsgId::Type type);
- void setStoppedState(Mixer::Track *m, State state = State::Stopped);
-
- enum SetupError {
- SetupErrorAtStart = 0,
- SetupErrorNotPlaying = 1,
- SetupErrorLoadedFull = 2,
- SetupNoErrorStarted = 3,
- };
- void loadData(AudioMsgId audio, crl::time positionMs = 0);
- AudioPlayerLoader *setupLoader(
- const AudioMsgId &audio,
- SetupError &err,
- crl::time positionMs);
- Mixer::Track *checkLoader(AudioMsgId::Type type);
-
};
} // namespace Player