Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
qpulseaudiosource_p.h
Go to the documentation of this file.
1
// Copyright (C) 2016 The Qt Company Ltd.
2
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4
//
5
// W A R N I N G
6
// -------------
7
//
8
// This file is not part of the Qt API. It exists for the convenience
9
// of other Qt classes. This header file may change from version to
10
// version without notice, or even be removed.
11
//
12
// We mean it.
13
//
14
15
#
ifndef
QPULSEAUDIOSOURCE_P_H
16
#
define
QPULSEAUDIOSOURCE_P_H
17
18
#
include
<
QtCore
/
qtclasshelpermacros
.
h
>
19
20
#
include
<
QtMultimedia
/
qaudio
.
h
>
21
#
include
<
QtMultimedia
/
qaudiodevice
.
h
>
22
#
include
<
QtMultimedia
/
private
/
qaudio_platform_implementation_support_p
.
h
>
23
#
include
<
QtMultimedia
/
private
/
qaudiosystem_p
.
h
>
24
#
include
<
QtMultimedia
/
private
/
qpulsehelpers_p
.
h
>
25
26
QT_BEGIN_NAMESPACE
27
28
namespace
QPulseAudioInternal
{
29
30
class
QPulseAudioSource;
31
using
namespace
QtMultimediaPrivate
;
32
33
struct
QPulseAudioSourceStream
final
:
QPlatformAudioSourceStream
34
{
35
using
SourceType
= QPulseAudioSource;
36
37
QPulseAudioSourceStream(QAudioDevice,
const
QAudioFormat &,
38
std::optional<qsizetype> ringbufferSize, QPulseAudioSource *parent,
39
float
volume, std::optional<NativePeriodFrames> nativePeriodFrames);
40
Q_DISABLE_COPY_MOVE
(
QPulseAudioSourceStream
)
41
~
QPulseAudioSourceStream
();
42
43
using
QPlatformAudioSourceStream
::
bytesReady
;
44
using
QPlatformAudioSourceStream
::
deviceIsRingbufferReader
;
45
using
QPlatformAudioSourceStream
::
processedDuration
;
46
using
QPlatformAudioSourceStream
::
ringbufferSizeInBytes
;
47
using
QPlatformAudioSourceStream
::
setVolume
;
48
49
bool
start
(QIODevice *device);
50
bool
start
(AudioCallback &&);
51
QIODevice
*
start
();
52
void
stop
(
ShutdownPolicy
);
53
void
suspend
();
54
void
resume
();
55
bool
open
()
const
;
56
57
void
updateStreamIdle
(
bool
idle)
override
;
58
59
private
:
60
enum
class
StreamType : uint8_t
61
{
62
Ringbuffer,
63
Callback,
64
};
65
66
bool
startStream(StreamType);
67
void
installCallbacks(StreamType);
68
void
uninstallCallbacks();
69
70
QPulseAudioSource *m_parent;
71
PAStreamHandle m_stream;
72
std::optional<AudioCallback> m_audioCallback;
73
74
// PulseAudio callbacks
75
void
readCallbackRingbuffer(size_t bytesToRead);
76
void
readCallbackAudioCallback(size_t bytesToRead);
77
};
78
79
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
80
81
class
QPulseAudioSource
final
82
:
public
QPlatformAudioSourceImplementationWithCallback<QPulseAudioSourceStream,
83
QPulseAudioSource>
84
{
85
using
BaseClass = QPlatformAudioSourceImplementationWithCallback<QPulseAudioSourceStream,
86
QPulseAudioSource>;
87
88
public
:
89
QPulseAudioSource(QAudioDevice,
const
QAudioFormat &, QObject *parent);
90
~
QPulseAudioSource
()
override
;
91
92
void
start
(QIODevice *device)
override
;
93
void
start
(AudioCallback &&)
override
;
94
QIODevice
*
start
()
override
;
95
96
private
:
97
bool
validatePulseaudio();
98
};
99
100
}
// namespace QPulseAudioInternal
101
102
QT_END_NAMESPACE
103
104
#
endif
// QPULSEAUDIOSOURCE_P_H
QAudioFormat
The QAudioFormat class stores audio stream parameter information.
Definition
qaudioformat.h:22
QPulseAudioContextManager
Definition
qpulseaudio_contextmanager_p.h:28
QPulseAudioDevices
Definition
qpulseaudiodevices_p.h:27
QPulseAudioDevices::findAudioOutputs
QList< QAudioDevice > findAudioOutputs() const override
Definition
qpulseaudiodevices.cpp:36
QPulseAudioDevices::QPulseAudioDevices
QPulseAudioDevices()
Definition
qpulseaudiodevices.cpp:14
QPulseAudioDevices::findAudioInputs
QList< QAudioDevice > findAudioInputs() const override
Definition
qpulseaudiodevices.cpp:31
QPulseAudioDevices::backendName
QLatin1String backendName() const override
Definition
qpulseaudiodevices_p.h:40
QPulseAudioDevices::createAudioSink
QPlatformAudioSink * createAudioSink(const QAudioDevice &, const QAudioFormat &, QObject *parent) override
Definition
qpulseaudiodevices.cpp:48
QPulseAudioDevices::createAudioSource
QPlatformAudioSource * createAudioSource(const QAudioDevice &, const QAudioFormat &, QObject *parent) override
Definition
qpulseaudiodevices.cpp:41
QPulseAudioDevices::~QPulseAudioDevices
~QPulseAudioDevices() override
Definition
qpulseaudiodevices.cpp:26
QPulseAudioDevices::hasCallbackApi
bool hasCallbackApi() const override
Definition
qpulseaudiodevices_p.h:41
QPulseAudioInternal::QPulseAudioSource::start
QIODevice * start() override
Definition
qpulseaudiosource.cpp:333
QPulseAudioInternal::QPulseAudioSource::~QPulseAudioSource
~QPulseAudioSource() override
QPulseAudioInternal::QPulseAudioSource::start
void start(QIODevice *device) override
Definition
qpulseaudiosource.cpp:319
QPulseAudioInternal::QPulseAudioSource::start
void start(AudioCallback &&) override
Definition
qpulseaudiosource.cpp:326
QPulseAudioInternal
Definition
qpulseaudiosink.cpp:18
QT_BEGIN_NAMESPACE
Combined button and popup list for selecting options.
Definition
qsequentialanimationgroup.cpp:47
QPulseAudioInternal::QPulseAudioSourceStream::open
bool open() const
Definition
qpulseaudiosource.cpp:125
QPulseAudioInternal::QPulseAudioSourceStream::updateStreamIdle
void updateStreamIdle(bool idle) override
Definition
qpulseaudiosource.cpp:130
QPulseAudioInternal::QPulseAudioSourceStream::resume
void resume()
Definition
qpulseaudiosource.cpp:117
QPulseAudioInternal::QPulseAudioSourceStream::start
bool start(AudioCallback &&)
Definition
qpulseaudiosource.cpp:66
QPulseAudioInternal::QPulseAudioSourceStream::start
bool start(QIODevice *device)
Definition
qpulseaudiosource.cpp:57
QPulseAudioInternal::QPulseAudioSourceStream::stop
void stop(ShutdownPolicy)
Definition
qpulseaudiosource.cpp:82
QPulseAudioInternal::QPulseAudioSourceStream::SourceType
QPulseAudioSource SourceType
Definition
qpulseaudiosource_p.h:35
QPulseAudioInternal::QPulseAudioSourceStream::start
QIODevice * start()
Definition
qpulseaudiosource.cpp:72
QPulseAudioInternal::QPulseAudioSourceStream::suspend
void suspend()
Definition
qpulseaudiosource.cpp:109
QPulseAudioInternal::QPulseAudioSourceStream::~QPulseAudioSourceStream
~QPulseAudioSourceStream()
qtmultimedia
src
multimedia
pulseaudio
qpulseaudiosource_p.h
Generated on
for Qt by
1.18.0