On 08.02.2018 12:06, Shinnosuke Suzuki wrote:

I am developing a phone app using pulseaudio 6.0 with asynchronous API
using Bluetooth Headset.

Can't you use a newer version? We are at 11.1 already and the
bluetooth code has changed significantly.

I create a record stream with pa_stream_new() with this parameter.
 static pa_sample_spec samplespec = {
     .format = PA_SAMPLE_S16LE, /* Linear 16bit */
     .rate = 16000, /* 16000Hz */
     .channels = 1 /* mono */
And I set a callback function by pa_stream_set_read_callback().
After the stream created, I could get a voice data by 96byte per 10ms in this callback.I checked a log with clock_gettime() in this callback.

I think I get voice packet by 320Byte per 10ms.
16000Hz * 1 * 16bit = 256kbps = 32KBps
This means that I can get 320Byte per 10ms.
So I need to get 320Byte per 10ms.

I set sample format above, but I got different voice packet from callback.
I would like to get a voice with Linear 16bit 16kHz mono.
Is there additional configuration to this codec?

For confirmation, when I use a bluetooth headset, Is this correct the pulseaudio convert codec from SBC to Linear as follows? My app <- Linear 16bit 16kHz <- Pulseaudio  <- SBC codec <- Bluetooth Headset

When you record from the BT headset, the BT headset is set to HSP/HFP.
This means that recording and playback stream are at 8kHz, not 16kHz.
Pulseaudio only supports CVSD codec, not mSBC.

And addition to that, After stream connected, CPU load for pulseaudio
rose up 50%-60%.CPU load for MyAPP rose up 20%-30%.
In order to reduce CPU load, I conigure as follows:
 high-priority = no
 realtime-scheduling = no

resample-method=trivial might result in bad audio quality.
pulseaudio-discuss mailing list

Reply via email to