21 #include <KLocalizedString> 24 #include <QListIterator> 25 #include <QStringList> 45 const QVariantList &args)
46 :
Kwave::
Plugin(parent, args), m_params(), m_new_rate(0.0),
67 if (params.count() < 1)
return -EINVAL;
72 if (!ok)
return -EINVAL;
75 if (params.count() == 2) {
76 if (params[1] !=
_(
"all"))
97 if ((old_rate <= 0) || qFuzzyCompare(old_rate,
m_new_rate))
return;
105 QList<unsigned int> tracks;
108 last = (length) ? (length - 1) : 0;
111 length =
selection(&tracks, &first, &last,
true);
119 qDebug(
"SampleRatePlugin: from %9lu - %9lu (%9lu)",
120 static_cast<unsigned long int>(first),
121 static_cast<unsigned long int>(last),
122 static_cast<unsigned long int>(length));
123 if (!length || tracks.isEmpty())
return;
128 if ((new_length == length) || !new_length)
return;
132 if (new_length > length) {
133 qDebug(
"SampleRatePlugin: inserting %lu at %lu",
134 static_cast<unsigned long int>(new_length - length + 1),
135 static_cast<unsigned long int>(last + 1));
136 mgr.
insertSpace(last + 1, new_length - length + 1, tracks);
140 mgr, tracks, first, last);
143 connect(&source, SIGNAL(progress(qreal)),
145 Qt::BlockingQueuedConnection);
147 i18n(
"Changing sample rate from %1 kHz to %2 kHz...",
153 tracks.count(),
this);
154 converter.
setAttribute(SLOT(setRatio(QVariant)), QVariant(ratio));
158 first, first + new_length - 1);
183 if (written < length) {
190 if (!meta.isEmpty()) {
195 (ratio > 1) ? it.toBack() : it.toFront();
196 while ((ratio > 1) ? it.hasPrevious() : it.hasNext()) {
198 it.previous().value() : it.next().value();
200 QStringList properties =
202 foreach (
const QString &property, properties) {
207 m[property].toULongLong());
208 if (pos < first)
continue;
209 if (pos > last)
continue;
225 length =
selection(Q_NULLPTR, &first, &last,
false);
231 length = last - first + 1;
250 #include "SampleRatePlugin.moc"
void selectRange(sample_index_t offset, sample_index_t length)
bool insertSpace(sample_index_t offset, sample_index_t length, const QList< unsigned int > &track_list)
Kwave::MetaDataList & metaData()
virtual void run(QStringList params) Q_DECL_OVERRIDE
Kwave::SignalManager & signalManager()
bool deleteRange(sample_index_t offset, sample_index_t length, const QList< unsigned int > &track_list)
int interpreteParameters(QStringList ¶ms)
bool connect(Kwave::StreamObject &source, const char *output, Kwave::StreamObject &sink, const char *input)
virtual void goOn() Q_DECL_OVERRIDE
void setRate(double rate)
void setFileInfo(const Kwave::FileInfo &new_info, bool with_undo)
virtual sample_index_t signalLength()
virtual ~SampleRatePlugin() Q_DECL_OVERRIDE
const QList< unsigned int > allTracks()
#define KWAVE_PLUGIN(name, class)
virtual void updateProgress(qreal progress)
void setProgressText(const QString &text)
void setAttribute(const char *attribute, const QVariant &value)
virtual sample_index_t selection(QList< unsigned int > *tracks=Q_NULLPTR, sample_index_t *left=Q_NULLPTR, sample_index_t *right=Q_NULLPTR, bool expand_if_empty=false)