Background
PR #3378 added a 44.1 kHz Int16 fallback step to ClientPuduMonitor::startPlayback()'s format negotiation ladder, extending it from:
24 kHz Int16 → 48 kHz Int16 → preferredFormat
to:
24 kHz Int16 → 48 kHz Int16 → 44.1 kHz Int16 → preferredFormat
This matches the ladder already used by CwSidetoneQAudioSink and handles Windows HFP/SCO routes and certain USB DACs that reject 48 kHz Int16 outright but accept 44.1 kHz.
Problem
The same ladder extension was not applied to QsoRecorder::startPlayback(). On a device that rejects 48 kHz Int16, monitor playback now finds 44.1 kHz and works, while QSO recording playback skips straight to preferredFormat (or fails). The two code paths are inconsistent and the user experience differs on the same device.
Fix
Apply the same 44.1 kHz Int16 step to QsoRecorder::startPlayback() in parity with ClientPuduMonitor. The ladder and fallback log strings should match.
Scope
src/core/QsoRecorder.cpp — startPlayback() format negotiation only
- No behavior change for devices that already accept 48 kHz Int16
Background
PR #3378 added a 44.1 kHz Int16 fallback step to
ClientPuduMonitor::startPlayback()'s format negotiation ladder, extending it from:24 kHz Int16 → 48 kHz Int16 → preferredFormatto:
24 kHz Int16 → 48 kHz Int16 → 44.1 kHz Int16 → preferredFormatThis matches the ladder already used by
CwSidetoneQAudioSinkand handles Windows HFP/SCO routes and certain USB DACs that reject 48 kHz Int16 outright but accept 44.1 kHz.Problem
The same ladder extension was not applied to
QsoRecorder::startPlayback(). On a device that rejects 48 kHz Int16, monitor playback now finds 44.1 kHz and works, while QSO recording playback skips straight topreferredFormat(or fails). The two code paths are inconsistent and the user experience differs on the same device.Fix
Apply the same 44.1 kHz Int16 step to
QsoRecorder::startPlayback()in parity withClientPuduMonitor. The ladder and fallback log strings should match.Scope
src/core/QsoRecorder.cpp—startPlayback()format negotiation only