Phonon

abstractaudiodataoutput.h
1/* This file is part of the KDE project
2 Copyright (C) 2005-2006,2008 Matthias Kretz <kretz@kde.org>
3
4 This library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) version 3, or any
8 later version accepted by the membership of KDE e.V. (or its
9 successor approved by the membership of KDE e.V.), Nokia Corporation
10 (or its successors, if any) and the KDE Free Qt Foundation, which shall
11 act as a proxy defined in Section 6 of version 3 of the license.
12
13 This library is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 Lesser General Public License for more details.
17
18 You should have received a copy of the GNU Lesser General Public
19 License along with this library. If not, see <http://www.gnu.org/licenses/>.
20
21*/
22#ifndef PHONON_X_ABSTRACTAUDIODATAOUTPUT_H
23#define PHONON_X_ABSTRACTAUDIODATAOUTPUT_H
24
25#include "export.h"
26#include "../medianode.h"
27#include "../phonondefs.h"
28#include "audioformat.h"
29
30#ifndef K_DOXYGEN
31template<typename T> class QSet;
32#endif
33
34namespace Phonon
35{
36namespace Experimental
37{
38
39class Packet;
40class AbstractAudioDataOutputPrivate;
41
42/**
43 * \short This class gives you the audio data.
44 *
45 * This class implements a special AbstractAudioOutput that gives your
46 * application the audio data. This class is usable for realtime performance.
47 *
48 * \author Matthias Kretz <kretz@kde.org>
49 */
50class PHONONEXPERIMENTAL_EXPORT AbstractAudioDataOutput : public Phonon::MediaNode
51{
52 P_DECLARE_PRIVATE(AbstractAudioDataOutput)
53 public:
54 /**
55 * Constructs an AbstractAudioDataOutput
56 */
58 ~AbstractAudioDataOutput() override;
59
60 /**
61 * Lists the formats this output is allowed to pass via frameReady.
62 */
63 virtual QSet<AudioFormat> allowedFormats() const;
64
65 // TODO: consider to remove the following function and make the above pure virtual
66 /**
67 * Defaults to AudioFormat().
68 * I.e. 16 bit, stereo, 48000 kHz PCM data.
69 */
70 void setAllowedFormats(const QSet<AudioFormat> &);
71
72 bool isRunning() const;
73
74 /**
75 * This function is called whenever an audio packet is ready for
76 * processing.
77 *
78 * \warning packetReady can get called from any thread (other than the
79 * main thread or the thread affinity of this QObject).
80 */
81 virtual void packetReady(const Packet &) = 0;
82
83 /**
84 * This function is called after the last packetReady of a media was
85 * called.
86 */
87 void endOfMedia();
88
89 void setRunning(bool running);
90 void start();
91 void stop();
92
93 protected:
94 AbstractAudioDataOutput(AbstractAudioDataOutputPrivate &dd);
95};
96
97} // namespace Experimental
98} // namespace Phonon
99
100#endif // PHONON_X_ABSTRACTAUDIODATAOUTPUT_H
void endOfMedia()
This function is called after the last packetReady of a media was called.
virtual void packetReady(const Packet &)=0
This function is called whenever an audio packet is ready for processing.
Class to access memory preallocated by PacketPool.
Definition packet.h:39
void stop(Ekos::AlignState mode)
Q_SCRIPTABLE Q_NOREPLY void start()
This file is part of the KDE documentation.
Documentation copyright © 1996-2024 The KDE developers.
Generated on Tue Mar 26 2024 11:20:24 by doxygen 1.10.0 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.