Linux Sound subsystem development
 help / color / mirror / Atom feed
From: Vinod Koul <vkoul@kernel.org>
To: "Péter Ujfalusi" <peter.ujfalusi@linux.intel.com>
Cc: Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>,
	Mark Brown <broonie@kernel.org>,
	perex@perex.cz, tiwai@suse.com, lgirdwood@gmail.com,
	srinivas.kandagatla@oss.qualcomm.com,
	linux-sound@vger.kernel.org, kai.vehmanen@linux.intel.com,
	yung-chuan.liao@linux.intel.com, daniel.baluta@nxp.com,
	Vijendar.Mukunda@amd.com
Subject: Re: [PATCH 04/23] ASoC: soc-compress: Implement trigger FE-BE sequencing as with normal PCMs
Date: Tue, 8 Sep 2026 18:07:25 +0530	[thread overview]
Message-ID: <aqABhbYne6RIree6@parshuram> (raw)
In-Reply-To: <003c3998-5b46-4532-9d48-dd47b98d544e@linux.intel.com>

On 08-09-26, 11:41, Péter Ujfalusi wrote:
> 
> 
> On 08/09/2026 09:58, Vinod Koul wrote:
> >> The only 'documentation' for the gapless (next_track + partial_drain)
> >> that I could find was the fcplay (and that could not have been worked
> >> (metadata and next_track was in wrong order).
> > 
> > Please see Documentation/sound/designs/compress-offload.rst, it has a
> > section on gapless with SM as well.
> 
> Thanks, for some reason I missed this, looks pretty well defined and
> written!

Thats okay, glad that you found it useful

> 
> > 
> >> But, reading the code it implies that gapless must support anything
> >> thrown at it in any order as for consecutive files:
> >> metadata
> >> next_track
> >> set_codec_params
> >> partial_drain
> > 
> > It was supposed to be in a specific sequence. See the sequence in the
> > documentation.
> 
> The documentation confirms that the fcplay was incorrect:
> https://github.com/alsa-project/tinycompress/commit/7d41dc4bcd39a1b2c449a6f87e827bdbd84d1213

OKay, feel free to send a patch, we should be consistent with above
documented behaviour

> 
> >> With IPC4 the NOP strategy works (just streaming the files without
> >> stopping, but they mus be of same format and property), but then you
> >> loose the position, so not so great.

I wanted to ask earlier, whats IPC4?

> >>
> >>> Note that the NEXT_TRACK only works if the two consecutive tracks have
> >>> the same format, if the platform wants 'perceived' gapless playback with
> >>> a x-fade then two devices are required.
> > 
> > Yes, same format always. Codec can skip the trailing and leading zeros
> > in that case. two different formats would need code switch/code setting
> > params, so it wont work and we would need two devices to x-fade as you
> > rightly pointed out
> 
> gapless looks to be straight forward fort he first look. What made me
> delay the implementation was the fact that I could not find any way in
> firmware to support the metadata as one - OK, I can just ignore it.
> second: in kernel and in firmware I could not figure out _where_
> actually is the end of the current file in the buffer. In kernel we have
> circular buffer for the DMA and userspace just fills it and since for
> the kernel it is just data, it looks continuous.
> The firmware can detect the end of a compressed file, so I can sort of
> support the drain and partial_drain but to get this whole thing working
> was just not something I could do blindly.

The kernel should view this as a continuous bit stream and wont know
EOF. Only firmware will know about it and with metadata, able to skip
those.

> Also: I have assorted ogg/mp3/flac in my music library and I tend to
> play them in random, which defeats the gapless.

You are a non typical users :-) To test this, we would same track in
album. A typical user would be running spotify with same format :-)

> The gapless support is not covered in this initial version, but can be
> added later.
> 

-- 
~Vinod

  parent reply	other threads:[~2026-09-08 12:37 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-04  7:31 [PATCH 00/23] ALSA compress / ASoC compress / SOF: Compressed audio support with IPC4 Peter Ujfalusi
2026-09-04  7:31 ` [PATCH 01/23] ALSA: compress: pin card module while stream is open Peter Ujfalusi
2026-09-04  7:50   ` Takashi Iwai
2026-09-04  8:03     ` Péter Ujfalusi
2026-09-04  7:31 ` [PATCH 02/23] ALSA: compress: stop active streams on disconnect Peter Ujfalusi
2026-09-04  7:51   ` Takashi Iwai
2026-09-04  7:31 ` [PATCH 03/23] ASoC: soc-compress: Provide a runtime for the compressed FE substream Peter Ujfalusi
2026-09-04  7:31 ` [PATCH 04/23] ASoC: soc-compress: Implement trigger FE-BE sequencing as with normal PCMs Peter Ujfalusi
2026-09-04 19:45   ` Mark Brown
2026-09-07  5:25     ` Péter Ujfalusi
2026-09-07 11:26       ` Pierre-Louis Bossart
2026-09-07 14:03         ` Péter Ujfalusi
2026-09-07 16:53           ` Vinod Koul
2026-09-07 19:55             ` Pierre-Louis Bossart
2026-09-08  6:37               ` Péter Ujfalusi
2026-09-08  6:58                 ` Vinod Koul
2026-09-08  8:41                   ` Péter Ujfalusi
2026-09-08 12:06                     ` Pierre-Louis Bossart
2026-09-08 14:04                       ` Péter Ujfalusi
2026-09-08 12:37                     ` Vinod Koul [this message]
2026-09-08 14:13                       ` Péter Ujfalusi
2026-09-08 14:54                         ` Pierre-Louis Bossart
2026-09-09 13:53                           ` Péter Ujfalusi
2026-09-09 20:22                             ` Pierre-Louis Bossart
2026-09-08 17:12                         ` Vinod Koul
2026-09-09 14:09                           ` Péter Ujfalusi
2026-09-08  6:52               ` Vinod Koul
2026-09-04  7:31 ` [PATCH 05/23] ASoC: soc-compress: Stop running dpcm on free Peter Ujfalusi
2026-09-04  7:31 ` [PATCH 06/23] ASoC: SOF: compress: Rename compress ops with ipc3 prefix Peter Ujfalusi
2026-09-04  7:31 ` [PATCH 07/23] ASoC: SOF: ipc4-pcm: harden pipeline teardown races Peter Ujfalusi
2026-09-04  7:31 ` [PATCH 08/23] ASoC: SOF: sof-audio: do not dereference swidget->spipe unconditionally on free Peter Ujfalusi
2026-09-04  7:31 ` [PATCH 09/23] ASoC: SOF: sof-audio: Expose a couple of functions Peter Ujfalusi
2026-09-04  7:31 ` [PATCH 10/23] ASoC: SOF: pcm: Modify the signature of a couple of PCM IPC ops Peter Ujfalusi
2026-09-04  7:31 ` [PATCH 11/23] ASoC: SOF: intel: hda-stream: Clear the current position when releasing stream Peter Ujfalusi
2026-09-04  7:31 ` [PATCH 12/23] ASoC: SOF: ops: Add new platform-specific ops for compress Peter Ujfalusi
2026-09-04  7:31 ` [PATCH 13/23] ASoC: SOF: ipc4: Add definition of module data in init_ext object type Peter Ujfalusi
2026-09-04  7:31 ` [PATCH 14/23] ASoC: SOF: ipc4-topology: Support init_ext_module_data for process modules Peter Ujfalusi
2026-09-04  7:31 ` [PATCH 15/23] ASoC: SOF: ipc4-pcm: Make the timestamp info usable outside of ipc4-pcm.c Peter Ujfalusi
2026-09-04  7:31 ` [PATCH 16/23] ASoC: SOF: ipc4/ipc4-loader: Add SOF_INFO and CODEC_INFO to fw_config_params Peter Ujfalusi
2026-09-04  7:31 ` [PATCH 17/23] ASoC: SOF: ipc4-pcm: Handle COMPR DRAIN triggers as EOS pipeline state Peter Ujfalusi
2026-09-04  7:31 ` [PATCH 18/23] ASoC: SOF: ipc4-topology: Set FAST_MODE for host copier in compr mode Peter Ujfalusi
2026-09-04  7:31 ` [PATCH 19/23] ASoC: SOF: Add support for IPC4 compressed Peter Ujfalusi
2026-09-04 20:08   ` Mark Brown
2026-09-07  5:15     ` Péter Ujfalusi
2026-09-09  6:48       ` Péter Ujfalusi
2026-09-04  7:31 ` [PATCH 20/23] ASoC: SOF: ipc4: Handle compressed drain done notification from firmware Peter Ujfalusi
2026-09-04  7:31 ` [PATCH 21/23] ASoC: SOF: Intel: Kconfig: Remove redundant IPC version selects Peter Ujfalusi
2026-09-04  7:31 ` [PATCH 22/23] ASoC: SOF: Intel: Kconfig: Select compress support for TGL+ platforms Peter Ujfalusi
2026-09-04  7:31 ` [PATCH 23/23] ASoC: SOF: topology: Add support for decoder and encoder widgets Peter Ujfalusi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=aqABhbYne6RIree6@parshuram \
    --to=vkoul@kernel.org \
    --cc=Vijendar.Mukunda@amd.com \
    --cc=broonie@kernel.org \
    --cc=daniel.baluta@nxp.com \
    --cc=kai.vehmanen@linux.intel.com \
    --cc=lgirdwood@gmail.com \
    --cc=linux-sound@vger.kernel.org \
    --cc=perex@perex.cz \
    --cc=peter.ujfalusi@linux.intel.com \
    --cc=pierre-louis.bossart@linux.dev \
    --cc=srinivas.kandagatla@oss.qualcomm.com \
    --cc=tiwai@suse.com \
    --cc=yung-chuan.liao@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox