Avoid panics caused by deleting the VAS uplink stream before all buffers emptied (Known Issue)
Premature deletion of a VoIP Audio Service (VAS) uplink stream (CVoIPAudioUplinkStream) instance may cause a panic.
Article Metadata
Code Example
Tested with
Nokia 5800
Compatibility
S60 5th Edition
Article
Detailed description
After calling CVoIPAudioUplinkStream::Stop(), a VAS client should still be prepared to receive MVoIPUplinkObserver::EmptyBuffer() callbacks as VAS ensures that all recorded (and buffered) data is delivered.
Deleting the uplink stream immediately after calling Stop() causes a VoIPUplinkThreadMmfDevSoundProxy 1 panic.
Solution
A VAS client should proceed to delete the uplink stream only after receiving a MVoIPUplinkObserver::Event() callback with either KUplinkClosed or KUplinkError as an event type.
Additionally, after calling CVoIPAudioUplinkStream::Stop(), a client should not longer call CVoIPAudioUplinkStream::BufferEmptied() in response to MVoIPUplinkObserver::EmptyBuffer() callbacks.
The VoIPTestApp example application takes care of this by maintaining uplink/downlink state variables and only calling BufferEmptied() if the uplink is in 'streaming' state.


(no comments yet)