topology2: cavs-sdw: add compressed playback pipeline with phase vocoder#10986
Draft
singalsu wants to merge 2 commits into
Draft
topology2: cavs-sdw: add compressed playback pipeline with phase vocoder#10986singalsu wants to merge 2 commits into
singalsu wants to merge 2 commits into
Conversation
Add a new compr-speed-playback FE pipeline class for cavs-sdw that runs a decoder followed by the phase_vocoder module before the usual SRC, gain and mixin stages. The decoder and phase_vocoder widgets are placed on the DP scheduler so they can consume variable amounts of input per output period, which is what enables time-scaling playback of a compressed stream. The pipeline is instantiated from a new platform/intel/compr-speed.conf for both the Jack (COMPRESSED_SPEED_1) and Speaker (COMPRESSED_SPEED_2) paths, with defaults added to compr-default.conf (PCM IDs 60/62, pipeline IDs 95/96, PCM names "Compress Speed Playback[ 2]"). cavs-sdw gains matching COMPR_SPEED_* defines, an IncludeByKey.COMPRESSED_SPEED hook, and propagation of COMPRESSED_SPEED_1/2 through the Jack and amp-links branches so the pipeline is only built when it is requested. Two development targets, sof-arl-cs42l43-l0-compr-speed and sof-mtl-rt713-l0-rt1316-l12-compr-speed, are added to tplg-targets.cmake so the new topology can be built and exercised. Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
With this change it is possible to run the Phase Vocoder without need for DP-DP bind feature. When scheduled normally the render speeds over 1 must be disabled since it would cause immediate xrun and playback fail. Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
Contributor
There was a problem hiding this comment.
Pull request overview
Adds an example topology2 configuration for cAVS SoundWire platforms that enables a compressed playback path with phase vocoder “speed” control (via COMPRESSED=true + COMPRESSED_SPEED=true), intended to demonstrate the combined feature set.
Changes:
- Introduces a new
compr-speed-playbackFE pipeline class that inserts a phase vocoder between decoder and post-processing. - Adds platform/topology wiring and defaults to instantiate one or two compressed-speed playback PCMs (jack/speaker) under feature keys.
- Updates phase vocoder control options to disable >1.0x speeds and adds new PV-specific format include files.
Reviewed changes
Copilot reviewed 8 out of 8 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| tools/topology/topology2/platform/intel/compr-speed.conf | Adds platform objects/routes for compressed-speed playback pipelines (1+2 instances). |
| tools/topology/topology2/platform/intel/compr-default.conf | Adds default COMPRESSED_SPEED* feature flags and IDs/names. |
| tools/topology/topology2/include/pipelines/cavs/compr-speed-playback.conf | New pipeline class inserting phase vocoder into compressed playback chain. |
| tools/topology/topology2/include/formats/compr_output_audio_formats_pv.conf | Adds PV output format definitions with explicit obs sizing. |
| tools/topology/topology2/include/formats/compr_input_audio_formats_pv.conf | Adds PV input format definitions with explicit ibs sizing. |
| tools/topology/topology2/include/components/phase_vocoder.conf | Disables enum speeds > 1.0x and documents DP/DP limitation rationale. |
| tools/topology/topology2/development/tplg-targets.cmake | Adds new development topology targets enabling COMPRESSED_SPEED=true. |
| tools/topology/topology2/cavs-sdw.conf | Wires in the new pipeline include + adds COMPRESSED_SPEED include hook and instance toggles. |
Comment on lines
+23
to
+27
| <include/components/gain.conf> | ||
| <include/components/decoder.conf> | ||
| <include/components/phase_vocoder.conf> | ||
| <include/components/micsel.conf> | ||
|
|
Comment on lines
+49
to
+53
| host-copier."1" { | ||
| type "aif_in" | ||
| node_type $HDA_HOST_OUTPUT_CLASS | ||
| num_output_pins 1 | ||
| } |
Comment on lines
+59
to
+64
| phase_vocoder."1" { | ||
| # Commented out to avoid DP-DP bind limitation. This limits the | ||
| # Phase Vocodeer module to support only slow playback 0.5 - 1.0x | ||
| # with no speed up. | ||
| # scheduler_domain "DP" | ||
| } |
Comment on lines
+1
to
+4
| # Phase vocoder input formats: mono + stereo, all rates, | ||
| # 8/16/24/32-bit. ibs = frames * channels * bytes_per_sample | ||
| # (480 frames per DP period, matching current stereo values). | ||
| num_input_audio_formats 40 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Example of topology with both COMPRESSED=true,COMPRESSED_SPEED=true enabled