Abstract base class for sound file decoding. More...
#include <SFML/Audio/SoundFileReader.hpp>
Classes | |
struct | Info |
Structure holding the audio properties of a sound file. More... | |
Public Member Functions | |
virtual | ~SoundFileReader ()=default |
Virtual destructor. | |
virtual std::optional< Info > | open (InputStream &stream)=0 |
Open a sound file for reading. | |
virtual void | seek (std::uint64_t sampleOffset)=0 |
Change the current read position to the given sample offset. | |
virtual std::uint64_t | read (std::int16_t *samples, std::uint64_t maxCount)=0 |
Read audio samples from the open file. | |
Detailed Description
Abstract base class for sound file decoding.
This class allows users to read audio file formats not natively supported by SFML, and thus extend the set of supported readable audio formats.
A valid sound file reader must override the open, seek and write functions, as well as providing a static check function; the latter is used by SFML to find a suitable writer for a given input file.
To register a new reader, use the sf::SoundFileFactory::registerReader
template function.
Usage example:
Definition at line 48 of file SoundFileReader.hpp.
Constructor & Destructor Documentation
◆ ~SoundFileReader()
|
virtualdefault |
Virtual destructor.
Member Function Documentation
◆ open()
|
nodiscardpure virtual |
Open a sound file for reading.
The provided stream reference is valid as long as the SoundFileReader
is alive, so it is safe to use/store it during the whole lifetime of the reader.
- Parameters
-
stream Source stream to read from
- Returns
- Properties of the loaded sound if the file was successfully opened
◆ read()
|
nodiscardpure virtual |
Read audio samples from the open file.
- Parameters
-
samples Pointer to the sample array to fill maxCount Maximum number of samples to read
- Returns
- Number of samples actually read (may be less than maxCount)
◆ seek()
|
pure virtual |
Change the current read position to the given sample offset.
The sample offset takes the channels into account. If you have a time offset instead, you can easily find the corresponding sample offset with the following formula: timeInSeconds * sampleRate * channelCount
If the given offset exceeds to total number of samples, this function must jump to the end of the file.
- Parameters
-
sampleOffset Index of the sample to jump to, relative to the beginning
The documentation for this class was generated from the following file: