pcm: add and describe SND_PCM_FORMAT_{S, U}20

This patch adds and describes in various functions that query format
properties SND_PCM_FORMAT_{S,U}20 formats that were recently added to the
kernel as SNDRV_PCM_FORMAT_{S,U}20.

These formats are similar to existing 20-bit PCM formats
SND_PCM_FORMAT_{S,U}20_3, however they occupy 4 bytes instead of 3.

Signed-off-by: Maciej S. Szmigiero <mail@maciej.szmigiero.name>
Reviewed-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
Maciej S. Szmigiero 2017-12-14 14:52:07 +01:00 committed by Takashi Iwai
parent 22e6b3c200
commit d67e42c139
4 changed files with 70 additions and 5 deletions

View file

@ -175,6 +175,14 @@ typedef enum _snd_pcm_format {
SND_PCM_FORMAT_MPEG,
/** GSM */
SND_PCM_FORMAT_GSM,
/** Signed 20bit Little Endian in 4bytes format, LSB justified */
SND_PCM_FORMAT_S20_LE,
/** Signed 20bit Big Endian in 4bytes format, LSB justified */
SND_PCM_FORMAT_S20_BE,
/** Unsigned 20bit Little Endian in 4bytes format, LSB justified */
SND_PCM_FORMAT_U20_LE,
/** Unsigned 20bit Big Endian in 4bytes format, LSB justified */
SND_PCM_FORMAT_U20_BE,
/** Special */
SND_PCM_FORMAT_SPECIAL = 31,
/** Signed 24bit Little Endian in 3bytes format */
@ -239,7 +247,11 @@ typedef enum _snd_pcm_format {
/** Float 64 bit CPU endian */
SND_PCM_FORMAT_FLOAT64 = SND_PCM_FORMAT_FLOAT64_LE,
/** IEC-958 CPU Endian */
SND_PCM_FORMAT_IEC958_SUBFRAME = SND_PCM_FORMAT_IEC958_SUBFRAME_LE
SND_PCM_FORMAT_IEC958_SUBFRAME = SND_PCM_FORMAT_IEC958_SUBFRAME_LE,
/** Signed 20bit in 4bytes format, LSB justified, CPU Endian */
SND_PCM_FORMAT_S20 = SND_PCM_FORMAT_S20_LE,
/** Unsigned 20bit in 4bytes format, LSB justified, CPU Endian */
SND_PCM_FORMAT_U20 = SND_PCM_FORMAT_U20_LE,
#elif __BYTE_ORDER == __BIG_ENDIAN
/** Signed 16 bit CPU endian */
SND_PCM_FORMAT_S16 = SND_PCM_FORMAT_S16_BE,
@ -258,7 +270,11 @@ typedef enum _snd_pcm_format {
/** Float 64 bit CPU endian */
SND_PCM_FORMAT_FLOAT64 = SND_PCM_FORMAT_FLOAT64_BE,
/** IEC-958 CPU Endian */
SND_PCM_FORMAT_IEC958_SUBFRAME = SND_PCM_FORMAT_IEC958_SUBFRAME_BE
SND_PCM_FORMAT_IEC958_SUBFRAME = SND_PCM_FORMAT_IEC958_SUBFRAME_BE,
/** Signed 20bit in 4bytes format, LSB justified, CPU Endian */
SND_PCM_FORMAT_S20 = SND_PCM_FORMAT_S20_BE,
/** Unsigned 20bit in 4bytes format, LSB justified, CPU Endian */
SND_PCM_FORMAT_U20 = SND_PCM_FORMAT_U20_BE,
#else
#error "Unknown endian"
#endif