File: PlayBackPlugin.h

package info (click to toggle)
kwave 25.04.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 23,272 kB
  • sloc: cpp: 56,173; xml: 817; perl: 688; sh: 57; makefile: 11
file content (130 lines) | stat: -rw-r--r-- 4,233 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
/***************************************************************************
       PlayBackPlugin.h  -  plugin for playback and playback configuration
                             -------------------
    begin                : Sun May 13 2001
    copyright            : (C) 2001 by Thomas Eschenbacher
    email                : Thomas.Eschenbacher@gmx.de
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 ***************************************************************************/

#ifndef PLAY_BACK_PLUGIN_H
#define PLAY_BACK_PLUGIN_H

#include "config.h"

#include <QMutex>
#include <QPointer>
#include <QString>

#include "libkwave/PlayBackParam.h"
#include "libkwave/PlaybackDeviceFactory.h"
#include "libkwave/Plugin.h"
#include "libkwave/Sample.h"

namespace Kwave
{
    class PlaybackController;
    class PlayBackDevice;
    class PlayBackDialog;
    class SampleSink;

    class PlayBackPlugin :public Kwave::Plugin,
                          public Kwave::PlaybackDeviceFactory
    {
        Q_OBJECT
    public:

        /**
         * Constructor
         * @param parent reference to our plugin manager
         * @param args argument list [unused]
         */
        PlayBackPlugin(QObject *parent, const QVariantList &args);

        /** Destructor */
        ~PlayBackPlugin() override;

        /**
         * Gets called when the plugin is first loaded and connects itself
         * to the playback controller and the current signal.
         */
        void load(QStringList &params) override;

        /**
         * Gets called before the plugin is unloaded.
         */
        void unload() override;

        /** @see Kwave::Plugin::setup() */
        virtual QStringList *setup(QStringList &previous_params)
            override;

        /**
         * Starts a playback test sequence
         * @param params list of strings with parameters (unused)
         */
        void run(QStringList params) override;

    signals:

        /** emits the progress of the playback test, from thread context */
        void sigTestProgress(int percent);

    public slots:

        /**
         * Plays a sample sound for testing the playback
         */
        void testPlayBack();

    protected:

        /**
         * Interpretes a given parameter list and sets up internal
         * parameters accordingly.
         * @param params reference to a QStringList with parameters
         * @return the detected playback parameters
         */
        Kwave::PlayBackParam interpreteParameters(QStringList &params);

        /**
         * Create a playback device matching the given playback method.
         * @param method a playback_method_t (aRts, ALSA, OSS...)
         * @return a new PlayBackDevice or 0 if failed
         */
        virtual Kwave::PlayBackDevice *createDevice(
            Kwave::playback_method_t method) override;

        /**
         * Returns a list of supported playback methods.
         * @return list of all supported playback methods, should not contain
         *         "any" or "invalid"
         */
        virtual QList<Kwave::playback_method_t> supportedMethods()
            override;

    private:

        /** dialog for the playback setup */
        QPointer<Kwave::PlayBackDialog> m_dialog;

        /** reference to the playback controller */
        Kwave::PlaybackController &m_playback_controller;

        /** sample sink, for playback test */
        Kwave::SampleSink *m_playback_sink;
    };
}

#endif /* PLAY_BACK_PLUGIN_H */

//***************************************************************************
//***************************************************************************