This format is similar to an existing 20-bit PCM format SNDRV_PCM_FORMAT_{S,U}20_3, however it occupies 4 bytes instead of 3.
Changes from v1: Split the monolithic submission into separate commits. (Note that v2 wasn't tagged as such.)
Changes from v2: Add commas at the end of two possible last entries of the snd_pcm_format_t enum so diffs will be more readable when new PCM formats are added in the future, remove asserts from snd_pcm_linear_{get,put}_index().
Maciej S. Szmigiero (4): asound.h: add SNDRV_PCM_FORMAT_{S,U}20 pcm: add and describe SND_PCM_FORMAT_{S,U}20 pcm: linear, route: handle linear formats with 20-bit sample on 4 bytes pcm: plug: add SND_PCM_FORMAT_{S,U}20 to linear_preferred_formats
include/pcm.h | 20 ++++++++++++++++++-- include/sound/asound.h | 9 +++++++++ src/pcm/pcm.c | 10 ++++++++++ src/pcm/pcm_linear.c | 14 +++++++++++--- src/pcm/pcm_local.h | 4 ++++ src/pcm/pcm_misc.c | 41 ++++++++++++++++++++++++++++++++++++++--- src/pcm/pcm_plug.c | 11 +++++++++++ src/pcm/pcm_route.c | 6 ++++-- src/pcm/plugin_ops.h | 50 ++++++++++++++++++++++++++++++++++++++++++++++---- 9 files changed, 151 insertions(+), 14 deletions(-)