[3e4acc]: libkwave / KwaveMultiPlaybackSink.h Maximize Restore History

Download this file

KwaveMultiPlaybackSink.h    83 lines (63 with data), 2.4 kB

 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
/***************************************************************************
KwaveMultiPlaybackSink.h - multi-track Kwave playback sink
-------------------
begin : Sun Nov 04 2007
copyright : (C) 2007 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 _KWAVE_MULTI_PLAYBACK_SINK_H_
#define _KWAVE_MULTI_PLAYBACK_SINK_H_
#include "config.h"
#include <QBitArray>
#include <QMutex>
#include <QVector>
#include <kdemacros.h>
#include "libkwave/KwaveMultiTrackSink.h"
#include "libkwave/KwavePlaybackSink.h"
#include "libkwave/KwaveSampleArray.h"
#include "libkwave/PlayBackDevice.h"
namespace Kwave {
class KDE_EXPORT MultiPlaybackSink
:public Kwave::MultiTrackSink<Kwave::PlaybackSink>
{
Q_OBJECT
public:
/**
* Constructor
* @param tracks number of tracks for playback
* @param device a PlayBackDevice
*/
MultiPlaybackSink(unsigned int tracks, PlayBackDevice *device);
/** Destructor */
virtual ~MultiPlaybackSink();
private slots:
/**
* receives data from one of the tracks
* @param track index of the track [0...tracks-1]
* @param data sample data for the given track
*/
void input(unsigned int track, Kwave::SampleArray data);
private:
/** number of tracks */
unsigned int m_tracks;
/** device used for playback */
PlayBackDevice *m_device;
/** list of input buffers */
QVector< Kwave::SampleArray > m_in_buffer;
/** "filled"-flags for input buffers */
QBitArray m_in_buffer_filled;
/** output buffer for all samples */
Kwave::SampleArray m_out_buffer;
/** mutex for locking against reentrance */
QMutex m_lock;
};
}
#endif /* _KWAVE_MULTI_PLAYBACK_SINK_H_ */