kwave  18.07.70
Kwave::MultiTrackReader Class Reference

#include <MultiTrackReader.h>

Inheritance diagram for Kwave::MultiTrackReader:
Inheritance graph
Collaboration diagram for Kwave::MultiTrackReader:
Collaboration graph

Public Slots

void cancel ()
 
void reset ()
 

Signals

void progress (qreal percent)
 
- Signals inherited from Kwave::StreamObject
void attributeChanged (const QVariant value)
 

Public Member Functions

 MultiTrackReader (Kwave::ReaderMode mode, Kwave::SignalManager &signal_manager, const QList< unsigned int > &track_list, sample_index_t first, sample_index_t last)
 
virtual ~MultiTrackReader () Q_DECL_OVERRIDE
 
virtual sample_index_t first () const
 
virtual sample_index_t last () const
 
virtual bool eof () const
 
virtual bool isEmpty () const
 
bool isCanceled () const
 
virtual bool insert (unsigned int track, Kwave::SampleReader *reader) Q_DECL_OVERRIDE
 
virtual void skip (sample_index_t count)
 
virtual void seek (sample_index_t pos)
 
- Public Member Functions inherited from Kwave::MultiTrackSource< Kwave::SampleReader, false >
 MultiTrackSource (unsigned int tracks, QObject *parent=Q_NULLPTR)
 
virtual ~MultiTrackSource () Q_DECL_OVERRIDE
 
virtual void goOn () Q_DECL_OVERRIDE
 
virtual bool done () const Q_DECL_OVERRIDE
 
virtual unsigned int tracks () const Q_DECL_OVERRIDE
 
virtual Kwave::SampleReaderat (unsigned int track) const
 
virtual Kwave::SampleReaderoperator[] (unsigned int track) Q_DECL_OVERRIDE
 
virtual void clear ()
 
- Public Member Functions inherited from Kwave::SampleSource
 SampleSource (QObject *parent=Q_NULLPTR)
 
virtual ~SampleSource ()
 
- Public Member Functions inherited from Kwave::StreamObject
 StreamObject (QObject *parent=Q_NULLPTR)
 
virtual ~StreamObject ()
 
virtual unsigned int tracksOfPort (const char *port) const
 
virtual Kwave::StreamObjectport (const char *port, unsigned int track)
 
virtual unsigned int blockSize () const
 
void setAttribute (const char *attribute, const QVariant &value)
 

Protected Attributes

sample_index_t m_first
 
sample_index_t m_last
 
bool m_canceled
 

Private Slots

void proceeded ()
 

Private Member Functions

 MultiTrackReader ()
 

Additional Inherited Members

- Static Public Member Functions inherited from Kwave::StreamObject
static void setInteractive (bool interactive)
 

Detailed Description

A MultiTrackReader encapsulates a set of SampleReaders for easier use of multi-track signals.

Definition at line 40 of file MultiTrackReader.h.

Constructor & Destructor Documentation

◆ MultiTrackReader() [1/2]

Kwave::MultiTrackReader::MultiTrackReader ( )
private

◆ MultiTrackReader() [2/2]

Kwave::MultiTrackReader::MultiTrackReader ( Kwave::ReaderMode  mode,
Kwave::SignalManager signal_manager,
const QList< unsigned int > &  track_list,
sample_index_t  first,
sample_index_t  last 
)

Constructor

Parameters
modea reader mode, see Kwave::ReaderMode
signal_managerreference to a SignalManager
track_listarray of indices of tracks for writing
firstindex of the first sample (left)
lastindex of the last sample (right)

Definition at line 33 of file MultiTrackReader.cpp.

References insert(), Kwave::SignalManager::openReader(), and Kwave::MultiTrackSource< Kwave::SampleReader, false >::tracks().

40 {
41  unsigned int index = 0;
42 
43  foreach(unsigned int track, track_list) {
44  Kwave::SampleReader *s = signal_manager.openReader(
45  mode, track, first, last);
46  if (!s) break;
47  insert(index++, s);
48  Q_ASSERT(index == tracks());
49  }
50 }
virtual sample_index_t first() const
virtual unsigned int tracks() const Q_DECL_OVERRIDE
Kwave::SampleReader * openReader(Kwave::ReaderMode mode, unsigned int track, sample_index_t left=0, sample_index_t right=SAMPLE_INDEX_MAX)
virtual sample_index_t last() const
virtual bool insert(unsigned int track, Kwave::SampleReader *reader) Q_DECL_OVERRIDE
Here is the call graph for this function:

◆ ~MultiTrackReader()

Kwave::MultiTrackReader::~MultiTrackReader ( )
virtual

Destructor

Definition at line 53 of file MultiTrackReader.cpp.

References Kwave::MultiTrackSource< Kwave::SampleReader, false >::clear().

Here is the call graph for this function:

Member Function Documentation

◆ cancel

void Kwave::MultiTrackReader::cancel ( )
slot

Can be connected to some progress dialog to cancel the current transfer.

Definition at line 151 of file MultiTrackReader.cpp.

References m_canceled.

152 {
153  m_canceled = true;
154 }

◆ eof()

bool Kwave::MultiTrackReader::eof ( ) const
virtual

Returns true if one of the readers has reached eof()

Definition at line 71 of file MultiTrackReader.cpp.

References Kwave::MultiTrackSource< Kwave::SampleReader, false >::at(), Kwave::SampleReader::eof(), and Kwave::MultiTrackSource< Kwave::SampleReader, false >::tracks().

Referenced by Kwave::VorbisEncoder::encode(), Kwave::OpusEncoder::fillInBuffer(), Kwave::NormalizePlugin::getMaxPower(), Kwave::SonagramPlugin::makeAllValid(), Kwave::SampleRatePlugin::run(), and Kwave::NormalizePlugin::run().

72 {
73  const unsigned int c = tracks();
74  for (unsigned int r = 0; r < c; r++) {
75  Kwave::SampleReader *reader = at(r);
76  Q_ASSERT(reader);
77  if (!reader) continue;
78  if (!reader->eof()) return false;
79  }
80  return true;
81 }
virtual unsigned int tracks() const Q_DECL_OVERRIDE
bool eof() const
Definition: SampleReader.h:66
virtual Kwave::SampleReader * at(unsigned int track) const
Here is the call graph for this function:
Here is the caller graph for this function:

◆ first()

sample_index_t Kwave::MultiTrackReader::first ( ) const
virtual

Returns the offset of the reader, as passed to the constructor as "first"

Definition at line 59 of file MultiTrackReader.cpp.

References m_first.

Referenced by Kwave::MimeData::encode(), and Kwave::MP3Encoder::encode().

60 {
61  return m_first;
62 }
Here is the caller graph for this function:

◆ insert()

bool Kwave::MultiTrackReader::insert ( unsigned int  track,
Kwave::SampleReader reader 
)
virtual
See also
QList::insert()

Reimplemented from Kwave::MultiTrackSource< Kwave::SampleReader, false >.

Definition at line 114 of file MultiTrackReader.cpp.

References Kwave::connect(), Kwave::MultiTrackSource< SOURCE, INITIALIZE >::insert(), and proceeded().

Referenced by MultiTrackReader().

116 {
117  if (reader) {
118  connect(
119  reader, SIGNAL(proceeded()),
120  this, SLOT(proceeded()),
121  Qt::DirectConnection
122  );
123  }
125  track, reader);
126 }
bool connect(Kwave::StreamObject &source, const char *output, Kwave::StreamObject &sink, const char *input)
Definition: Connect.cpp:48
virtual bool insert(unsigned int track, SOURCE *source)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ isCanceled()

bool Kwave::MultiTrackReader::isCanceled ( ) const
inline

returns true if the transfer has been canceled

Definition at line 89 of file MultiTrackReader.h.

Referenced by Kwave::AsciiEncoder::encode(), Kwave::WavEncoder::encode(), Kwave::MP3Encoder::encode(), Kwave::FlacEncoder::encode(), Kwave::VorbisEncoder::encode(), and Kwave::OpusEncoder::encode().

89 { return m_canceled; }
Here is the caller graph for this function:

◆ isEmpty()

virtual bool Kwave::MultiTrackReader::isEmpty ( ) const
inlinevirtual
See also
QList::isEmpty()

Definition at line 83 of file MultiTrackReader.h.

Referenced by Kwave::OverViewCache::getMinMax().

Here is the caller graph for this function:

◆ last()

sample_index_t Kwave::MultiTrackReader::last ( ) const
virtual

Returns the last sample offset of the reader, as passed to the constructor as "last"

Definition at line 65 of file MultiTrackReader.cpp.

References m_last.

Referenced by Kwave::MimeData::encode(), and Kwave::MP3Encoder::encode().

66 {
67  return m_last;
68 }
Here is the caller graph for this function:

◆ proceeded

void Kwave::MultiTrackReader::proceeded ( )
privateslot

Connected to each SampleReader to get informed about their progress.

Definition at line 84 of file MultiTrackReader.cpp.

References Kwave::MultiTrackSource< Kwave::SampleReader, false >::at(), Kwave::SampleReader::first(), Kwave::SampleReader::last(), Kwave::SampleReader::pos(), progress(), and Kwave::MultiTrackSource< Kwave::SampleReader, false >::tracks().

Referenced by insert().

85 {
86  qreal sum = 0;
87  qreal total = 0;
88  unsigned int track;
89  const unsigned int n_tracks = tracks();
90  for (track = 0; track < n_tracks; ++track) {
91  Kwave::SampleReader *r = at(track);
92  if (r) {
93  sum += (r->pos() - r->first());
94  total += (r->last() - r->first() + 1);
95  }
96  }
97 
98  emit progress(qreal(100.0) * sum / total);
99 }
void progress(qreal percent)
virtual unsigned int tracks() const Q_DECL_OVERRIDE
sample_index_t last() const
Definition: SampleReader.h:121
sample_index_t first() const
Definition: SampleReader.h:116
sample_index_t pos() const
Definition: SampleReader.h:111
virtual Kwave::SampleReader * at(unsigned int track) const
Here is the call graph for this function:
Here is the caller graph for this function:

◆ progress

void Kwave::MultiTrackReader::progress ( qreal  percent)
signal

Emits the current progress in percent [0...100].

Referenced by proceeded(), and reset().

Here is the caller graph for this function:

◆ reset

void Kwave::MultiTrackReader::reset ( )
slot

Resets all readers to zero

Definition at line 102 of file MultiTrackReader.cpp.

References Kwave::MultiTrackSource< Kwave::SampleReader, false >::at(), progress(), Kwave::SampleReader::reset(), and Kwave::MultiTrackSource< Kwave::SampleReader, false >::tracks().

Referenced by Kwave::FilterPlugin::run(), and Kwave::PlaybackController::run_wrapper().

103 {
104  unsigned int track;
105  const unsigned int n_tracks = tracks();
106  for (track=0; track < n_tracks; ++track) {
107  Kwave::SampleReader *r = at(track);
108  if (r) r->reset();
109  }
110  emit progress(0);
111 }
void progress(qreal percent)
virtual unsigned int tracks() const Q_DECL_OVERRIDE
virtual Kwave::SampleReader * at(unsigned int track) const
Here is the call graph for this function:
Here is the caller graph for this function:

◆ seek()

void Kwave::MultiTrackReader::seek ( sample_index_t  pos)
virtual

Seeks to a given position

Definition at line 140 of file MultiTrackReader.cpp.

References Kwave::MultiTrackSource< Kwave::SampleReader, false >::at(), Kwave::SampleReader::seek(), and Kwave::MultiTrackSource< Kwave::SampleReader, false >::tracks().

Referenced by Kwave::SonagramPlugin::makeAllValid(), and Kwave::PlaybackController::run_wrapper().

141 {
142  unsigned int track;
143  const unsigned int n_tracks = tracks();
144  for (track=0; track < n_tracks; ++track) {
145  Kwave::SampleReader *r = at(track);
146  if (r) r->seek(pos);
147  }
148 }
virtual unsigned int tracks() const Q_DECL_OVERRIDE
void seek(sample_index_t pos)
virtual Kwave::SampleReader * at(unsigned int track) const
Here is the call graph for this function:
Here is the caller graph for this function:

◆ skip()

void Kwave::MultiTrackReader::skip ( sample_index_t  count)
virtual

Skips a number of samples.

Definition at line 129 of file MultiTrackReader.cpp.

References Kwave::MultiTrackSource< Kwave::SampleReader, false >::at(), Kwave::SampleReader::skip(), and Kwave::MultiTrackSource< Kwave::SampleReader, false >::tracks().

Referenced by Kwave::PlaybackController::run_wrapper().

130 {
131  unsigned int track;
132  const unsigned int n_tracks = tracks();
133  for (track=0; track < n_tracks; ++track) {
134  Kwave::SampleReader *r = at(track);
135  if (r) r->skip(count);
136  }
137 }
void skip(sample_index_t count)
virtual unsigned int tracks() const Q_DECL_OVERRIDE
virtual Kwave::SampleReader * at(unsigned int track) const
Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ m_canceled

bool Kwave::MultiTrackReader::m_canceled
protected

Initialized as false, will be true if the transfer has been canceled

Definition at line 138 of file MultiTrackReader.h.

Referenced by cancel().

◆ m_first

sample_index_t Kwave::MultiTrackReader::m_first
protected

index of the first sample to read

Definition at line 129 of file MultiTrackReader.h.

Referenced by first().

◆ m_last

sample_index_t Kwave::MultiTrackReader::m_last
protected

index of the last sample to read

Definition at line 132 of file MultiTrackReader.h.

Referenced by last().


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