4#ifndef QWINDOWSAUDIOUTILS_H
5#define QWINDOWSAUDIOUTILS_H
18#include <QtCore/qstring.h>
19#include <QtCore/private/qcomptr_p.h>
20#include <QtCore/private/quniquehandle_types_p.h>
21#include <QtMultimedia/qaudioformat.h>
22#include <QtMultimedia/private/qaudiosystem_p.h>
37class QWindowsMediaFoundation;
45static_assert(reference_time(1) == std::chrono::nanoseconds(100));
65 std::optional<qsizetype> hardwareBufferFrames,
66 const QUniqueWin32NullHandle &wasapiEventHandle,
67 std::optional<AudioEndpointRole> = {});
static constexpr QAudioFormat::AudioChannelPosition channelFormatMap[]
QAudioFormat mediaTypeToFormat(IMFMediaType *mediaType)
std::optional< AudioClientCreationResult > createAudioClient(const ComPtr< IMMDevice > &device, const QAudioFormat &format, std::optional< qsizetype > hardwareBufferFrames, const QUniqueWin32NullHandle &wasapiEventHandle, std::optional< AudioEndpointRole > role)
bool audioClientSetRate(const ComPtr< IAudioClient3 > &client, int rate)
bool audioClientSetRole(const ComPtr< IAudioClient3 > &client, AudioEndpointRole role)
ComPtr< IMFMediaType > formatToMediaType(QWindowsMediaFoundation &wmf, const QAudioFormat &format)
bool audioClientStop(const ComPtr< IAudioClient3 > &client)
bool audioClientStart(const ComPtr< IAudioClient3 > &client)
std::optional< WAVEFORMATEXTENSIBLE > toWaveFormatExtensible(const QAudioFormat &format)
std::optional< quint32 > getBufferSizeInFrames(const ComPtr< IAudioClient3 > &client)
static UINT32 channelConfigToMask(QAudioFormat::ChannelConfig config)
bool audioClientReset(const ComPtr< IAudioClient3 > &client)
std::optional< AudioClientDevicePeriod > getDevicePeriod(const ComPtr< IAudioClient3 > &client)
std::chrono::duration< long long, std::ratio< 1, 10000000 > > reference_time
QAudioFormat waveFormatExToFormat(const WAVEFORMATEX &in)
bool formatToWaveFormatExtensible(const QAudioFormat &format, WAVEFORMATEXTENSIBLE &wfx)
QAudioFormat::ChannelConfig maskToChannelConfig(UINT32 mask, int count)
void setMCSSForPeriodSize(reference_time periodSize)
QString audioClientErrorString(HRESULT hr)
#define AUDCLNT_E_EFFECT_NOT_AVAILABLE
#define AUDCLNT_E_EFFECT_STATE_READ_ONLY
qsizetype audioClientFrames
ComPtr< IAudioClient3 > client
reference_time periodSize
reference_time minimalDuration
reference_time defaultDuration