Sound Open Firmware
Loading...
Searching...
No Matches
iir_df2t_generic.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: BSD-3-Clause
2 *
3 * Copyright(c) 2021 Intel Corporation. All rights reserved.
4 *
5 * Author: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
6 */
7
14#ifndef __IIR_DF2T_GENERIC_H__
15#define __IIR_DF2T_GENERIC_H__
16
17#include <stdint.h>
18
25static inline int16_t iir_df2t_s16(struct iir_state_df2t *iir, int16_t x)
26{
27 return sat_int16(Q_SHIFT_RND(iir_df2t(iir, ((int32_t)x) << 16), 31, 15));
28}
29
36static inline int32_t iir_df2t_s24(struct iir_state_df2t *iir, int32_t x)
37{
38 return sat_int24(Q_SHIFT_RND(iir_df2t(iir, x << 8), 31, 23));
39}
40
47static inline int16_t iir_df2t_s32_s16(struct iir_state_df2t *iir, int32_t x)
48{
49 return sat_int16(Q_SHIFT_RND(iir_df2t(iir, x), 31, 15));
50}
51
58static inline int32_t iir_df2t_s32_s24(struct iir_state_df2t *iir, int32_t x)
59{
60 return sat_int24(Q_SHIFT_RND(iir_df2t(iir, x), 31, 23));
61}
62
63#endif /* __IIR_DF2T_GENERIC_H__ */
64
static int16_t sat_int16(int32_t x)
Saturate a 32-bit integer to signed 16-bit integer range.
Definition format_generic.h:56
static int32_t sat_int24(int32_t x)
Saturate a 32-bit integer to signed 24-bit integer range.
Definition format_generic.h:41
int32_t iir_df2t(struct iir_state_df2t *iir, int32_t x)
static int16_t iir_df2t_s16(struct iir_state_df2t *iir, int16_t x)
Filter a 16-bit PCM sample using Direct Form 2 Transposed IIR filter.
Definition iir_df2t_generic.h:25
static int16_t iir_df2t_s32_s16(struct iir_state_df2t *iir, int32_t x)
Filter a 32-bit PCM input sample producing a 16-bit output sample using DF2T.
Definition iir_df2t_generic.h:47
static int32_t iir_df2t_s32_s24(struct iir_state_df2t *iir, int32_t x)
Filter a 32-bit PCM input sample producing a 24-bit output sample using DF2T.
Definition iir_df2t_generic.h:58
static int32_t iir_df2t_s24(struct iir_state_df2t *iir, int32_t x)
Filter a 24-bit PCM sample using Direct Form 2 Transposed IIR filter.
Definition iir_df2t_generic.h:36
#define Q_SHIFT_RND(x, src_q, dst_q)
Definition format.h:78
Definition iir_df2t.h:25