kwave  18.07.70
Kwave::MultiWriter Class Reference

#include <MultiWriter.h>

Inheritance diagram for Kwave::MultiWriter:
Inheritance graph
Collaboration diagram for Kwave::MultiWriter:
Collaboration graph

Public Slots

void cancel ()
 

Signals

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

Public Member Functions

 MultiWriter ()
 
virtual ~MultiWriter () Q_DECL_OVERRIDE
 
virtual sample_index_t last () const
 
virtual void flush ()
 
virtual void clear () Q_DECL_OVERRIDE
 
virtual bool insert (unsigned int track, Kwave::Writer *writer) Q_DECL_OVERRIDE
 
bool isCanceled () const
 
- Public Member Functions inherited from Kwave::MultiTrackSink< Kwave::Writer, false >
 MultiTrackSink (unsigned int tracks, QObject *parent=Q_NULLPTR)
 
virtual ~MultiTrackSink () Q_DECL_OVERRIDE
 
virtual bool done () const Q_DECL_OVERRIDE
 
virtual unsigned int tracks () const Q_DECL_OVERRIDE
 
virtual Kwave::Writerat (unsigned int track) const
 
virtual Kwave::Writeroperator[] (unsigned int track) Q_DECL_OVERRIDE
 
- Public Member Functions inherited from Kwave::SampleSink
 SampleSink (QObject *parent=Q_NULLPTR)
 
virtual ~SampleSink ()
 
- 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

bool m_canceled
 

Private Slots

void proceeded ()
 

Additional Inherited Members

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

Detailed Description

A MultiWriter encapsulates a set of Writers for easier use of multi-track signals.

Definition at line 38 of file MultiWriter.h.

Constructor & Destructor Documentation

◆ MultiWriter()

Kwave::MultiWriter::MultiWriter ( )

Default constructor

Definition at line 24 of file MultiWriter.cpp.

◆ ~MultiWriter()

Kwave::MultiWriter::~MultiWriter ( )
virtual

Destructor

Definition at line 31 of file MultiWriter.cpp.

References clear().

32 {
33  clear();
34 }
virtual void clear() Q_DECL_OVERRIDE
Definition: MultiWriter.cpp:97
Here is the call graph for this function:

Member Function Documentation

◆ cancel

void Kwave::MultiWriter::cancel ( )
slot

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

Definition at line 79 of file MultiWriter.cpp.

References m_canceled.

80 {
81  m_canceled = true;
82 }

◆ clear()

◆ flush()

void Kwave::MultiWriter::flush ( )
virtual

Flushes all streams

Definition at line 103 of file MultiWriter.cpp.

References Kwave::Writer::flush(), and Kwave::MultiTrackSink< Kwave::Writer, false >::tracks().

Referenced by Kwave::MimeData::decode(), Kwave::SignalManager::loadFile(), Kwave::RecordPlugin::recordStopped(), Kwave::SampleRatePlugin::run(), Kwave::NormalizePlugin::run(), Kwave::RecordPlugin::stateChanged(), and Kwave::MultiTrackWriter::~MultiTrackWriter().

104 {
105  const unsigned int tracks = this->tracks();
106  for (unsigned int track = 0; track < tracks; ++track) {
107  Kwave::Writer *w = (*this)[track];
108  if (w) w->flush();
109  }
110 }
virtual unsigned int tracks() const Q_DECL_OVERRIDE
bool flush()
Definition: Writer.h:94
Here is the call graph for this function:
Here is the caller graph for this function:

◆ insert()

bool Kwave::MultiWriter::insert ( unsigned int  track,
Kwave::Writer writer 
)
virtual
See also
Kwave::MultiTrackSink<Kwave::Writer>::insert()

Reimplemented from Kwave::MultiTrackSink< Kwave::Writer, false >.

Definition at line 37 of file MultiWriter.cpp.

References Kwave::connect(), Kwave::MultiTrackSink< SINK, INITIALIZE >::insert(), and proceeded().

Referenced by Kwave::MultiTrackWriter::init(), and Kwave::MultiStreamWriter::MultiStreamWriter().

38 {
39  if (writer) {
40  connect(
41  writer, SIGNAL(proceeded()),
42  this, SLOT(proceeded()),
43  Qt::DirectConnection
44  );
45  }
47 }
bool connect(Kwave::StreamObject &source, const char *output, Kwave::StreamObject &sink, const char *input)
Definition: Connect.cpp:48
virtual bool insert(unsigned int track, SINK *sink)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ isCanceled()

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

returns true if the transfer has been canceled

Definition at line 64 of file MultiWriter.h.

Referenced by Kwave::OggDecoder::decode(), Kwave::AudiofileDecoder::decode(), Kwave::AsciiDecoder::decode(), Kwave::WavDecoder::decode(), Kwave::MP3Decoder::fillInput(), and Kwave::FlacDecoder::write_callback().

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

◆ last()

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

Returns the last sample index of all streams

Definition at line 85 of file MultiWriter.cpp.

References Kwave::MultiTrackSink< Kwave::Writer, false >::at(), Kwave::Writer::last(), and Kwave::MultiTrackSink< Kwave::Writer, false >::tracks().

Referenced by Kwave::AsciiDecoder::decode(), Kwave::VorbisDecoder::decode(), Kwave::FlacDecoder::decode(), Kwave::SignalManager::loadFile(), Kwave::RecordPlugin::processBuffer(), and Kwave::RecordPlugin::recordStopped().

86 {
87  sample_index_t last = 0;
88  const unsigned int tracks = this->tracks();
89  for (unsigned int track = 0; track < tracks; ++track) {
90  const Kwave::Writer *w = at(track);
91  if (w && w->last() > last) last = w->last();
92  }
93  return last;
94 }
virtual unsigned int tracks() const Q_DECL_OVERRIDE
quint64 sample_index_t
Definition: Sample.h:28
virtual sample_index_t last() const
Definition: MultiWriter.cpp:85
sample_index_t last() const
Definition: Writer.h:114
virtual Kwave::Writer * at(unsigned int track) const
Here is the call graph for this function:
Here is the caller graph for this function:

◆ proceeded

void Kwave::MultiWriter::proceeded ( )
privateslot

Connected to each Writer to get informed about their progress.

Definition at line 50 of file MultiWriter.cpp.

References Kwave::MultiTrackSink< Kwave::Writer, false >::at(), Kwave::Writer::first(), Kwave::Writer::last(), Kwave::Writer::mode(), Kwave::Overwrite, Kwave::Writer::position(), progress(), Kwave::MultiTrackSink< Kwave::Writer, false >::tracks(), and written().

Referenced by insert().

51 {
52  bool overwrite = tracks() && at(0) && (at(0)->mode() == Kwave::Overwrite);
53  if (overwrite) {
54  qreal sum = 0;
55  qreal total = 0;
56  unsigned int track;
57  const unsigned int tracks = this->tracks();
58  for (track = 0; track < tracks; ++track) {
59  const Kwave::Writer *w = at(track);
60  if (w) {
61  sum += w->position() - w->first();
62  total += w->last() - w->first();
63  }
64  }
65  emit progress(qreal(100.0) * sum / total);
66  } else {
67  quint64 sum = 0;
68  unsigned int track;
69  const unsigned int tracks = this->tracks();
70  for (track = 0; track < tracks; ++track) {
71  const Kwave::Writer *w = at(track);
72  if (w) sum += w->position() - w->first();
73  }
74  emit written(sum);
75  }
76 }
virtual unsigned int tracks() const Q_DECL_OVERRIDE
void progress(qreal percent)
void written(quint64 samples)
sample_index_t last() const
Definition: Writer.h:114
sample_index_t position() const
Definition: Writer.h:122
sample_index_t first() const
Definition: Writer.h:108
virtual Kwave::Writer * at(unsigned int track) const
Kwave::InsertMode mode() const
Definition: Writer.h:125
Here is the call graph for this function:
Here is the caller graph for this function:

◆ progress

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

Emits the current progress in percent, if the writers are in "overwrite" mode

See also
written for insert and append mode

Referenced by proceeded().

Here is the caller graph for this function:

◆ written

void Kwave::MultiWriter::written ( quint64  samples)
signal

Emitts the currently written samples, summed up over all tracks, if the writers are in "insert" or "append" mode

See also
progress for overwrite mode

Referenced by proceeded().

Here is the caller graph for this function:

Member Data Documentation

◆ m_canceled

bool Kwave::MultiWriter::m_canceled
protected

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

Definition at line 103 of file MultiWriter.h.

Referenced by cancel().


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