27 #include <QApplication> 30 #include <QLatin1Char> 32 #include <QMutexLocker> 33 #include <QProgressDialog> 71 #define PLAYBACK_TEST_FREQUENCY 440.0 75 const QVariantList &args)
78 m_playback_controller(manager().playbackController()),
79 m_playback_sink(Q_NULLPTR)
103 if (params.count() != 5)
return default_params;
107 unsigned int method = param.toUInt(&ok);
109 if (!ok)
return default_params;
115 playback_params.
device = param;
119 playback_params.
channels = param.toUInt(&ok);
121 if (!ok)
return default_params;
127 if (!ok)
return default_params;
131 playback_params.
bufbase = param.toUInt(&ok);
133 if (!ok)
return default_params;
135 return playback_params;
159 QStringList *result = Q_NULLPTR;
170 manager().playbackController(),
182 if (
m_dialog->exec() == QDialog::Accepted) {
184 result =
new QStringList();
192 param = param.setNum(
193 static_cast<unsigned int>(playback_params.
method));
194 result->append(param);
197 param = playback_params.
device;
198 result->append(param);
201 param = param.setNum(playback_params.
channels);
202 result->append(param);
206 result->append(param);
209 param = param.setNum(playback_params.
bufbase);
210 result->append(param);
212 qDebug(
"new playback params: '%s",
213 DBG(result->join(
_(
"','")) +
_(
"'")));
231 QList<Kwave::playback_method_t> methods;
233 #ifdef HAVE_QT_AUDIO_SUPPORT 237 #ifdef HAVE_PULSEAUDIO_SUPPORT 241 #ifdef HAVE_ALSA_SUPPORT 245 #ifdef HAVE_OSS_SUPPORT 257 qDebug(
"PlayBackPlugin::createDevice('%s' [%d])",
259 static_cast<int>(method) );
262 #ifdef HAVE_QT_AUDIO_SUPPORT 267 #ifdef HAVE_PULSEAUDIO_SUPPORT 273 #ifdef HAVE_ALSA_SUPPORT 278 #ifdef HAVE_OSS_SUPPORT 293 const double t_sweep = 1.0;
294 const unsigned int periods = 3;
296 qDebug(
"PlayBackPlugin::run()");
305 unsigned int channels = playback_params.
channels;
306 double rate = playback_params.
rate;
308 Q_ASSERT(rate > 1.0);
309 if (!channels || (rate <= 1.0))
return;
313 double t_period = t_sweep * channels;
324 curve.
insert(0.5 / static_cast<double>(channels), 1.0);
325 curve.
insert(1.0 / static_cast<double>(channels), 0.0);
332 for (
unsigned int i = 0; i < channels; i++) {
334 if (!delay[i])
break;
336 QVariant(i * t_sweep * rate));
372 periods * t_period * rate);
374 while (!
shouldStop() && (samples_written <= samples_max)) {
376 curve_adapter.
goOn();
382 double percent = (
static_cast<double>(samples_written) * 100.0) /
383 static_cast<double>(samples_max);
391 qDebug(
"PlayBackPlugin::testPlayBack()");
398 if (!playback_params.
device.length()) {
400 "Please select a playback device first"));
404 unsigned int channels = playback_params.
channels;
405 double rate = playback_params.
rate;
407 Q_ASSERT(rate > 1.0);
408 if (!channels || (rate <= 1.0))
return;
424 QProgressDialog *progress = Q_NULLPTR;
425 progress =
new QProgressDialog(
m_dialog);
428 progress->setWindowTitle(i18n(
"Playback Test"));
429 progress->setModal(
true);
430 progress->setMinimumDuration(0);
431 progress->setMinimum(0);
432 progress->setMaximum(100);
433 progress->setAutoClose(
false);
434 progress->setValue(0);
435 progress->setLabelText(
437 i18n(
"You should now hear a %1 Hz test tone.<br/><br/>" 438 "(If you hear clicks or dropouts, please increase<br/>" 439 "the buffer size and try again)",
444 Qt::QueuedConnection);
446 Qt::QueuedConnection);
448 Qt::QueuedConnection);
457 QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
460 qDebug(
"waiting...");
480 QApplication::restoreOverrideCursor();
484 #include "PlayBackPlugin.moc" virtual void goOn() Q_DECL_OVERRIDE
void unregisterPlaybackDeviceFactory(Kwave::PlaybackDeviceFactory *factory)
void setDefaultParams(const Kwave::PlayBackParam ¶ms)
void setMethod(Kwave::playback_method_t method)
#define PLAYBACK_TEST_FREQUENCY
PlayBackPlugin(QObject *parent, const QVariantList &args)
Kwave::SampleSink * openMultiTrackPlayback(unsigned int tracks, const Kwave::PlayBackParam *playback_params=Q_NULLPTR)
Kwave::SignalManager & signalManager()
static int sorry(QWidget *widget, QString message, QString caption=QString())
unsigned int bits_per_sample
void insert(double x, double y)
virtual void unload() Q_DECL_OVERRIDE
static void setInteractive(bool interactive)
Kwave::PlaybackController & playbackController()
Kwave::PlayBackDialog * m_dialog
Kwave::PluginManager & manager() const
bool connect(Kwave::StreamObject &source, const char *output, Kwave::StreamObject &sink, const char *input)
virtual void goOn() Q_DECL_OVERRIDE
Kwave::PlayBackParam interpreteParameters(QStringList ¶ms)
virtual void run(QStringList params) Q_DECL_OVERRIDE
void sigDone(Kwave::Plugin *plugin)
virtual void goOn() Q_DECL_OVERRIDE
virtual ~PlayBackPlugin() Q_DECL_OVERRIDE
void registerPlaybackDeviceFactory(Kwave::PlaybackDeviceFactory *factory)
virtual void load(QStringList ¶ms) Q_DECL_OVERRIDE
void sigTestProgress(int percent)
virtual QStringList * setup(QStringList &previous_params) Q_DECL_OVERRIDE
virtual unsigned int blockSize() const
Kwave::SampleSink * m_playback_sink
int execute(QStringList ¶ms)
#define KWAVE_PLUGIN(name, class)
QString name(IDX type) const
Kwave::playback_method_t method
virtual Kwave::PlayBackDevice * createDevice(Kwave::playback_method_t method) Q_DECL_OVERRIDE
Kwave::PlaybackController & m_playback_controller
IDX findFromData(const DATA &data) const
virtual QList< Kwave::playback_method_t > supportedMethods() Q_DECL_OVERRIDE
void setAttribute(const char *attribute, const QVariant &value)
const Kwave::PlayBackParam & params()