Engineering Deep Dive
A detailed look at how Meow delivers native performance, crystal-clear audio, and rock-solid SIP connectivity, all in a lightweight package.
Five cleanly separated layers with one-way dependencies. Each layer only talks to the one directly below it.
┌───────────────────────────────────────────────────┐
│ QML UI Layer │
│ Main.qml · Views · Components │
├───────────────────────────────────────────────────┤
│ QmlBridge (C++) │
│ Context properties · Signal/Slot │
├───────────────────────────────────────────────────┤
│ Core Controllers │
│ CallManager · SettingsManager · LicenseManager │
│ ContactModel · CallStateMachine · Database │
├───────────────────────────────────────────────────┤
│ SIP Engine │
│ PJSIP · PjAccount · PjCall · SRTP │
├───────────────────────────────────────────────────┤
│ Audio Backend │
│ PulseAudioDev (Linux) · WASAPI/WMME (Windows) │
└───────────────────────────────────────────────────┘Custom audio backend built for VoIP. Not a generic media player repurposed for calls.
Direct PulseAudio integration via dlopen(libpulse-simple.so.0). No dependency on system-compiled audio backends. Works everywhere PulseAudio runs.
80ms target playback latency, 20ms capture fragments. Tuned for voice clarity over raw throughput.
Background pactl subscribe process with 500ms debounce. Plug in a headset mid-call and it just works.
PJSIP conference bridge at 8000 Hz clock rate. Native G.711 match eliminates unnecessary resampling.
// PulseAudio buffer configuration
pa_buffer_attr playback_attrs = {
.maxlength = (uint32_t)-1,
.tlength = 80 * frame_size, // 80ms
.prebuf = (uint32_t)-1,
.minreq = (uint32_t)-1,
.fragsize = 0
};
pa_buffer_attr capture_attrs = {
.maxlength = (uint32_t)-1,
.tlength = 0,
.prebuf = 0,
.minreq = 0,
.fragsize = 20 * frame_size // 20ms
};
// Conference bridge — native G.711
epCfg.medConfig.clockRate = 8000;State-machine-driven call handling with thread-safe PJSIP integration.
Single source of truth for call state. Transitions are atomic and thread-safe via Qt signal/slot.
All PJSIP callbacks marshal to the Qt thread via QMetaObject::invokeMethod(Qt::QueuedConnection).
In-band DTMF tone generation for IVR navigation. Compatible with all major PBX systems.
Incoming calls are matched against contacts using phone number normalization with country code awareness.
Cryptographically sound licensing with hardware-bound activation.
SHA-256 composite of CPU model, RAM (rounded GB), first non-loopback MAC address, and machine-id. Unique but stable across reboots.
License tokens are Ed25519-signed by the server. The client verifies offline with a hardcoded 32-byte public key. No network needed for validation.
Server fuzzy-matches 3 of 4 hardware factor hashes. Reinstalling the OS or clearing local storage won't reset your trial. The server remembers.
Native code means native performance. No runtime overhead, no garbage collector pauses.
Truly native on each platform. Not a cross-platform wrapper with platform quirks.
Built on PJSIP, the most widely deployed open-source SIP stack. Standards-first, vendor-agnostic.
SIP: Session Initiation Protocol
RTP: Real-Time Transport Protocol
DTMF Tones via RTP Payloads
SRTP: Secure Real-Time Transport
SIP: Locating SIP Servers
SIP Outbound Connections
Ready to experience a truly native SIP client?
Start 14 Days Free Trial