Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qaudioformat.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#ifndef QAUDIOFORMAT_H
6#define QAUDIOFORMAT_H
7
8#include <QtCore/qobject.h>
9#include <QtCore/qshareddata.h>
10
11#include <QtMultimedia/qtmultimediaglobal.h>
12
14
15namespace QtPrivate {
16template <typename... Args>
17constexpr int channelConfig(Args... values) {
18 return (0 | ... | (1u << values));
19}
20}
21
23{
24public:
33
34 // This matches the speaker positions of a 22.2 audio layout. Stereo, Surround 5.1 and Surround 7.1 are subsets of these
62 static constexpr int NChannelPositions = BottomFrontRight + 1;
63
76
77 template <typename... Args>
78 static constexpr ChannelConfig channelConfig(Args... channels)
79 {
80 return ChannelConfig(QtPrivate::channelConfig(channels...));
81 }
82
83 constexpr bool isValid() const noexcept
84 {
85 return m_sampleRate > 0 && m_channelCount > 0 && m_sampleFormat != Unknown;
86 }
87
88 constexpr void setSampleRate(int sampleRate) noexcept { m_sampleRate = sampleRate; }
89 constexpr int sampleRate() const noexcept { return m_sampleRate; }
90
92 constexpr ChannelConfig channelConfig() const noexcept { return m_channelConfig; }
93
94 constexpr void setChannelCount(int channelCount) noexcept { m_channelConfig = ChannelConfigUnknown; m_channelCount = channelCount; }
95 constexpr int channelCount() const noexcept { return m_channelCount; }
96
97 Q_MULTIMEDIA_EXPORT int channelOffset(AudioChannelPosition channel) const noexcept;
98
99 constexpr void setSampleFormat(SampleFormat f) noexcept { m_sampleFormat = f; }
100 constexpr SampleFormat sampleFormat() const noexcept { return m_sampleFormat; }
101
102 // Helper functions
103 Q_MULTIMEDIA_EXPORT qint32 bytesForDuration(qint64 microseconds) const;
104 Q_MULTIMEDIA_EXPORT qint64 durationForBytes(qint32 byteCount) const;
105
108
111
112 constexpr int bytesPerFrame() const { return bytesPerSample()*channelCount(); }
113 constexpr int bytesPerSample() const noexcept
114 {
115 switch (m_sampleFormat) {
116 case Unknown:
117 case NSampleFormats: return 0;
118 case UInt8: return 1;
119 case Int16: return 2;
120 case Int32:
121 case Float: return 4;
122 }
123 return 0;
124 }
125
126 Q_MULTIMEDIA_EXPORT float normalizedSampleValue(const void *sample) const;
127
128 friend bool operator==(const QAudioFormat &a, const QAudioFormat &b)
129 {
130 return a.m_sampleRate == b.m_sampleRate &&
131 a.m_channelCount == b.m_channelCount &&
132 a.m_sampleFormat == b.m_sampleFormat;
133 }
134 friend bool operator!=(const QAudioFormat &a, const QAudioFormat &b)
135 {
136 return !(a == b);
137 }
138
139 static Q_MULTIMEDIA_EXPORT ChannelConfig defaultChannelConfigForChannelCount(int channelCount);
140
141private:
142 SampleFormat m_sampleFormat = SampleFormat::Unknown;
143 short m_channelCount = 0;
144 ChannelConfig m_channelConfig = ChannelConfigUnknown;
145 int m_sampleRate = 0;
146 quint64 reserved = 0;
147};
148
149#ifndef QT_NO_DEBUG_STREAM
150Q_MULTIMEDIA_EXPORT QDebug operator<<(QDebug, const QAudioFormat &);
151Q_MULTIMEDIA_EXPORT QDebug operator<<(QDebug, QAudioFormat::SampleFormat);
152#endif
153
154QT_END_NAMESPACE
155
156Q_DECLARE_METATYPE(QAudioFormat)
157
158#endif // QAUDIOFORMAT_H
qint64 duration() const override
void setAudioFormat(const QAudioFormat &format) override
bool bufferAvailable() const override
QUrl source() const override
void setSourceDevice(QIODevice *device) override
QAudioFormat audioFormat() const override
QAudioBuffer read() override
qint64 position() const override
QIODevice * sourceDevice() const override
bool streamPlaybackSupported() const override
bool isAudioAvailable() const override
void handleError(QMediaPlayer::Error errorCode, const QString &errorString, bool isFatal)
qreal playbackRate() const override
QMediaPlayer::PlaybackState state() const override
QMediaMetaData metaData() const override
const QIODevice * mediaStream() const override
void pause() override
void setActiveTrack(TrackType type, int index) override
void setAudioOutput(QPlatformAudioOutput *output) override
QMediaMetaData trackMetaData(TrackType type, int trackNumber) override
void setPlaybackRate(qreal rate) override
void setMedia(const QUrl &media, QIODevice *stream) override
void play() override
QMediaPlayer::MediaStatus mediaStatus() const override
int activeTrack(TrackType type) override
QUrl media() const override
QMediaTimeRange availablePlaybackRanges() const override
MFPlayerControl(QMediaPlayer *player)
float bufferProgress() const override
void setVideoSink(QVideoSink *sink) override
bool isVideoAvailable() const override
void handleSeekableUpdate(bool seekable)
qint64 duration() const override
qint64 position() const override
void handleDurationUpdate(qint64 duration)
int trackCount(TrackType type) override
void setPosition(qint64 position) override
bool isSeekable() const override
void stop() override
The QAudioFormat class stores audio stream parameter information.
constexpr ChannelConfig channelConfig() const noexcept
Returns the current channel configuration.
constexpr SampleFormat sampleFormat() const noexcept
Returns the current sample format.
Q_MULTIMEDIA_EXPORT void setChannelConfig(ChannelConfig config) noexcept
Sets the channel configuration to config.
constexpr void setChannelCount(int channelCount) noexcept
Sets the channel count to channels.
AudioChannelPosition
Describes the possible audio channel positions.
Q_MULTIMEDIA_EXPORT int channelOffset(AudioChannelPosition channel) const noexcept
Returns the position of a certain audio channel inside an audio frame for the given format.
constexpr void setSampleFormat(SampleFormat f) noexcept
Sets the sample format to format.
friend bool operator==(const QAudioFormat &a, const QAudioFormat &b)
Returns true if audio format a is equal to b, otherwise returns false.
constexpr bool isValid() const noexcept
Returns true if all of the parameters are valid.
constexpr int sampleRate() const noexcept
Returns the current sample rate in Hertz.
static constexpr int NChannelPositions
constexpr int bytesPerFrame() const
Returns the number of bytes required to represent one frame (a sample in each channel) in this format...
static constexpr ChannelConfig channelConfig(Args... channels)
Returns the current channel configuration for the given channels.
friend bool operator!=(const QAudioFormat &a, const QAudioFormat &b)
Returns true if audio format a is not equal to b, otherwise returns false.
SampleFormat
Qt will always expect and use samples in the endianness of the host platform.
constexpr int channelCount() const noexcept
Returns the current channel count value.
constexpr int bytesPerSample() const noexcept
Returns the number of bytes required to represent one sample in this format.
Q_MULTIMEDIA_EXPORT float normalizedSampleValue(const void *sample) const
Normalizes the sample value to a number between -1 and 1.
constexpr void setSampleRate(int sampleRate) noexcept
Sets the sample rate to samplerate in Hertz.
ChannelConfig
\variable QAudioFormat::NChannelPositions
@ ChannelConfigSurround7Dot1
@ ChannelConfigSurround5Dot1
@ ChannelConfigSurround7Dot0
@ ChannelConfigSurround5Dot0
int capture(const QString &fileName) override
virtual ~QWindowsImageCapture()
QImageEncoderSettings imageSettings() const override
void setImageSettings(const QImageEncoderSettings &settings) override
void setCaptureSession(QPlatformMediaCaptureSession *session)
bool isReadyForCapture() const override
QPlatformImageCapture * imageCapture() override
void setCamera(QPlatformCamera *camera) override
void setAudioInput(QPlatformAudioInput *) override
QPlatformCamera * camera() override
QPlatformMediaRecorder * mediaRecorder() override
void setImageCapture(QPlatformImageCapture *imageCapture) override
void setAudioOutput(QPlatformAudioOutput *output) override
void setMediaRecorder(QPlatformMediaRecorder *recorder) override
QWindowsMediaDeviceSession * session() const
void setMetaData(const QMediaMetaData &metaData) override
QMediaRecorder::RecorderState state() const override
void setCaptureSession(QPlatformMediaCaptureSession *session)
QMediaMetaData metaData() const override
bool isLocationWritable(const QUrl &location) const override
qint64 duration() const override
void record(QMediaEncoderSettings &settings) override
QPlatformMediaFormatInfo * createFormatInfo() override
QMaybe< QPlatformCamera * > createCamera(QCamera *camera) override
QMaybe< QPlatformMediaRecorder * > createRecorder(QMediaRecorder *recorder) override
QMaybe< QPlatformMediaCaptureSession * > createCaptureSession() override
QPlatformVideoDevices * createVideoDevices() override
QMaybe< QPlatformMediaPlayer * > createPlayer(QMediaPlayer *parent) override
QMaybe< QPlatformImageCapture * > createImageCapture(QImageCapture *imageCapture) override
QMaybe< QPlatformVideoSink * > createVideoSink(QVideoSink *sink) override
QMaybe< QPlatformAudioDecoder * > createAudioDecoder(QAudioDecoder *decoder) override
QWindowsVideoDevices(QPlatformMediaIntegration *integration)
QList< QCameraDevice > findVideoInputs() const override
Combined button and popup list for selecting options.
constexpr int channelConfig(Args... values)
Q_CORE_EXPORT QDebug operator<<(QDebug debug, QDir::Filters filters)
Definition qdir.cpp:2462