kwave
18.07.70
|
#include <SampleReader.h>
Signals | |
void | proceeded () |
void | output (Kwave::SampleArray data) |
![]() | |
void | attributeChanged (const QVariant value) |
Public Member Functions | |
SampleReader (Kwave::ReaderMode mode, Kwave::Stripe::List stripes) | |
virtual | ~SampleReader () Q_DECL_OVERRIDE |
void | reset () |
virtual void | goOn () Q_DECL_OVERRIDE |
bool | eof () const |
virtual bool | done () const Q_DECL_OVERRIDE |
unsigned int | read (Kwave::SampleArray &buffer, unsigned int dstoff, unsigned int length) |
void | minMax (sample_index_t first, sample_index_t last, sample_t &min, sample_t &max) |
void | skip (sample_index_t count) |
void | seek (sample_index_t pos) |
sample_index_t | pos () const |
sample_index_t | first () const |
sample_index_t | last () const |
SampleReader & | operator>> (sample_t &sample) |
SampleReader & | operator>> (Kwave::SampleArray &sample) |
![]() | |
SampleSource (QObject *parent=Q_NULLPTR) | |
virtual | ~SampleSource () |
![]() | |
StreamObject (QObject *parent=Q_NULLPTR) | |
virtual | ~StreamObject () |
virtual unsigned int | tracks () const |
virtual Kwave::StreamObject * | operator[] (unsigned int track) |
virtual unsigned int | tracksOfPort (const char *port) const |
virtual Kwave::StreamObject * | port (const char *port, unsigned int track) |
virtual unsigned int | blockSize () const |
void | setAttribute (const char *attribute, const QVariant &value) |
Protected Member Functions | |
void | fillBuffer () |
unsigned int | readSamples (sample_index_t offset, Kwave::SampleArray &buffer, unsigned int buf_offset, unsigned int length) |
Private Attributes | |
Kwave::ReaderMode | m_mode |
QList< Kwave::Stripe > | m_stripes |
sample_index_t | m_src_position |
sample_index_t | m_first |
sample_index_t | m_last |
Kwave::SampleArray | m_buffer |
unsigned int | m_buffer_used |
unsigned int | m_buffer_position |
QTime | m_progress_time |
sample_index_t | m_last_seek_pos |
Additional Inherited Members | |
![]() | |
static void | setInteractive (bool interactive) |
Definition at line 39 of file SampleReader.h.
Kwave::SampleReader::SampleReader | ( | Kwave::ReaderMode | mode, |
Kwave::Stripe::List | stripes | ||
) |
Constructor. Creates a stream for reading samples from a track.
mode | the reader mode, see Kwave::ReaderMode |
stripes | list of stripes which contains the desired range |
Definition at line 35 of file SampleReader.cpp.
References m_progress_time.
|
virtual |
|
inlinevirtual |
Returns true if the end of the source has been reached, e.g. at EOF of an input stream.
Reimplemented from Kwave::SampleSource.
Definition at line 77 of file SampleReader.h.
|
inline |
Checks if the last read operation has reached the end of input
Definition at line 66 of file SampleReader.h.
Referenced by Kwave::AsciiEncoder::encode(), Kwave::WavEncoder::encode(), Kwave::MP3Encoder::encode(), Kwave::MultiTrackReader::eof(), fillBuffer(), Kwave::NormalizePlugin::getMaxPower(), Kwave::NormalizePlugin::getMaxPowerOfTrack(), Kwave::Writer::operator<<(), read(), and Kwave::PlaybackController::run_wrapper().
|
protected |
Fills the sample buffer
Definition at line 75 of file SampleReader.cpp.
References eof(), Kwave::SampleArray::isEmpty(), m_buffer, m_buffer_position, m_buffer_used, m_last, m_progress_time, m_src_position, MIN_PROGRESS_INTERVAL, proceeded(), readSamples(), Kwave::SampleArray::size(), and Kwave::toUint().
Referenced by operator>>().
|
inline |
Returns the position of the first sample
Definition at line 116 of file SampleReader.h.
Referenced by Kwave::MultiTrackReader::proceeded().
|
virtual |
Each KwaveSampleSource has to derive this method for producing sample data. It then should emit a signal like this: "output(SampleArray &data)"
Implements Kwave::SampleSource.
Definition at line 305 of file SampleReader.cpp.
References Kwave::StreamObject::blockSize(), and output().
|
inline |
Returns the position of the last sample
Definition at line 121 of file SampleReader.h.
Referenced by Kwave::MultiTrackReader::proceeded().
void Kwave::SampleReader::minMax | ( | sample_index_t | first, |
sample_index_t | last, | ||
sample_t & | min, | ||
sample_t & | max | ||
) |
Returns the minimum and maximum sample value within a range of samples.
first | index of the first sample |
last | index of the last sample |
min | receives the lowest value or 0 if no samples are in range |
max | receives the highest value or 0 if no samples are in range |
Definition at line 103 of file SampleReader.cpp.
References Kwave::Stripe::end(), Kwave::Stripe::length(), m_stripes, Kwave::Stripe::minMax(), SAMPLE_MAX, SAMPLE_MIN, Kwave::Stripe::start(), and Kwave::toUint().
Referenced by Kwave::OverViewCache::getMinMax(), and Kwave::TrackPixmap::validateBuffer().
Kwave::SampleReader & Kwave::SampleReader::operator>> | ( | sample_t & | sample | ) |
Reads one single sample.
Definition at line 278 of file SampleReader.cpp.
References fillBuffer(), m_buffer, m_buffer_position, and m_buffer_used.
Kwave::SampleReader & Kwave::SampleReader::operator>> | ( | Kwave::SampleArray & | sample | ) |
Reads a full buffer of samples. If the buffer cannot be filled, it will be shrinked to the number of samples that were really read.
Definition at line 289 of file SampleReader.cpp.
References read(), Kwave::SampleArray::resize(), and Kwave::SampleArray::size().
|
signal |
Interface for the signal/slot based streaming API.
data | sample data that has been read |
Referenced by goOn().
|
inline |
Returns the current read position.
Definition at line 111 of file SampleReader.h.
Referenced by Kwave::MultiTrackReader::proceeded(), and seek().
|
signal |
Emitted when the internal buffer is filled or the reader is closed
Referenced by fillBuffer(), read(), and reset().
unsigned int Kwave::SampleReader::read | ( | Kwave::SampleArray & | buffer, |
unsigned int | dstoff, | ||
unsigned int | length | ||
) |
Reads samples into a buffer.
buffer | the destination buffer to receive the samples |
dstoff | offset within the destination buffer |
length | number of samples to read |
Definition at line 137 of file SampleReader.cpp.
References eof(), m_buffer, m_buffer_position, m_buffer_used, m_last, m_progress_time, m_src_position, MEMCPY, MIN_PROGRESS_INTERVAL, proceeded(), readSamples(), Kwave::SampleArray::size(), and Kwave::toUint().
Referenced by Kwave::NormalizePlugin::getMaxPowerOfTrack(), Kwave::Writer::operator<<(), operator>>(), and Kwave::TrackPixmap::validateBuffer().
|
protected |
Read a block of samples, with padding if necessary.
offset | position where to start the read operation |
buffer | receives the samples |
buf_offset | offset within the buffer |
length | number of samples to read |
Definition at line 313 of file SampleReader.cpp.
References Kwave::Stripe::end(), Kwave::Stripe::length(), m_mode, m_src_position, m_stripes, padBuffer(), Kwave::Stripe::read(), Kwave::SinglePassForward, Kwave::SampleArray::size(), Kwave::Stripe::start(), and Kwave::toUint().
Referenced by fillBuffer(), and read().
void Kwave::SampleReader::reset | ( | ) |
Resets the stream to it's start
Definition at line 52 of file SampleReader.cpp.
References m_buffer_position, m_buffer_used, m_first, m_src_position, and proceeded().
Referenced by Kwave::MultiTrackReader::reset().
void Kwave::SampleReader::seek | ( | sample_index_t | pos | ) |
Seeks to a given position
Definition at line 237 of file SampleReader.cpp.
References m_buffer_position, m_buffer_used, m_last_seek_pos, m_mode, m_src_position, m_stripes, pos(), Kwave::SinglePassReverse, and skip().
Referenced by Kwave::ReversePlugin::reverseSlice(), Kwave::MultiTrackReader::seek(), and Kwave::TrackPixmap::validateBuffer().
void Kwave::SampleReader::skip | ( | sample_index_t | count | ) |
Skips a number of samples.
Definition at line 213 of file SampleReader.cpp.
References m_buffer_position, m_buffer_used, m_mode, m_src_position, m_stripes, and Kwave::SinglePassForward.
Referenced by seek(), and Kwave::MultiTrackReader::skip().
|
private |
intermediate buffer for the input data
Definition at line 190 of file SampleReader.h.
Referenced by fillBuffer(), operator>>(), and read().
|
private |
read position within the buffer
Definition at line 196 of file SampleReader.h.
Referenced by fillBuffer(), operator>>(), read(), reset(), seek(), and skip().
|
private |
number of used elements in the buffer
Definition at line 193 of file SampleReader.h.
Referenced by fillBuffer(), operator>>(), read(), reset(), seek(), and skip().
|
private |
|
private |
last sample index
Definition at line 187 of file SampleReader.h.
Referenced by fillBuffer(), and read().
|
private |
last seek position, needed in SinglePassReverse mode
Definition at line 202 of file SampleReader.h.
Referenced by seek().
|
private |
operation mode of the reader, see Kwave::ReaderMode
Definition at line 170 of file SampleReader.h.
Referenced by readSamples(), seek(), and skip().
|
private |
timer for limiting the number of progress signals per second
Definition at line 199 of file SampleReader.h.
Referenced by fillBuffer(), read(), and SampleReader().
|
private |
Current sample position, related to the source of the samples. Does not reflect the position of the next sample to be read out due to internal buffering.
Definition at line 181 of file SampleReader.h.
Referenced by fillBuffer(), read(), readSamples(), reset(), seek(), and skip().
|
private |
list of stipes in range
Definition at line 173 of file SampleReader.h.
Referenced by minMax(), readSamples(), seek(), and skip().