All of lore.kernel.org
 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.