Lines Matching +full:src +full:- +full:2
1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
4 * Copyright (c) 2006-2009 Ariff Abdullah <ariff@FreeBSD.org>
6 * Copyright (c) 2024-2025 The FreeBSD Foundation
16 * 2. Redistributions in binary form must reproduce the above copyright
80 #define PCM_S8_MIN -0x80
82 #define PCM_S16_MIN -0x8000
84 #define PCM_S24_MIN -0x800000
88 #define PCM_S32_MIN -0x80000000L
91 #define PCM_S32_MIN -0x80000000LL
95 #define PCM_S32_MIN (-0x7fffffff - 1)
98 /* Bytes-per-sample definition */
100 #define PCM_16_BPS 2
129 pcm_sample_read(const uint8_t *src, uint32_t fmt) in pcm_sample_read() argument
141 v = _G711_TO_INTPCM(xlaw_conv_tables.ulaw_to_u8, *src); in pcm_sample_read()
144 v = _G711_TO_INTPCM(xlaw_conv_tables.alaw_to_u8, *src); in pcm_sample_read()
147 v = INTPCM_T((int8_t)*src); in pcm_sample_read()
150 v = INTPCM_T((int8_t)(*src ^ 0x80)); in pcm_sample_read()
153 v = INTPCM_T(src[0] | (int8_t)src[1] << 8); in pcm_sample_read()
156 v = INTPCM_T(src[1] | (int8_t)src[0] << 8); in pcm_sample_read()
159 v = INTPCM_T(src[0] | (int8_t)(src[1] ^ 0x80) << 8); in pcm_sample_read()
162 v = INTPCM_T(src[1] | (int8_t)(src[0] ^ 0x80) << 8); in pcm_sample_read()
165 v = INTPCM_T(src[0] | src[1] << 8 | (int8_t)src[2] << 16); in pcm_sample_read()
168 v = INTPCM_T(src[2] | src[1] << 8 | (int8_t)src[0] << 16); in pcm_sample_read()
171 v = INTPCM_T(src[0] | src[1] << 8 | in pcm_sample_read()
172 (int8_t)(src[2] ^ 0x80) << 16); in pcm_sample_read()
175 v = INTPCM_T(src[2] | src[1] << 8 | in pcm_sample_read()
176 (int8_t)(src[0] ^ 0x80) << 16); in pcm_sample_read()
179 v = INTPCM_T(src[0] | src[1] << 8 | src[2] << 16 | in pcm_sample_read()
180 (int8_t)src[3] << 24); in pcm_sample_read()
183 v = INTPCM_T(src[3] | src[2] << 8 | src[1] << 16 | in pcm_sample_read()
184 (int8_t)src[0] << 24); in pcm_sample_read()
187 v = INTPCM_T(src[0] | src[1] << 8 | src[2] << 16 | in pcm_sample_read()
188 (int8_t)(src[3] ^ 0x80) << 24); in pcm_sample_read()
191 v = INTPCM_T(src[3] | src[2] << 8 | src[1] << 16 | in pcm_sample_read()
192 (int8_t)(src[0] ^ 0x80) << 24); in pcm_sample_read()
197 v = INTPCM_T(src[0] | src[1] << 8 | src[2] << 16 | in pcm_sample_read()
198 (int8_t)src[3] << 24); in pcm_sample_read()
200 v = INTPCM_T(src[3] | src[2] << 8 | src[1] << 16 | in pcm_sample_read()
201 (int8_t)src[0] << 24); in pcm_sample_read()
204 /* NaN, +/- Inf or too small */ in pcm_sample_read()
215 e += 8 - 127; in pcm_sample_read()
217 m >>= -e; in pcm_sample_read()
220 v = INTPCM_T((s == 0) ? m : -m); in pcm_sample_read()
232 * Read sample and normalize to 32-bit magnitude.
235 pcm_sample_read_norm(const uint8_t *src, uint32_t fmt) in pcm_sample_read_norm() argument
237 return (pcm_sample_read(src, fmt) << (32 - AFMT_BIT(fmt))); in pcm_sample_read_norm()
244 pcm_sample_read_calc(const uint8_t *src, uint32_t fmt) in pcm_sample_read_calc() argument
248 v = pcm_sample_read(src, fmt); in pcm_sample_read_calc()
288 v = -v; in pcm_sample_write()
290 e = 127 - 8; in pcm_sample_write()
297 e--; in pcm_sample_write()
340 dst[2] = v >> 16; in pcm_sample_write()
343 dst[2] = v; in pcm_sample_write()
350 dst[2] = (v >> 16) ^ 0x80; in pcm_sample_write()
353 dst[2] = v; in pcm_sample_write()
361 dst[2] = v >> 16; in pcm_sample_write()
367 dst[2] = v >> 8; in pcm_sample_write()
374 dst[2] = v >> 16; in pcm_sample_write()
379 dst[2] = v >> 8; in pcm_sample_write()
395 pcm_sample_write(dst, v >> (32 - AFMT_BIT(fmt)), fmt); in pcm_sample_write_norm()
405 /* Shift back to 32-bit magnitude. */ in pcm_sample_write_calc()