summaryrefslogtreecommitdiffstats
path: root/Telegram/SourceFiles/media/audio/media_audio_loader.h
diff options
context:
space:
mode:
Diffstat (limited to 'Telegram/SourceFiles/media/audio/media_audio_loader.h')
-rw-r--r--Telegram/SourceFiles/media/audio/media_audio_loader.h23
1 files changed, 19 insertions, 4 deletions
diff --git a/Telegram/SourceFiles/media/audio/media_audio_loader.h b/Telegram/SourceFiles/media/audio/media_audio_loader.h
index 2003121db1..3082ef1f34 100644
--- a/Telegram/SourceFiles/media/audio/media_audio_loader.h
+++ b/Telegram/SourceFiles/media/audio/media_audio_loader.h
@@ -21,17 +21,29 @@ public:
bytes::vector &&buffer);
virtual ~AudioPlayerLoader();
- virtual bool check(const Core::FileLocation &file, const QByteArray &data);
+ virtual bool check(
+ const Core::FileLocation &file,
+ const QByteArray &data);
- virtual bool open(crl::time positionMs) = 0;
- virtual int64 samplesCount() = 0;
+ virtual bool open(crl::time positionMs, float64 speed = 1.) = 0;
+ virtual crl::time duration() = 0;
virtual int samplesFrequency() = 0;
virtual int sampleSize() = 0;
virtual int format() = 0;
+ virtual void dropFramesTill(int64 samples) {
+ }
+ [[nodiscard]] virtual int64 startReadingQueuedFrames(float64 newSpeed) {
+ Unexpected(
+ "startReadingQueuedFrames() on not AbstractAudioFFMpegLoader");
+ }
+
+ [[nodiscard]] int bytesPerBuffer();
+
enum class ReadError {
Other,
- NotYet,
+ Retry,
+ RetryNotQueued,
Wait,
EndOfFile,
};
@@ -51,6 +63,7 @@ public:
void saveDecodedSamples(not_null<QByteArray*> samples);
void takeSavedDecodedSamples(not_null<QByteArray*> samples);
bool holdsSavedDecodedSamples() const;
+ void dropDecodedSamples();
protected:
Core::FileLocation _file;
@@ -67,6 +80,8 @@ private:
QByteArray _savedSamples;
bool _holdsSavedSamples = false;
+ int _bytesPerBuffer = 0;
+
};
} // namespace Media