svcore  1.9
CodedAudioFileReader Class Reference

#include <CodedAudioFileReader.h>

Inheritance diagram for CodedAudioFileReader:
Collaboration diagram for CodedAudioFileReader:

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. More...
 
virtual int getNativeRate () const
 
virtual bool isQuicklySeekable () const
 Intermediate cache means all CodedAudioFileReaders are quickly seekable. More...
 
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). More...
 
virtual QString getTitle () const
 Return the title of the work in the audio file, if known. More...
 
virtual QString getMaker () const
 Return the "maker" of the work in the audio file, if known. More...
 
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. More...
 
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
 
Serialiserm_serialiser
 
int m_fileRate
 
QString m_cacheFileName
 
SNDFILE * m_cacheFileWritePtr
 
WavFileReaderm_cacheFileReader
 
float * m_cacheWriteBuffer
 
int m_cacheWriteBufferIndex
 
int m_cacheWriteBufferSize
 
Resamplerm_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)
 

Detailed Description

Definition at line 29 of file CodedAudioFileReader.h.

Member Typedef Documentation

◆ TagMap

typedef std::map<QString, QString> AudioFileReader::TagMap
inherited

Definition at line 65 of file AudioFileReader.h.

Member Enumeration Documentation

◆ CacheMode

Enumerator
CacheInTemporaryFile 
CacheInMemory 

Definition at line 36 of file CodedAudioFileReader.h.

Constructor & Destructor Documentation

◆ ~CodedAudioFileReader()

CodedAudioFileReader::~CodedAudioFileReader ( )
virtual

◆ CodedAudioFileReader()

CodedAudioFileReader::CodedAudioFileReader ( CacheMode  cacheMode,
int  targetRate,
bool  normalised 
)
protected

Member Function Documentation

◆ getInterleavedFrames()

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.

◆ getNativeRate()

virtual int CodedAudioFileReader::getNativeRate ( ) const
inlinevirtual

Reimplemented from AudioFileReader.

Definition at line 44 of file CodedAudioFileReader.h.

References m_fileRate.

◆ isQuicklySeekable()

virtual bool CodedAudioFileReader::isQuicklySeekable ( ) const
inlinevirtual

Intermediate cache means all CodedAudioFileReaders are quickly seekable.

Implements AudioFileReader.

Definition at line 47 of file CodedAudioFileReader.h.

◆ progress

void CodedAudioFileReader::progress ( int  )
signal

◆ initialiseDecodeCache()

◆ addSamplesToDecodeCache() [1/3]

◆ addSamplesToDecodeCache() [2/3]

void CodedAudioFileReader::addSamplesToDecodeCache ( float *  samplesInterleaved,
int  nframes 
)
protected

◆ addSamplesToDecodeCache() [3/3]

void CodedAudioFileReader::addSamplesToDecodeCache ( const SampleBlock interleaved)
protected

◆ finishDecodeCache()

◆ isDecodeCacheInitialised()

◆ startSerialised()

void CodedAudioFileReader::startSerialised ( QString  id)
protected

◆ endSerialised()

◆ pushBuffer()

void CodedAudioFileReader::pushBuffer ( float *  interleaved,
int  sz,
bool  final 
)
private

◆ pushBufferResampling()

void CodedAudioFileReader::pushBufferResampling ( float *  interleaved,
int  sz,
float  ratio,
bool  final 
)
private

◆ pushBufferNonResampling()

void CodedAudioFileReader::pushBufferNonResampling ( float *  interleaved,
int  sz 
)
private

◆ isOK()

◆ getError()

virtual QString AudioFileReader::getError ( ) const
inlinevirtualinherited

◆ getFrameCount()

◆ getChannelCount()

◆ getSampleRate()

int AudioFileReader::getSampleRate ( ) const
inlineinherited

◆ getLocation()

virtual QString AudioFileReader::getLocation ( ) const
inlinevirtualinherited

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().

◆ getTitle()

virtual QString AudioFileReader::getTitle ( ) const
inlinevirtualinherited

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().

◆ getMaker()

virtual QString AudioFileReader::getMaker ( ) const
inlinevirtualinherited

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().

◆ getTags()

virtual TagMap AudioFileReader::getTags ( ) const
inlinevirtualinherited

Reimplemented in OggVorbisFileReader, and MP3FileReader.

Definition at line 66 of file AudioFileReader.h.

◆ getDeInterleavedFrames()

void AudioFileReader::getDeInterleavedFrames ( int  start,
int  count,
std::vector< SampleBlock > &  frames 
) const
virtualinherited

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().

◆ getDecodeCompletion()

virtual int AudioFileReader::getDecodeCompletion ( ) const
inlinevirtualinherited

Reimplemented in OggVorbisFileReader, MP3FileReader, WavFileReader, and DecodingWavFileReader.

Definition at line 99 of file AudioFileReader.h.

Referenced by WaveFileModel::isReady().

◆ isUpdating()

virtual bool AudioFileReader::isUpdating ( ) const
inlinevirtualinherited

◆ frameCountChanged

void AudioFileReader::frameCountChanged ( )
signalinherited

Member Data Documentation

◆ m_cacheMutex

QMutex CodedAudioFileReader::m_cacheMutex
protected

◆ m_cacheMode

◆ m_data

SampleBlock CodedAudioFileReader::m_data
protected

◆ m_dataLock

QReadWriteLock CodedAudioFileReader::m_dataLock
mutableprotected

Definition at line 81 of file CodedAudioFileReader.h.

Referenced by getInterleavedFrames(), and pushBufferNonResampling().

◆ m_initialised

bool CodedAudioFileReader::m_initialised
protected

◆ m_serialiser

Serialiser* CodedAudioFileReader::m_serialiser
protected

Definition at line 83 of file CodedAudioFileReader.h.

Referenced by endSerialised(), and startSerialised().

◆ m_fileRate

◆ m_cacheFileName

QString CodedAudioFileReader::m_cacheFileName
protected

Definition at line 86 of file CodedAudioFileReader.h.

Referenced by initialiseDecodeCache(), and ~CodedAudioFileReader().

◆ m_cacheFileWritePtr

SNDFILE* CodedAudioFileReader::m_cacheFileWritePtr
protected

◆ m_cacheFileReader

WavFileReader* CodedAudioFileReader::m_cacheFileReader
protected

◆ m_cacheWriteBuffer

float* CodedAudioFileReader::m_cacheWriteBuffer
protected

◆ m_cacheWriteBufferIndex

int CodedAudioFileReader::m_cacheWriteBufferIndex
protected

◆ m_cacheWriteBufferSize

int CodedAudioFileReader::m_cacheWriteBufferSize
protected

Definition at line 91 of file CodedAudioFileReader.h.

Referenced by addSamplesToDecodeCache(), and initialiseDecodeCache().

◆ m_resampler

Resampler* CodedAudioFileReader::m_resampler
protected

◆ m_resampleBuffer

float* CodedAudioFileReader::m_resampleBuffer
protected

◆ m_fileFrameCount

int CodedAudioFileReader::m_fileFrameCount
protected

Definition at line 95 of file CodedAudioFileReader.h.

Referenced by pushBuffer(), and pushBufferResampling().

◆ m_normalised

bool CodedAudioFileReader::m_normalised
protected

Definition at line 97 of file CodedAudioFileReader.h.

Referenced by getInterleavedFrames(), and pushBufferNonResampling().

◆ m_max

float CodedAudioFileReader::m_max
protected

Definition at line 98 of file CodedAudioFileReader.h.

Referenced by pushBufferNonResampling().

◆ m_gain

float CodedAudioFileReader::m_gain
protected

Definition at line 99 of file CodedAudioFileReader.h.

Referenced by getInterleavedFrames(), and pushBufferNonResampling().

◆ m_frameCount

◆ m_channelCount

◆ m_sampleRate


The documentation for this class was generated from the following files: