360 explicit QPlatformAudioEndpointBase(QAudioDevice,
const QAudioFormat &, QObject *parent);
361 ~QPlatformAudioEndpointBase() override;
364 QAudio::Error error()
const {
return m_error; }
365 virtual QAudio::State state()
const {
return m_inferredState; }
366 virtual void setError(QAudio::Error);
368 virtual bool isFormatSupported(
const QAudioFormat &format)
const;
369 QAudioFormat format()
const {
return m_format; }
371 virtual void setVolume(
float volume) { m_volume = volume; }
372 float volume()
const {
return m_volume; }
375 void stateChanged(QtAudio::State);
378 enum class EmitStateSignal : uint8_t
384 void updateStreamState(QAudio::State);
385 void updateStreamIdle(
bool idle, EmitStateSignal = EmitStateSignal::True);
387 const QAudioDevice m_audioDevice;
388 const QAudioFormat m_format;
393 QAudio::State m_streamState = QAudio::StoppedState;
394 QAudio::State m_inferredState = QAudio::StoppedState;
395 QAudio::Error m_error{};
396 bool m_streamIsIdle =
false;
398 float m_volume{ 1.f };
406 explicit QPlatformAudioSink(QAudioDevice,
const QAudioFormat &, QObject *parent);
407 ~QPlatformAudioSink() override;
409 virtual void start(QIODevice *device) = 0;
410 virtual QIODevice* start() = 0;
411 virtual void stop() = 0;
412 virtual void reset() = 0;
413 virtual void suspend() = 0;
414 virtual void resume() = 0;
415 virtual qsizetype bytesFree()
const = 0;
416 virtual void setBufferSize(qsizetype value) = 0;
417 virtual qsizetype bufferSize()
const = 0;
418 virtual void setHardwareBufferFrames(int32_t) { }
419 virtual int32_t hardwareBufferFrames() {
return -1; }
420 virtual qint64 processedUSecs()
const = 0;
422 using AudioCallback = QtMultimediaPrivate::AudioSinkCallback;
424 virtual void start(AudioCallback &&) { }
425 virtual bool hasCallbackAPI() {
return false; }
427 QElapsedTimer elapsedTime;
429 static QPlatformAudioSink *get(
const QAudioSink &);
431 using AudioEndpointRole = QtMultimediaPrivate::AudioEndpointRole;
432 virtual void setRole(AudioEndpointRole) { }
440 explicit QPlatformAudioSource(QAudioDevice,
const QAudioFormat &, QObject *parent);
441 ~QPlatformAudioSource() override;
443 virtual void start(QIODevice *device) = 0;
444 virtual QIODevice* start() = 0;
445 virtual void stop() = 0;
446 virtual void reset() = 0;
447 virtual void suspend() = 0;
448 virtual void resume() = 0;
449 virtual qsizetype bytesReady()
const = 0;
450 virtual void setBufferSize(qsizetype value) = 0;
451 virtual void setHardwareBufferFrames(int32_t) { }
452 virtual int32_t hardwareBufferFrames() {
return -1; }
453 virtual qsizetype bufferSize()
const = 0;
454 virtual qint64 processedUSecs()
const = 0;
456 using AudioCallback = QtMultimediaPrivate::AudioSourceCallback;
458 virtual void start(AudioCallback &&) { }
459 virtual bool hasCallbackAPI() {
return false; }
461 QElapsedTimer elapsedTime;
463 static QPlatformAudioSource *get(
const QAudioSource &);