summaryrefslogtreecommitdiffstats
path: root/Makefile.am
Commit message (Collapse)AuthorAgeFilesLines
* pica-client: use webrtc-audio-processing instead of speexdsp for echo ↵Anton2026-09-131-6/+2
| | | | cancellation
* pica-client: fix echo canceller and capture gain auto regulatorAnton2026-09-011-0/+4
|
* pica-client: camera enumeration and capture on WindowsAnton2026-08-241-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Capture already went through FFmpeg's "dshow" demuxer, which does the job - unlike the audio case there is nothing here the platform offers that we cannot reach any other way, so there is no reason to drive DirectShow ourselves. Two things were missing to make it work. Enumeration, because the demuxer has none: it can only print device names to the log with -list_devices, which is no use to a settings dialog. The list is built in videodshow.cpp instead, walking the same CLSID_VideoInputDeviceCategory the demuxer walks, so the names handed back are the ones it matches on. Where a friendly name is not unique - two identical cameras - later duplicates fall back to the device path, which the demuxer also accepts. And the "video=" prefix, since DirectShow namespaces its devices by type and the same name behind "audio=" would be a microphone. The name is stored unprefixed and decorated at open time, so what the settings dialog shows and writes stays readable. Also adds a last-resort open with no constraints at all. DirectShow refuses a video_size or framerate it cannot produce exactly rather than settling for the nearest, so a camera with an unusual set of modes would otherwise give no picture; whatever comes back is scaled by the transcode loop anyway. The failure message on Windows now names the likely cause. A camera that enumerated but will not open is usually not a broken camera: Windows lists devices it then refuses to instantiate, which is what the "Let desktop apps access your camera" privacy setting being off looks like from here, and what another application holding the camera looks like too. None of them are distinguishable from a real fault at that level, and the bare "I/O error" sent me looking at the wrong layer entirely. compressedFormats is left empty on Windows, so "prefer compressed formats" has no effect there - finding out what a DirectShow camera can deliver means walking its output pin's media types through IAMStreamConfig, which is a good deal more than the one v4l2 ioctl that fills this in on Linux. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CBqDgvq3Ty6C6BjLFH16bw
* pica-client: echo cancellation, and native audio on Windows and macOSAnton2026-08-241-2/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | PlatformDriverName() now takes a direction, and answers with one of two kinds of name. A bare one - "alsa", "pulse", "oss" - is an FFmpeg libavdevice driver opened the way everything else here is opened. One prefixed "platform-" is not an FFmpeg driver at all: what follows names a platform audio API the caller drives itself through NativeAudioBackend. Windows and macOS take the second route, because both provide acoustic echo cancellation but only to streams that declare themselves part of a voice call - AudioCategory_Communications on WASAPI, the VoiceProcessingIO audio unit on CoreAudio - and libavdevice's wrappers have no way to ask for either. Doing our own cancelling on platforms that would have done it better below us is not a trade worth making. Where the platform will not do it, speexdsp does: one EchoCanceller per call, shared by both directions through a QSharedPointer, since the call is torn down without joining either audio thread. Playback feeds it the far end as it hands it to the device; capture subtracts before encoding. Alignment is left to the FIFO - in steady state its backlog settles at the sound card's buffer depth, which is also how far ahead of the speaker the playback side runs, leaving only the room for the filter tail to model. Measured 27 dB ERLE on a 60 ms echo with 1.6 dB of loss on speech when nothing is playing. On macOS the canceller is a single audio unit that renders and captures at once, so both directions share one refcounted instance. Ringtones deliberately get a plain HALOutput unit instead - opening a voice unit to play a bell would switch the microphone on and prompt for permission. Linux gains a choice of alsa or pulse, with PulseAudio device enumeration through libpulse when configure finds it. Info.plist gains NSMicrophoneUsageDescription and NSCameraUsageDescription. Without them macOS 10.14 and later kills the process on first use of the microphone or camera rather than asking, so calls did not merely fail, they took the application with them. Two things fixed along the way that were not about echo at all: the settings dialog's microphone test paced playback by counting timer ticks, which on Windows meant a 20 ms packet every ~31 ms because the system timer granularity is 15.6 ms - the recording came out slowed down and chopped up. It now paces against a QElapsedTimer. And chooseEncoderSampleFmt() uses avcodec_get_supported_config() where available, the AVCodec format arrays it replaced having been removed in FFmpeg 9. Only the Linux paths are verified here; the Windows and macOS backends compile to nothing on this machine and have been reviewed by hand. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CBqDgvq3Ty6C6BjLFH16bw
* pica-client: UDP transport for callsAnton2026-08-191-0/+2
|
* pica-client: VAAPI on X11, two codepathsAnton2026-08-161-0/+15
|
* pica-client: VAAPI hardware accelerationAnton2026-08-141-3/+26
|
* pica-client: video callAnton2026-08-131-0/+1
|
* pica-client: voice callsAnton2026-08-121-0/+1
|
* pica-client: add TonePlayer for classic telephony call tonesAnton2026-08-091-0/+6
| | | | | | | | | | | | | | | | 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.
* pica-client/audio: enumerate ALSA devices on LinuxAnton2021-07-041-2/+2
|
* add audiovideocallcontroller and callwindow, menu action to initiate callAnton2021-06-291-0/+6
|
* add classes for audio & video devices, implemented video device enumeration ↵Anton2020-05-301-0/+6
| | | | for Linux
* add FFmpeg libraries into dependenciesAnton2020-05-091-2/+2
|
* update icon installation proceduresAnton2019-06-061-1/+2
|
* add .icns file for OS X buildsAnton2019-04-051-0/+1
|
* pica-client: implement nodes dialog, shows locally stored nodesAnton2019-03-141-0/+3
|
* link only pica-node with libevent, prevents linking libevent to pica-clientAnton2019-03-131-1/+1
|
* remove menuitem and xdg-utils related stuff from build, this should be ↵Anton2019-03-051-23/+0
| | | | handled by distro packaging
* fix local state dirAnton2019-03-051-1/+1
|
* add new files, PICA_signverifyAnton2019-02-141-1/+3
|
* remove CA.pem file from distributionAnton2018-09-081-3/+1
|
* add header file PICA_security.h to group important security parameters in ↵Anton2018-07-281-2/+3
| | | | one place
* changed license to GPL-3.0-or-laterAnton2018-07-161-1/+1
|
* .dmg generation in make deploy target, copy sqlite plugin explicitlyAnton2018-07-151-3/+7
|
* new makefile target "deploy" for OS X dmg packageAnton2018-07-141-0/+12
|
* include Info.plist in distAnton2018-07-141-1/+2
|
* pica-client: implemented autoconfiguration of address for direct incoming ↵Anton2017-12-301-1/+2
| | | | connections
* moved PICA_is_reserved_addr_ipv4() to new file PICA_netconf.cAnton2017-12-021-1/+2
|
* added moc_settingsdialog to Makefile.amAnton2016-09-061-0/+1
|
* added Settings and SettingsDialog files to Makefile.amAnton2016-09-041-0/+4
|
* removed moc_nodethread.cpp from Makefile.amAnton2016-08-161-1/+0
|
* removed NodeThread class filesAnton2016-08-151-2/+0
|
* playing sound on new message arrival - added wav file, new class Sound, menu ↵me_desk2014-08-091-1/+8
| | | | | | item in systray menu for muting git-svn-id: svn://localhost/project_picapica/trunk@318 fb96df88-216d-11de-830c-f3023f12d8ac
* added FileTransferController and FileTransferDialog source files to Makefile.amme_desk2014-08-061-0/+6
| | | | git-svn-id: svn://localhost/project_picapica/trunk@317 fb96df88-216d-11de-830c-f3023f12d8ac
* new dialog ShowPicaIdDialog for showing Pica IDme_desk2013-10-201-0/+3
| | | | git-svn-id: svn://localhost/project_picapica/trunk@294 fb96df88-216d-11de-830c-f3023f12d8ac
* better handling of DH parameter generation - added new class DHParam, ↵me_desk2013-10-111-1/+4
| | | | | | default DH param file dhparam4096.pem git-svn-id: svn://localhost/project_picapica/trunk@277 fb96df88-216d-11de-830c-f3023f12d8ac
* pica-node modified to handle new id format, new files PICA_id.c PICA_id.h ↵me_desk2013-08-211-2/+3
| | | | | | containing functions for working with id git-svn-id: svn://localhost/project_picapica/trunk@263 fb96df88-216d-11de-830c-f3023f12d8ac
* remove nodelist.db on make cleanv0.5.3me_desk2013-04-211-0/+2
| | | | git-svn-id: svn://localhost/project_picapica/trunk@245 fb96df88-216d-11de-830c-f3023f12d8ac
* fixed changed paths in Makefile.amme_desk2013-04-211-3/+6
| | | | git-svn-id: svn://localhost/project_picapica/trunk@242 fb96df88-216d-11de-830c-f3023f12d8ac
* removed CPPFLAGS from uic command lineme_desk2013-02-241-1/+1
| | | | git-svn-id: svn://localhost/project_picapica/trunk@230 fb96df88-216d-11de-830c-f3023f12d8ac
* updated ebuild names in Makefile.amme_desk2013-02-231-2/+2
| | | | git-svn-id: svn://localhost/project_picapica/trunk@229 fb96df88-216d-11de-830c-f3023f12d8ac
* history class files added to Makefile.amme_desk2013-02-231-0/+2
| | | | git-svn-id: svn://localhost/project_picapica/trunk@226 fb96df88-216d-11de-830c-f3023f12d8ac
* nodewait - asynchronous DNS resolve and connect to nodes using threadsme_desk2012-12-271-2/+2
| | | | git-svn-id: svn://localhost/project_picapica/trunk@215 fb96df88-216d-11de-830c-f3023f12d8ac
* include pica-node ebuild in distme_desk2012-08-281-1/+1
| | | | git-svn-id: svn://localhost/project_picapica/trunk@195 fb96df88-216d-11de-830c-f3023f12d8ac
* version bump to 0.5.2; new seed node addreses;Gentoo ebuild and initscript ↵me_desk2012-08-261-1/+1
| | | | | | included in dist git-svn-id: svn://localhost/project_picapica/trunk@189 fb96df88-216d-11de-830c-f3023f12d8ac
* support for moc and uic named as uic-qt4 and moc-qt4me_desk2012-08-231-3/+3
| | | | git-svn-id: svn://localhost/project_picapica/trunk@183 fb96df88-216d-11de-830c-f3023f12d8ac
* install 22 and 64 icon sizesme_desk2012-08-191-0/+4
| | | | git-svn-id: svn://localhost/project_picapica/trunk@175 fb96df88-216d-11de-830c-f3023f12d8ac
* desktop menu item for pica-clientme_desk2012-08-191-0/+22
| | | | git-svn-id: svn://localhost/project_picapica/trunk@174 fb96df88-216d-11de-830c-f3023f12d8ac
* default configuration fileme_desk2012-08-191-1/+2
| | | | git-svn-id: svn://localhost/project_picapica/trunk@172 fb96df88-216d-11de-830c-f3023f12d8ac