I'm working on a module that can switch profile for a Bluetooth headset: A2DP
for music playback and HSP for a phone.
When this module detects a sink-input-put event of a "phone" like GTalk and
Bluetooth is the default sink, it can change BT profile from A2DP to HSP if
necessary. Then the A2DP sink is deleted, and the phone's input stream will be
routed to the new HSP Bluetooth sink.
My problem is: I cannot hear good voice from the other side of GTalk, I get
bursts of audio (about 2 seconds) followed by very long bursts of silence.
By using pacmd, I found that Gtalk input stream is connected to the BT HSP
sink, but GTalk input stream's latency is "0", very strange. Like this:
>>list-sinks
index: 2
name: <bluez_sink.00_16_44_FD_36_33.2>
driver: <module-bluetooth-device.c>
flags: HARDWARE HW_VOLUME_CTRL LATENCY
state: RUNNING
...
current latency: 128.46 ms
sample spec: s16le 1ch 8000Hz
channel map: mono
...
fixed latency: 128.00 ms
>>list-sink-inputs
index: 3
driver: <protocol-native.c>
flags: START_CORKED
state: RUNNING
sink: 2 <bluez_sink.00_16_44_FD_36_33.2>
current latency: 0.00 ms ... this is abnormal. How PA calculate
this value?
requested latency: 128.00 ms
sample spec: s16le 1ch 8000Hz
channel map: mono
resample method: (null)
client: 7 <Empathy> ... This is the frontend application of GTalk
And in PA log, I saw many "protocol-native.c: Requesting rewind due to
rewrite". I think this means GTalk data flow is abnormal and data is lost.
Could anyone give me some hint? How the latency is calculated for a sink input?
And how can the application be affected?
I think the BT HSP sink is working well, because if I connect another 8KHZ mono
music stream to this sink at the same time, I can hear the music. And that
music input's latency is non-zero:
"current latency: 1982.00 ms, requested latency: 128.00 ms".
Greate thanks
Amanda
_______________________________________________
pulseaudio-discuss mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss