diff options
| author | Anton <anton@picapica.im> | 2026-08-09 08:21:47 +0400 |
|---|---|---|
| committer | Anton <anton@picapica.im> | 2026-08-09 08:21:47 +0400 |
| commit | 32b5ae5d300a6e6ee571febd121ac985758c574e (patch) | |
| tree | 271bdcd2fe3944d80a592525bd4b19e1ca9cbcb1 /pica-client/audiovideocallcontroller.h | |
| parent | debf41f7ee5907cbd4d75d754b18380983929d44 (diff) | |
| download | pica-pica-32b5ae5d300a6e6ee571febd121ac985758c574e.tar.gz pica-pica-32b5ae5d300a6e6ee571febd121ac985758c574e.zip | |
pica-client: add TonePlayer for classic telephony call tones
Wires ringback, busy, special-information (unreachable) and an
electromechanical-bell incoming ringtone into
AudioVideoCallController, each played on its own QThread since
TonePlayer::play() blocks. Device selection reads audio.playback_device
and audio.ring_device from Settings so it follows what's configured in
SettingsDialog.
Centralizes the FFmpeg libavdevice output driver name
(alsa/audiotoolbox/dsound) in AudioDevice::PlatformDriverName() rather
than hardcoding ALSA, so it can also back capture/playback later.
Adds toneplayer.{h,cpp} to the autotools build and adds the missing
GPL v3 header to the touched files that lacked it.
Diffstat (limited to 'pica-client/audiovideocallcontroller.h')
| -rw-r--r-- | pica-client/audiovideocallcontroller.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/pica-client/audiovideocallcontroller.h b/pica-client/audiovideocallcontroller.h index 82e1dc8..08f94af 100644 --- a/pica-client/audiovideocallcontroller.h +++ b/pica-client/audiovideocallcontroller.h @@ -18,15 +18,18 @@ #define AUDIOVIDEOCALLCONTROLLER_H #include <QObject> +#include <QThread> #include "callwindow.h" #include "audiodevice.h" #include "videodevice.h" +#include "toneplayer/toneplayer.h" class AudioVideoCallController : public QObject { Q_OBJECT public: explicit AudioVideoCallController(QObject *parent = nullptr); + ~AudioVideoCallController(); // is call active (i.e. are voice/video packets exchanged now) bool const isActive() {return is_active;} void processCall(); @@ -46,6 +49,20 @@ private: VideoDevice *cam; bool is_active; QByteArray m_peer_id; + + // Earpiece tones (ringback, busy, special information/unreachable), + // played through the "audio.playback_device" setting. + TonePlayer *toneplayer; + QThread toneplayer_thread; + + // Incoming call bell, played through the "audio.ring_device" setting. + TonePlayer *ringtoneplayer; + QThread ringtoneplayer_thread; + + void playEarpieceTone(void (TonePlayer::*tone)()); + void playRingTone(); + void stopTones(); + private slots: // button handlers void initiate_call(); |
