svcore
1.9
|
#include <CodedAudioFileReader.h>
Public Types | |
enum | CacheMode { CacheInTemporaryFile, CacheInMemory } |
typedef std::map< QString, QString > | TagMap |
Signals | |
void | progress (int) |
void | frameCountChanged () |
Public Member Functions | |
virtual | ~CodedAudioFileReader () |
virtual void | getInterleavedFrames (int start, int count, SampleBlock &frames) const |
Return interleaved samples for count frames from index start. | |
virtual int | getNativeRate () const |
virtual bool | isQuicklySeekable () const |
Intermediate cache means all CodedAudioFileReaders are quickly seekable. | |
bool | isOK () const |
virtual QString | getError () const |
int | getFrameCount () const |
int | getChannelCount () const |
int | getSampleRate () const |
virtual QString | getLocation () const |
Return the location of the audio data in the reader (as passed in to the FileSource constructor, for example). | |
virtual QString | getTitle () const |
Return the title of the work in the audio file, if known. | |
virtual QString | getMaker () const |
Return the "maker" of the work in the audio file, if known. | |
virtual TagMap | getTags () const |
virtual void | getDeInterleavedFrames (int start, int count, std::vector< SampleBlock > &frames) const |
Return de-interleaved samples for count frames from index start. | |
virtual int | getDecodeCompletion () const |
virtual bool | isUpdating () const |
Protected Member Functions | |
CodedAudioFileReader (CacheMode cacheMode, int targetRate, bool normalised) | |
void | initialiseDecodeCache () |
void | addSamplesToDecodeCache (float **samples, int nframes) |
void | addSamplesToDecodeCache (float *samplesInterleaved, int nframes) |
void | addSamplesToDecodeCache (const SampleBlock &interleaved) |
void | finishDecodeCache () |
bool | isDecodeCacheInitialised () const |
void | startSerialised (QString id) |
void | endSerialised () |
Protected Attributes | |
QMutex | m_cacheMutex |
CacheMode | m_cacheMode |
SampleBlock | m_data |
QReadWriteLock | m_dataLock |
bool | m_initialised |
Serialiser * | m_serialiser |
int | m_fileRate |
QString | m_cacheFileName |
SNDFILE * | m_cacheFileWritePtr |
WavFileReader * | m_cacheFileReader |
float * | m_cacheWriteBuffer |
int | m_cacheWriteBufferIndex |
int | m_cacheWriteBufferSize |
Resampler * | m_resampler |
float * | m_resampleBuffer |
int | m_fileFrameCount |
bool | m_normalised |
float | m_max |
float | m_gain |
int | m_frameCount |
int | m_channelCount |
int | m_sampleRate |
Private Member Functions | |
void | pushBuffer (float *interleaved, int sz, bool final) |
void | pushBufferResampling (float *interleaved, int sz, float ratio, bool final) |
void | pushBufferNonResampling (float *interleaved, int sz) |
Definition at line 29 of file CodedAudioFileReader.h.
typedef std::map<QString, QString> AudioFileReader::TagMap [inherited] |
Definition at line 65 of file AudioFileReader.h.
Definition at line 36 of file CodedAudioFileReader.h.
CodedAudioFileReader::~CodedAudioFileReader | ( | ) | [virtual] |
Definition at line 55 of file CodedAudioFileReader.cpp.
References endSerialised(), m_cacheFileName, m_cacheFileReader, m_cacheFileWritePtr, m_cacheMutex, m_cacheWriteBuffer, m_resampleBuffer, m_resampler, and SVDEBUG.
CodedAudioFileReader::CodedAudioFileReader | ( | CacheMode | cacheMode, |
int | targetRate, | ||
bool | normalised | ||
) | [protected] |
Definition at line 30 of file CodedAudioFileReader.cpp.
References AudioFileReader::m_frameCount, AudioFileReader::m_sampleRate, and SVDEBUG.
void CodedAudioFileReader::getInterleavedFrames | ( | int | start, |
int | count, | ||
SampleBlock & | frames | ||
) | const [virtual] |
Return interleaved samples for count frames from index start.
The resulting sample block will contain count * getChannelCount() samples (or fewer if end of file is reached).
The subclass implementations of this function must be thread-safe -- that is, safe to call from multiple threads with different arguments on the same object at the same time.
Implements AudioFileReader.
Definition at line 409 of file CodedAudioFileReader.cpp.
References CacheInMemory, CacheInTemporaryFile, WavFileReader::getInterleavedFrames(), AudioFileReader::isOK(), m_cacheFileReader, m_cacheMode, AudioFileReader::m_channelCount, m_data, m_dataLock, m_gain, m_initialised, m_normalised, and SVDEBUG.
virtual int CodedAudioFileReader::getNativeRate | ( | ) | const [inline, virtual] |
Reimplemented from AudioFileReader.
Definition at line 44 of file CodedAudioFileReader.h.
References m_fileRate.
virtual bool CodedAudioFileReader::isQuicklySeekable | ( | ) | const [inline, virtual] |
Intermediate cache means all CodedAudioFileReaders are quickly seekable.
Implements AudioFileReader.
Definition at line 47 of file CodedAudioFileReader.h.
void CodedAudioFileReader::progress | ( | int | ) | [signal] |
Referenced by DecodingWavFileReader::addBlock(), and OggVorbisFileReader::readPacket().
void CodedAudioFileReader::initialiseDecodeCache | ( | ) | [protected] |
Definition at line 97 of file CodedAudioFileReader.cpp.
References CacheInMemory, CacheInTemporaryFile, Resampler::FastestTolerable, WavFileReader::getError(), TempDirectory::getInstance(), AudioFileReader::isOK(), m_cacheFileName, m_cacheFileReader, m_cacheFileWritePtr, m_cacheMode, m_cacheMutex, m_cacheWriteBuffer, m_cacheWriteBufferIndex, m_cacheWriteBufferSize, AudioFileReader::m_channelCount, m_data, m_fileRate, m_initialised, m_resampleBuffer, m_resampler, AudioFileReader::m_sampleRate, and SVDEBUG.
Referenced by MP3FileReader::accept(), OggVorbisFileReader::acceptFrames(), and DecodingWavFileReader::DecodingWavFileReader().
void CodedAudioFileReader::addSamplesToDecodeCache | ( | float ** | samples, |
int | nframes | ||
) | [protected] |
Definition at line 179 of file CodedAudioFileReader.cpp.
References m_cacheFileReader, m_cacheMutex, m_cacheWriteBuffer, m_cacheWriteBufferIndex, m_cacheWriteBufferSize, AudioFileReader::m_channelCount, m_initialised, pushBuffer(), and WavFileReader::updateFrameCount().
Referenced by MP3FileReader::accept(), OggVorbisFileReader::acceptFrames(), and DecodingWavFileReader::addBlock().
void CodedAudioFileReader::addSamplesToDecodeCache | ( | float * | samplesInterleaved, |
int | nframes | ||
) | [protected] |
Definition at line 209 of file CodedAudioFileReader.cpp.
References m_cacheFileReader, m_cacheMutex, m_cacheWriteBuffer, m_cacheWriteBufferIndex, m_cacheWriteBufferSize, AudioFileReader::m_channelCount, m_initialised, pushBuffer(), and WavFileReader::updateFrameCount().
void CodedAudioFileReader::addSamplesToDecodeCache | ( | const SampleBlock & | interleaved | ) | [protected] |
Definition at line 239 of file CodedAudioFileReader.cpp.
References m_cacheFileReader, m_cacheMutex, m_cacheWriteBuffer, m_cacheWriteBufferIndex, m_cacheWriteBufferSize, AudioFileReader::m_channelCount, m_initialised, pushBuffer(), and WavFileReader::updateFrameCount().
void CodedAudioFileReader::finishDecodeCache | ( | ) | [protected] |
Definition at line 266 of file CodedAudioFileReader.cpp.
References CacheInTemporaryFile, m_cacheFileReader, m_cacheFileWritePtr, m_cacheMode, m_cacheMutex, m_cacheWriteBuffer, m_cacheWriteBufferIndex, AudioFileReader::m_channelCount, m_initialised, m_resampleBuffer, m_resampler, pushBuffer(), and WavFileReader::updateFrameCount().
Referenced by DecodingWavFileReader::DecodingWavFileReader(), MP3FileReader::MP3FileReader(), OggVorbisFileReader::OggVorbisFileReader(), DecodingWavFileReader::DecodeThread::run(), OggVorbisFileReader::DecodeThread::run(), and MP3FileReader::DecodeThread::run().
bool CodedAudioFileReader::isDecodeCacheInitialised | ( | ) | const [inline, protected] |
Definition at line 67 of file CodedAudioFileReader.h.
References m_initialised.
Referenced by MP3FileReader::accept(), DecodingWavFileReader::DecodingWavFileReader(), MP3FileReader::MP3FileReader(), OggVorbisFileReader::OggVorbisFileReader(), DecodingWavFileReader::DecodeThread::run(), OggVorbisFileReader::DecodeThread::run(), and MP3FileReader::DecodeThread::run().
void CodedAudioFileReader::startSerialised | ( | QString | id | ) | [protected] |
Definition at line 79 of file CodedAudioFileReader.cpp.
References m_serialiser, and SVDEBUG.
Referenced by MP3FileReader::accept(), DecodingWavFileReader::DecodeThread::run(), and OggVorbisFileReader::DecodeThread::run().
void CodedAudioFileReader::endSerialised | ( | ) | [protected] |
Definition at line 88 of file CodedAudioFileReader.cpp.
References Serialiser::getId(), m_serialiser, and SVDEBUG.
Referenced by DecodingWavFileReader::DecodingWavFileReader(), MP3FileReader::MP3FileReader(), OggVorbisFileReader::OggVorbisFileReader(), DecodingWavFileReader::DecodeThread::run(), OggVorbisFileReader::DecodeThread::run(), MP3FileReader::DecodeThread::run(), and ~CodedAudioFileReader().
void CodedAudioFileReader::pushBuffer | ( | float * | interleaved, |
int | sz, | ||
bool | final | ||
) | [private] |
Definition at line 298 of file CodedAudioFileReader.cpp.
References m_fileFrameCount, m_fileRate, m_resampler, AudioFileReader::m_sampleRate, pushBufferNonResampling(), and pushBufferResampling().
Referenced by addSamplesToDecodeCache(), and finishDecodeCache().
void CodedAudioFileReader::pushBufferResampling | ( | float * | interleaved, |
int | sz, | ||
float | ratio, | ||
bool | final | ||
) | [private] |
Definition at line 361 of file CodedAudioFileReader.cpp.
References AudioFileReader::m_channelCount, m_fileFrameCount, AudioFileReader::m_frameCount, m_resampleBuffer, m_resampler, pushBufferNonResampling(), Resampler::resampleInterleaved(), and SVDEBUG.
Referenced by pushBuffer().
void CodedAudioFileReader::pushBufferNonResampling | ( | float * | interleaved, |
int | sz | ||
) | [private] |
Definition at line 315 of file CodedAudioFileReader.cpp.
References CacheInMemory, CacheInTemporaryFile, TempDirectory::getInstance(), m_cacheFileWritePtr, m_cacheMode, AudioFileReader::m_channelCount, m_data, m_dataLock, AudioFileReader::m_frameCount, m_gain, m_max, m_normalised, and MUNLOCK_SAMPLEBLOCK.
Referenced by pushBuffer(), and pushBufferResampling().
bool AudioFileReader::isOK | ( | ) | const [inline, inherited] |
Definition at line 35 of file AudioFileReader.h.
References AudioFileReader::m_channelCount.
Referenced by AudioFileReaderFactory::create(), DecodingWavFileReader::DecodingWavFileReader(), WaveFileModel::getData(), getInterleavedFrames(), initialiseDecodeCache(), and WaveFileModel::isOK().
virtual QString AudioFileReader::getError | ( | ) | const [inline, virtual, inherited] |
Reimplemented in OggVorbisFileReader, MP3FileReader, DecodingWavFileReader, and WavFileReader.
Definition at line 37 of file AudioFileReader.h.
Referenced by AudioFileReaderFactory::create().
int AudioFileReader::getFrameCount | ( | ) | const [inline, inherited] |
Definition at line 39 of file AudioFileReader.h.
References AudioFileReader::m_frameCount.
Referenced by DecodingWavFileReader::addBlock(), DecodingWavFileReader::DecodingWavFileReader(), WaveFileModel::getFrameCount(), and DecodingWavFileReader::DecodeThread::run().
int AudioFileReader::getChannelCount | ( | ) | const [inline, inherited] |
Definition at line 40 of file AudioFileReader.h.
References AudioFileReader::m_channelCount.
Referenced by WritableWaveFileModel::addSamples(), DecodingWavFileReader::DecodingWavFileReader(), WaveFileModel::getChannelCount(), and AudioFileReader::getDeInterleavedFrames().
int AudioFileReader::getSampleRate | ( | ) | const [inline, inherited] |
Definition at line 41 of file AudioFileReader.h.
References AudioFileReader::m_sampleRate.
Referenced by AudioFileReaderFactory::create(), DecodingWavFileReader::DecodingWavFileReader(), WaveFileModel::getSampleRate(), and WaveFileModel::WaveFileModel().
virtual QString AudioFileReader::getLocation | ( | ) | const [inline, virtual, inherited] |
Return the location of the audio data in the reader (as passed in to the FileSource constructor, for example).
Reimplemented in OggVorbisFileReader, MP3FileReader, DecodingWavFileReader, and WavFileReader.
Definition at line 49 of file AudioFileReader.h.
Referenced by WaveFileModel::getLocation().
virtual QString AudioFileReader::getTitle | ( | ) | const [inline, virtual, inherited] |
Return the title of the work in the audio file, if known.
This may be implemented by subclasses that support file tagging. This is not the same thing as the file name.
Reimplemented in OggVorbisFileReader, and MP3FileReader.
Definition at line 56 of file AudioFileReader.h.
Referenced by WaveFileModel::getTitle(), and WaveFileModel::WaveFileModel().
virtual QString AudioFileReader::getMaker | ( | ) | const [inline, virtual, inherited] |
Return the "maker" of the work in the audio file, if known.
This could represent almost anything (band, composer, conductor, artist etc).
Reimplemented in OggVorbisFileReader, and MP3FileReader.
Definition at line 63 of file AudioFileReader.h.
Referenced by WaveFileModel::getMaker().
virtual TagMap AudioFileReader::getTags | ( | ) | const [inline, virtual, inherited] |
Reimplemented in OggVorbisFileReader, and MP3FileReader.
Definition at line 66 of file AudioFileReader.h.
void AudioFileReader::getDeInterleavedFrames | ( | int | start, |
int | count, | ||
std::vector< SampleBlock > & | frames | ||
) | const [virtual, inherited] |
Return de-interleaved samples for count frames from index start.
Implemented in this class (it calls getInterleavedFrames and de-interleaves). The resulting vector will contain getChannelCount() sample blocks of count samples each (or fewer if end of file is reached).
Definition at line 19 of file AudioFileReader.cpp.
References AudioFileReader::getChannelCount(), and AudioFileReader::getInterleavedFrames().
virtual int AudioFileReader::getDecodeCompletion | ( | ) | const [inline, virtual, inherited] |
Reimplemented in OggVorbisFileReader, MP3FileReader, WavFileReader, and DecodingWavFileReader.
Definition at line 99 of file AudioFileReader.h.
Referenced by WaveFileModel::isReady().
virtual bool AudioFileReader::isUpdating | ( | ) | const [inline, virtual, inherited] |
Reimplemented in OggVorbisFileReader, MP3FileReader, WavFileReader, and DecodingWavFileReader.
Definition at line 101 of file AudioFileReader.h.
Referenced by WaveFileModel::RangeCacheFillThread::run().
void AudioFileReader::frameCountChanged | ( | ) | [signal, inherited] |
Referenced by WavFileReader::updateFrameCount().
QMutex CodedAudioFileReader::m_cacheMutex [protected] |
Definition at line 78 of file CodedAudioFileReader.h.
Referenced by addSamplesToDecodeCache(), finishDecodeCache(), initialiseDecodeCache(), and ~CodedAudioFileReader().
CacheMode CodedAudioFileReader::m_cacheMode [protected] |
Definition at line 79 of file CodedAudioFileReader.h.
Referenced by MP3FileReader::accept(), finishDecodeCache(), getInterleavedFrames(), initialiseDecodeCache(), pushBufferNonResampling(), DecodingWavFileReader::DecodeThread::run(), and OggVorbisFileReader::DecodeThread::run().
SampleBlock CodedAudioFileReader::m_data [protected] |
Definition at line 80 of file CodedAudioFileReader.h.
Referenced by getInterleavedFrames(), initialiseDecodeCache(), and pushBufferNonResampling().
QReadWriteLock CodedAudioFileReader::m_dataLock [mutable, protected] |
Definition at line 81 of file CodedAudioFileReader.h.
Referenced by getInterleavedFrames(), and pushBufferNonResampling().
bool CodedAudioFileReader::m_initialised [protected] |
Definition at line 82 of file CodedAudioFileReader.h.
Referenced by addSamplesToDecodeCache(), finishDecodeCache(), getInterleavedFrames(), initialiseDecodeCache(), and isDecodeCacheInitialised().
Serialiser* CodedAudioFileReader::m_serialiser [protected] |
Definition at line 83 of file CodedAudioFileReader.h.
Referenced by endSerialised(), and startSerialised().
int CodedAudioFileReader::m_fileRate [protected] |
Definition at line 84 of file CodedAudioFileReader.h.
Referenced by MP3FileReader::accept(), OggVorbisFileReader::acceptFrames(), DecodingWavFileReader::addBlock(), DecodingWavFileReader::DecodingWavFileReader(), getNativeRate(), initialiseDecodeCache(), MP3FileReader::MP3FileReader(), OggVorbisFileReader::OggVorbisFileReader(), and pushBuffer().
QString CodedAudioFileReader::m_cacheFileName [protected] |
Definition at line 86 of file CodedAudioFileReader.h.
Referenced by initialiseDecodeCache(), and ~CodedAudioFileReader().
SNDFILE* CodedAudioFileReader::m_cacheFileWritePtr [protected] |
Definition at line 87 of file CodedAudioFileReader.h.
Referenced by finishDecodeCache(), initialiseDecodeCache(), pushBufferNonResampling(), and ~CodedAudioFileReader().
WavFileReader* CodedAudioFileReader::m_cacheFileReader [protected] |
Definition at line 88 of file CodedAudioFileReader.h.
Referenced by addSamplesToDecodeCache(), finishDecodeCache(), getInterleavedFrames(), initialiseDecodeCache(), and ~CodedAudioFileReader().
float* CodedAudioFileReader::m_cacheWriteBuffer [protected] |
Definition at line 89 of file CodedAudioFileReader.h.
Referenced by addSamplesToDecodeCache(), finishDecodeCache(), initialiseDecodeCache(), and ~CodedAudioFileReader().
int CodedAudioFileReader::m_cacheWriteBufferIndex [protected] |
Definition at line 90 of file CodedAudioFileReader.h.
Referenced by addSamplesToDecodeCache(), finishDecodeCache(), and initialiseDecodeCache().
int CodedAudioFileReader::m_cacheWriteBufferSize [protected] |
Definition at line 91 of file CodedAudioFileReader.h.
Referenced by addSamplesToDecodeCache(), and initialiseDecodeCache().
Resampler* CodedAudioFileReader::m_resampler [protected] |
Definition at line 93 of file CodedAudioFileReader.h.
Referenced by finishDecodeCache(), initialiseDecodeCache(), pushBuffer(), pushBufferResampling(), and ~CodedAudioFileReader().
float* CodedAudioFileReader::m_resampleBuffer [protected] |
Definition at line 94 of file CodedAudioFileReader.h.
Referenced by finishDecodeCache(), initialiseDecodeCache(), pushBufferResampling(), and ~CodedAudioFileReader().
int CodedAudioFileReader::m_fileFrameCount [protected] |
Definition at line 95 of file CodedAudioFileReader.h.
Referenced by pushBuffer(), and pushBufferResampling().
bool CodedAudioFileReader::m_normalised [protected] |
Definition at line 97 of file CodedAudioFileReader.h.
Referenced by getInterleavedFrames(), and pushBufferNonResampling().
float CodedAudioFileReader::m_max [protected] |
Definition at line 98 of file CodedAudioFileReader.h.
Referenced by pushBufferNonResampling().
float CodedAudioFileReader::m_gain [protected] |
Definition at line 99 of file CodedAudioFileReader.h.
Referenced by getInterleavedFrames(), and pushBufferNonResampling().
int AudioFileReader::m_frameCount [protected, inherited] |
Definition at line 107 of file AudioFileReader.h.
Referenced by MP3FileReader::accept(), CodedAudioFileReader(), AudioFileReader::getFrameCount(), pushBufferNonResampling(), pushBufferResampling(), WavFileReader::updateFrameCount(), and WavFileReader::WavFileReader().
int AudioFileReader::m_channelCount [protected, inherited] |
Definition at line 108 of file AudioFileReader.h.
Referenced by MP3FileReader::accept(), OggVorbisFileReader::acceptFrames(), addSamplesToDecodeCache(), DecodingWavFileReader::DecodingWavFileReader(), finishDecodeCache(), AudioFileReader::getChannelCount(), getInterleavedFrames(), WavFileReader::getInterleavedFrames(), initialiseDecodeCache(), AudioFileReader::isOK(), MP3FileReader::MP3FileReader(), OggVorbisFileReader::OggVorbisFileReader(), pushBufferNonResampling(), pushBufferResampling(), MP3FileReader::DecodeThread::run(), WavFileReader::updateFrameCount(), and WavFileReader::WavFileReader().
int AudioFileReader::m_sampleRate [protected, inherited] |
Definition at line 109 of file AudioFileReader.h.
Referenced by MP3FileReader::accept(), DecodingWavFileReader::addBlock(), CodedAudioFileReader(), AudioFileReader::getNativeRate(), AudioFileReader::getSampleRate(), initialiseDecodeCache(), MP3FileReader::MP3FileReader(), OggVorbisFileReader::OggVorbisFileReader(), pushBuffer(), WavFileReader::updateFrameCount(), and WavFileReader::WavFileReader().