libdragon
Loading...
Searching...
No Matches
libopus_internal.h
Go to the documentation of this file.
1
7#ifndef LIBDRAGON_AUDIO_LIBOPUS_INTERNAL_H
8#define LIBDRAGON_AUDIO_LIBOPUS_INTERNAL_H
9
10// Activate fixed point mode on N64. Floating point works as well in its
11// reference implementation, but our RSP-accelerated version requires
12// fixed point.
13#define FIXED_POINT
14
15// Activate support for CELT custom modes. We have pregenerated the two common
16// custom modes in static_modes_fixed.h, but we are going to allow for runtime
17// mode generation as well for now.
18#define CUSTOM_MODES
19//#define CUSTOM_MODES_ONLY /* Disable runtime custom mode generation */
20
21// Some config macros, since we don't run configure
22#define USE_ALLOCA
23#define HAVE_LRINTF
24#define HAVE_LRINT
25
26#include "opus/arch.h"
27#include "opus/os_support.h"
28#include "opus/opus_custom.h"
29#include "opus/mdct.h"
30
31#ifdef N64
32
33// Activate RSP-specific optimizations.
34#define RSP_IMDCT 1
35#define RSP_COMB_FILTER 1
36#define RSP_DEEMPHASIS 1
37
38void rsp_opus_init(void);
39
40void rsp_opus_comb_filter_const(opus_val32 *y, opus_val32 *x, int T, int N,
41 opus_val16 g10, opus_val16 g11, opus_val16 g12, int arch);
42
43void rsp_opus_comb_filter_dual(opus_val32 *y, opus_val32 *x, int T0, int T1, int N,
44 opus_val16 g00, opus_val16 g01, opus_val16 g02,
45 opus_val16 g10, opus_val16 g11, opus_val16 g12,
46 const opus_val16 *window);
47
48void rsp_opus_deemphasis(celt_sig *in[], opus_val16 *pcm, int N, int C, int downsample, const opus_val16 *coef,
49 celt_sig *mem, int accum);
50
51void rsp_clt_mdct_backward(const mdct_lookup *l, kiss_fft_scalar *in, kiss_fft_scalar * OPUS_RESTRICT out,
52 const opus_val16 * OPUS_RESTRICT window, int overlap, int shift, int stride, int B, int NB, int arch);
53
54void rsp_opus_memmove(celt_sig *dst, celt_sig *src, opus_int32 len);
55void rsp_opus_clear(celt_sig *dst, opus_int32 len);
56
57#endif
58
59#endif
void rsp_opus_comb_filter_const(opus_val32 *y, opus_val32 *x, int T, int N, opus_val16 g10, opus_val16 g11, opus_val16 g12, int arch)
Run a comb filter on the RSP.
Definition libopus_rsp.c:668
void rsp_opus_comb_filter_dual(opus_val32 *y, opus_val32 *x, int T0, int T1, int N, opus_val16 g00, opus_val16 g01, opus_val16 g02, opus_val16 g10, opus_val16 g11, opus_val16 g12, const opus_val16 *window)
Run a dual comb filter on the RSP.
Definition libopus_rsp.c:728
void rsp_clt_mdct_backward(const mdct_lookup *l, kiss_fft_scalar *in, kiss_fft_scalar *OPUS_RESTRICT out, const opus_val16 *OPUS_RESTRICT window, int overlap, int shift, int stride, int B, int NB, int arch)
Run a IMDCT on RSP.
Definition libopus_rsp.c:404
void rsp_opus_init(void)
Initialize Opus RSP acceleration.
Definition libopus_rsp.c:24
void rsp_opus_clear(celt_sig *dst, opus_int32 len)
Clear output buffer with RSP. Len must be in 32-bit samples (not bytes)
Definition libopus_rsp.c:106
void rsp_opus_memmove(celt_sig *dst, celt_sig *src, opus_int32 len)
Do a memmove with RSP to move back samples in the output buffer.
Definition libopus_rsp.c:100
void rsp_opus_deemphasis(celt_sig *in[], opus_val16 *pcm, int N, int C, int downsample, const opus_val16 *coef, celt_sig *mem, int accum)
Run the emphasis filter on teh RSP.
Definition libopus_rsp.c:854