public inbox for alsa-devel@alsa-project.org
 help / color / mirror / Atom feed
* Utils: cplay: Fix WAV header parsing for multi-channel (5.1/7.1) formats
       [not found] <alsa-project/tinycompress/pr/32@alsa-project.org>
@ 2026-03-11 11:08 ` GitHub pull_request - opened
  0 siblings, 0 replies; only message in thread
From: GitHub pull_request - opened @ 2026-03-11 11:08 UTC (permalink / raw)
  To: alsa-devel

alsa-project/tinycompress pull request #32 was opened from singalsu:

Multi-channel WAV files (>2 channels) use WAVE_FORMAT_EXTENSIBLE (type 0xFFFE) with a larger fmt chunk that includes a channel mask and subformat GUID. The existing parser only handled basic PCM (type 0x0001), causing several issues with 5.1 (6ch) and 7.1 (8ch) content:

 - The fixed-size fread of struct wave_header (44 bytes) misaligned the data chunk read when the fmt chunk was larger than 16 bytes, resulting in audio data being read from the wrong file offset.

 - No chunk scanning was performed, so intermediate chunks (fact, LIST, PEAK) between fmt and data caused parse failures.

 - The WAV channel mask (speaker positions FL, FR, FC, LFE, BL, BR, SL, SR) was never extracted, so firmware received ch_mode=0 and could not determine the correct channel-to-speaker routing.

Add parse_wave_file() that properly scans chunks, handles both basic PCM and WAVE_FORMAT_EXTENSIBLE formats, extracts the channel mask, and positions the file pointer at the start of audio data. For basic PCM files with >2 channels, a standard default channel mask is generated per the Microsoft WAV specification.

The channel mask is passed to firmware via snd_codec.ch_mode so it can correctly map channels to speaker positions. Also add 24-bit sample format support (SNDRV_PCM_FORMAT_S24_LE).

Request URL   : https://github.com/alsa-project/tinycompress/pull/32
Patch URL     : https://github.com/alsa-project/tinycompress/pull/32.patch
Repository URL: https://github.com/alsa-project/tinycompress

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2026-03-11 11:08 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <alsa-project/tinycompress/pr/32@alsa-project.org>
2026-03-11 11:08 ` Utils: cplay: Fix WAV header parsing for multi-channel (5.1/7.1) formats GitHub pull_request - opened

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox