2 * PCM Interface - misc routines
3 * Copyright (c) 1998 by Jaroslav Kysela <perex@suse.cz>
6 * This library is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU Library General Public License as
8 * published by the Free Software Foundation; either version 2 of
9 * the License, or (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU Library General Public License for more details.
16 * You should have received a copy of the GNU Library General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
28 #include <sys/ioctl.h>
30 #include "pcm_local.h"
32 int snd_pcm_format_signed(int format)
36 case SND_PCM_SFMT_S16_LE:
37 case SND_PCM_SFMT_S16_BE:
38 case SND_PCM_SFMT_S24_LE:
39 case SND_PCM_SFMT_S24_BE:
40 case SND_PCM_SFMT_S32_LE:
41 case SND_PCM_SFMT_S32_BE:
44 case SND_PCM_SFMT_U16_LE:
45 case SND_PCM_SFMT_U16_BE:
46 case SND_PCM_SFMT_U24_LE:
47 case SND_PCM_SFMT_U24_BE:
48 case SND_PCM_SFMT_U32_LE:
49 case SND_PCM_SFMT_U32_BE:
56 int snd_pcm_format_unsigned(int format)
60 val = snd_pcm_format_signed(format);
66 int snd_pcm_format_little_endian(int format)
69 case SND_PCM_SFMT_S16_LE:
70 case SND_PCM_SFMT_U16_LE:
71 case SND_PCM_SFMT_S24_LE:
72 case SND_PCM_SFMT_U24_LE:
73 case SND_PCM_SFMT_S32_LE:
74 case SND_PCM_SFMT_U32_LE:
75 case SND_PCM_SFMT_FLOAT_LE:
76 case SND_PCM_SFMT_FLOAT64_LE:
77 case SND_PCM_SFMT_IEC958_SUBFRAME_LE:
79 case SND_PCM_SFMT_S16_BE:
80 case SND_PCM_SFMT_U16_BE:
81 case SND_PCM_SFMT_S24_BE:
82 case SND_PCM_SFMT_U24_BE:
83 case SND_PCM_SFMT_S32_BE:
84 case SND_PCM_SFMT_U32_BE:
85 case SND_PCM_SFMT_FLOAT_BE:
86 case SND_PCM_SFMT_FLOAT64_BE:
87 case SND_PCM_SFMT_IEC958_SUBFRAME_BE:
94 int snd_pcm_format_big_endian(int format)
98 val = snd_pcm_format_little_endian(format);
104 int snd_pcm_format_width(int format)
107 case SND_PCM_SFMT_S8:
108 case SND_PCM_SFMT_U8:
110 case SND_PCM_SFMT_S16_LE:
111 case SND_PCM_SFMT_S16_BE:
112 case SND_PCM_SFMT_U16_LE:
113 case SND_PCM_SFMT_U16_BE:
115 case SND_PCM_SFMT_S24_LE:
116 case SND_PCM_SFMT_S24_BE:
117 case SND_PCM_SFMT_U24_LE:
118 case SND_PCM_SFMT_U24_BE:
120 case SND_PCM_SFMT_S32_LE:
121 case SND_PCM_SFMT_S32_BE:
122 case SND_PCM_SFMT_U32_LE:
123 case SND_PCM_SFMT_U32_BE:
124 case SND_PCM_SFMT_FLOAT_LE:
125 case SND_PCM_SFMT_FLOAT_BE:
127 case SND_PCM_SFMT_FLOAT64_LE:
128 case SND_PCM_SFMT_FLOAT64_BE:
130 case SND_PCM_SFMT_IEC958_SUBFRAME_LE:
131 case SND_PCM_SFMT_IEC958_SUBFRAME_BE:
133 case SND_PCM_SFMT_MU_LAW:
134 case SND_PCM_SFMT_A_LAW:
136 case SND_PCM_SFMT_IMA_ADPCM:
143 ssize_t snd_pcm_format_size(int format, size_t samples)
150 case SND_PCM_SFMT_S8:
151 case SND_PCM_SFMT_U8:
153 case SND_PCM_SFMT_S16_LE:
154 case SND_PCM_SFMT_S16_BE:
155 case SND_PCM_SFMT_U16_LE:
156 case SND_PCM_SFMT_U16_BE:
158 case SND_PCM_SFMT_S24_LE:
159 case SND_PCM_SFMT_S24_BE:
160 case SND_PCM_SFMT_U24_LE:
161 case SND_PCM_SFMT_U24_BE:
162 case SND_PCM_SFMT_S32_LE:
163 case SND_PCM_SFMT_S32_BE:
164 case SND_PCM_SFMT_U32_LE:
165 case SND_PCM_SFMT_U32_BE:
166 case SND_PCM_SFMT_FLOAT_LE:
167 case SND_PCM_SFMT_FLOAT_BE:
169 case SND_PCM_SFMT_FLOAT64_LE:
170 case SND_PCM_SFMT_FLOAT64_BE:
172 case SND_PCM_SFMT_IEC958_SUBFRAME_LE:
173 case SND_PCM_SFMT_IEC958_SUBFRAME_BE:
175 case SND_PCM_SFMT_MU_LAW:
176 case SND_PCM_SFMT_A_LAW:
178 case SND_PCM_SFMT_IMA_ADPCM: