Re: [PATCH 10/11] ASoC: qdsp6-dai: add gapless support

From: Srinivas Kandagatla
Date: Wed Jul 08 2020 - 05:44:41 EST


Thanks Pierre for review,

On 07/07/2020 18:07, Pierre-Louis Bossart wrote:


On 7/7/20 11:36 AM, Srinivas Kandagatla wrote:
Add support to gapless playback by implementing metadata,
next_track, drain and partial drain support.

Gapless on Q6ASM is implemented by opening 2 streams in a single asm stream

What does 'in a single asm stream' means?


So in QDSP6 ASM (Audio Stream Manager) terminology we have something called "asm session" for each ASoC FE DAI, Each asm session can be connected with multiple streams (upto 8 I think). However there will be only one active stream at anytime. Also there only single data buffer associated with each asm session.

For Gapless usecase, we can keep two streams open for one asm-session, allowing us to fill in data on second stream while first stream is playing.


and toggling them on next track.

It really seems to me that you have two streams at the lowest level, along with the knowledge of how many samples to remove/insert and hence could do a much better job - including gapless support between unrelated profiles and cross-fading - without the partial drain and next_track mechanism that was defined assuming a single stream/profile.
At the end of the day its a single session with one data buffer but with multiple streams.

Achieving cross fade should be easy with this design.

We need those hooks for partial drain and next track to allow us to switch between streams and pass silence information to respective stream ids.

--srini