Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Michael Black
OpenXG-RAN
Commits
e1b9881c
Commit
e1b9881c
authored
Apr 05, 2022
by
Laurent THOMAS
Committed by
Robert Schmidt
Apr 08, 2022
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix memory errors
parent
9547cb4f
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
161 additions
and
152 deletions
+161
-152
openair1/PHY/INIT/nr_init_ue.c
openair1/PHY/INIT/nr_init_ue.c
+16
-16
openair1/PHY/NR_UE_TRANSPORT/sss_nr.c
openair1/PHY/NR_UE_TRANSPORT/sss_nr.c
+3
-0
openair1/PHY/TOOLS/oai_dfts.c
openair1/PHY/TOOLS/oai_dfts.c
+21
-6
openair1/PHY/TOOLS/tools_defs.h
openair1/PHY/TOOLS/tools_defs.h
+121
-130
No files found.
openair1/PHY/INIT/nr_init_ue.c
View file @
e1b9881c
...
...
@@ -311,11 +311,26 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue, int nb_connected_gNB)
}
// DLSCH
for
(
gNB_id
=
0
;
gNB_id
<
ue
->
n_connected_gNB
;
gNB_id
++
)
{
for
(
gNB_id
=
0
;
gNB_id
<
ue
->
n_connected_gNB
+
1
;
gNB_id
++
)
{
for
(
th_id
=
0
;
th_id
<
RX_NB_TH_MAX
;
th_id
++
)
{
ue
->
pdsch_vars
[
th_id
][
gNB_id
]
=
(
NR_UE_PDSCH
*
)
malloc16_clear
(
sizeof
(
NR_UE_PDSCH
));
}
for
(
th_id
=
0
;
th_id
<
RX_NB_TH_MAX
;
th_id
++
)
{
phy_init_nr_ue_PDSCH
(
ue
->
pdsch_vars
[
th_id
][
gNB_id
],
fp
);
}
int
nb_codewords
=
NR_MAX_NB_LAYERS
>
4
?
2
:
1
;
for
(
th_id
=
0
;
th_id
<
RX_NB_TH_MAX
;
th_id
++
)
{
for
(
i
=
0
;
i
<
nb_codewords
;
i
++
)
{
ue
->
pdsch_vars
[
th_id
][
gNB_id
]
->
llr
[
i
]
=
(
int16_t
*
)
malloc16_clear
(
(
8
*
(
3
*
8
*
8448
))
*
sizeof
(
int16_t
)
);
//Q_m = 8 bits/Sym, Code_Rate=3, Number of Segments =8, Circular Buffer K_cb = 8448
}
for
(
i
=
0
;
i
<
NR_MAX_NB_LAYERS
;
i
++
)
{
ue
->
pdsch_vars
[
th_id
][
gNB_id
]
->
layer_llr
[
i
]
=
(
int16_t
*
)
malloc16_clear
(
(
8
*
(
3
*
8
*
8448
))
*
sizeof
(
int16_t
)
);
//Q_m = 8 bits/Sym, Code_Rate=3, Number of Segments =8, Circular Buffer K_cb = 8448
}
}
}
for
(
gNB_id
=
0
;
gNB_id
<
ue
->
n_connected_gNB
;
gNB_id
++
)
{
for
(
th_id
=
0
;
th_id
<
RX_NB_TH_MAX
;
th_id
++
)
{
ue
->
pdcch_vars
[
th_id
][
gNB_id
]
=
(
NR_UE_PDCCH
*
)
malloc16_clear
(
sizeof
(
NR_UE_PDCCH
));
}
...
...
@@ -342,21 +357,6 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue, int nb_connected_gNB)
ue
->
nr_srs_info
->
srs_estimated_channel_time_shifted
[
i
]
=
(
int32_t
*
)
malloc16_clear
(
fp
->
ofdm_symbol_size
*
MAX_NUM_NR_SRS_SYMBOLS
*
sizeof
(
int32_t
));
}
for
(
th_id
=
0
;
th_id
<
RX_NB_TH_MAX
;
th_id
++
)
{
phy_init_nr_ue_PDSCH
(
ue
->
pdsch_vars
[
th_id
][
gNB_id
],
fp
);
}
int
nb_codewords
=
NR_MAX_NB_LAYERS
>
4
?
2
:
1
;
for
(
th_id
=
0
;
th_id
<
RX_NB_TH_MAX
;
th_id
++
)
{
for
(
i
=
0
;
i
<
nb_codewords
;
i
++
)
{
ue
->
pdsch_vars
[
th_id
][
gNB_id
]
->
llr
[
i
]
=
(
int16_t
*
)
malloc16_clear
(
(
8
*
(
3
*
8
*
8448
))
*
sizeof
(
int16_t
)
);
//Q_m = 8 bits/Sym, Code_Rate=3, Number of Segments =8, Circular Buffer K_cb = 8448
}
for
(
i
=
0
;
i
<
NR_MAX_NB_LAYERS
;
i
++
)
{
ue
->
pdsch_vars
[
th_id
][
gNB_id
]
->
layer_llr
[
i
]
=
(
int16_t
*
)
malloc16_clear
(
(
8
*
(
3
*
8
*
8448
))
*
sizeof
(
int16_t
)
);
//Q_m = 8 bits/Sym, Code_Rate=3, Number of Segments =8, Circular Buffer K_cb = 8448
}
}
// 100 PRBs * 12 REs/PRB * 4 PDCCH SYMBOLS * 2 LLRs/RE
for
(
th_id
=
0
;
th_id
<
RX_NB_TH_MAX
;
th_id
++
)
{
ue
->
pdcch_vars
[
th_id
][
gNB_id
]
->
llr
=
(
int16_t
*
)
malloc16_clear
(
2
*
4
*
100
*
12
*
sizeof
(
uint16_t
)
);
...
...
openair1/PHY/NR_UE_TRANSPORT/sss_nr.c
View file @
e1b9881c
...
...
@@ -558,6 +558,9 @@ int rx_sss_nr(PHY_VARS_NR_UE *ue, UE_nr_rxtx_proc_t *proc, int32_t *tot_metric,
}
//#endif
if
(
Nid1
==
N_ID_1_NUMBER
)
return
-
1
;
int
re
=
0
;
int
im
=
0
;
d
=
(
int16_t
*
)
&
d_sss
[
Nid2
][
Nid1
];
...
...
openair1/PHY/TOOLS/oai_dfts.c
View file @
e1b9881c
...
...
@@ -10606,15 +10606,30 @@ int dfts_autoinit(void)
#ifndef MR_MAIN
void
dft
(
uint8_t
sizeidx
,
int16_t
*
sigF
,
int16_t
*
sig
,
unsigned
char
scale_flag
){
AssertFatal
((
sizeidx
>=
0
&&
sizeidx
<
(
int
)
DFT_SIZE_IDXTABLESIZE
),
"Invalid dft size index %i
\n
"
,
sizeidx
);
dft_ftab
[
sizeidx
](
sigF
,
sig
,
scale_flag
);
void
dft
(
uint8_t
sizeidx
,
int16_t
*
input
,
int16_t
*
output
,
unsigned
char
scale_flag
){
AssertFatal
((
sizeidx
>=
0
&&
sizeidx
<
DFT_SIZE_IDXTABLESIZE
),
"Invalid dft size index %i
\n
"
,
sizeidx
);
AssertFatal
(
((
intptr_t
)
output
&
0x1F
)
==
0
,
"Buffers should be 32 bytes aligned %p"
,
output
);
if
((
intptr_t
)
input
&
0x1F
)
{
LOG_D
(
PHY
,
"DFT called with input not aligned, add a memcpy, size %d
\n
"
,
sizeidx
);
int16_t
tmp
[
dft_ftab
[
sizeidx
].
size
*
2
]
__attribute__
((
aligned
(
32
)));
// input and output are not in right type (int16_t instead of c16_t)
memcpy
(
tmp
,
input
,
sizeof
tmp
);
dft_ftab
[
sizeidx
].
func
(
tmp
,
output
,
scale_flag
);
}
else
dft_ftab
[
sizeidx
].
func
(
input
,
output
,
scale_flag
);
};
void
idft
(
uint8_t
sizeidx
,
int16_t
*
sigF
,
int16_t
*
sig
,
unsigned
char
scale_flag
){
AssertFatal
((
sizeidx
>=
0
&&
sizeidx
<
(
int
)
IDFT_SIZE_IDXTABLESIZE
),
"Invalid idft size index %i
\n
"
,
sizeidx
);
idft_ftab
[
sizeidx
](
sigF
,
sig
,
scale_flag
);
void
idft
(
uint8_t
sizeidx
,
int16_t
*
input
,
int16_t
*
output
,
unsigned
char
scale_flag
){
AssertFatal
((
sizeidx
>=
0
&&
sizeidx
<
DFT_SIZE_IDXTABLESIZE
),
"Invalid idft size index %i
\n
"
,
sizeidx
);
AssertFatal
(
((
intptr_t
)
output
&
0x1F
)
==
0
,
"Buffers should be 32 bytes aligned %p"
,
output
);
if
((
intptr_t
)
input
&
0x1F
)
{
LOG_D
(
PHY
,
"DFT called with input not aligned, add a memcpy
\n
"
);
int16_t
tmp
[
idft_ftab
[
sizeidx
].
size
*
2
]
__attribute__
((
aligned
(
32
)));
// input and output are not in right type (int16_t instead of c16_t)
memcpy
(
tmp
,
input
,
sizeof
tmp
);
dft_ftab
[
sizeidx
].
func
(
tmp
,
output
,
scale_flag
);
}
else
idft_ftab
[
sizeidx
].
func
(
input
,
output
,
scale_flag
);
};
#endif
/*---------------------------------------------------------------------------------------*/
...
...
openair1/PHY/TOOLS/tools_defs.h
View file @
e1b9881c
...
...
@@ -181,106 +181,110 @@ This function performs optimized fixed-point radix-2 FFT/IFFT.
);
*/
#define FOREACH_DFTSZ(SZ_DEF) \
SZ_DEF(12) \
SZ_DEF(24) \
SZ_DEF(36) \
SZ_DEF(48) \
SZ_DEF(60) \
SZ_DEF(64) \
SZ_DEF(72) \
SZ_DEF(96) \
SZ_DEF(108) \
SZ_DEF(120) \
SZ_DEF(128) \
SZ_DEF(144) \
SZ_DEF(180) \
SZ_DEF(192) \
SZ_DEF(216) \
SZ_DEF(240) \
SZ_DEF(256) \
SZ_DEF(288) \
SZ_DEF(300) \
SZ_DEF(324) \
SZ_DEF(360) \
SZ_DEF(384) \
SZ_DEF(432) \
SZ_DEF(480) \
SZ_DEF(512) \
SZ_DEF(540) \
SZ_DEF(576) \
SZ_DEF(600) \
SZ_DEF(648) \
SZ_DEF(720) \
SZ_DEF(768) \
SZ_DEF(864) \
SZ_DEF(900) \
SZ_DEF(960) \
SZ_DEF(972) \
SZ_DEF(1024) \
SZ_DEF(1080) \
SZ_DEF(1152) \
SZ_DEF(1200) \
SZ_DEF(1296) \
SZ_DEF(1440) \
SZ_DEF(1500) \
SZ_DEF(1536) \
SZ_DEF(1620) \
SZ_DEF(1728) \
SZ_DEF(1800) \
SZ_DEF(1920) \
SZ_DEF(1944) \
SZ_DEF(2048) \
SZ_DEF(2160) \
SZ_DEF(2304) \
SZ_DEF(2400) \
SZ_DEF(2592) \
SZ_DEF(2700) \
SZ_DEF(2880) \
SZ_DEF(2916) \
SZ_DEF(3000) \
SZ_DEF(3072) \
SZ_DEF(3240) \
SZ_DEF(4096) \
SZ_DEF(6144) \
SZ_DEF(8192) \
SZ_DEF(9216) \
SZ_DEF(12288) \
SZ_DEF(18432) \
SZ_DEF(24576) \
SZ_DEF(36864) \
SZ_DEF(49152) \
SZ_DEF(73728) \
SZ_DEF(98304)
#define FOREACH_IDFTSZ(SZ_DEF) \
SZ_DEF(64) \
SZ_DEF(128) \
SZ_DEF(256) \
SZ_DEF(512) \
SZ_DEF(1024) \
SZ_DEF(1536) \
SZ_DEF(2048) \
SZ_DEF(3072) \
SZ_DEF(4096) \
SZ_DEF(6144) \
SZ_DEF(8192) \
SZ_DEF(9216) \
SZ_DEF(12288) \
SZ_DEF(18432) \
SZ_DEF(24576) \
SZ_DEF(36864) \
SZ_DEF(49152) \
SZ_DEF(73728) \
SZ_DEF(98304)
#ifdef OAIDFTS_MAIN
typedef
void
(
*
adftfunc_t
)(
int16_t
*
sigF
,
int16_t
*
sig
,
unsigned
char
scale_flag
);
typedef
void
(
*
aidftfunc_t
)(
int16_t
*
sigF
,
int16_t
*
sig
,
unsigned
char
scale_flag
);
void
dft12
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft24
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft36
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft48
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft60
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft64
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft72
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft96
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft108
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft120
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft128
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft144
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft180
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft192
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft216
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft240
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft256
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft288
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft300
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft324
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft360
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft384
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft432
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft480
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft512
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft540
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft576
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft600
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft648
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft720
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft768
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft864
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft900
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft960
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft972
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft1024
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft1080
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft1152
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft1200
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft1296
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft1440
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft1500
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft1536
(
int16_t
*
sigF
,
int16_t
*
sig
,
uint8_t
scale_flag
);
void
dft1620
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft1728
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft1800
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft1920
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft1944
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft2048
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft2160
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft2304
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft2400
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft2592
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft2700
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft2880
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft2916
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft3000
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft3072
(
int16_t
*
sigF
,
int16_t
*
sig
,
uint8_t
scale_flag
);
void
dft3240
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft4096
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft6144
(
int16_t
*
sigF
,
int16_t
*
sig
,
uint8_t
scale_flag
);
void
dft8192
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft9216
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft12288
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft18432
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft24576
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft36864
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft49152
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft73728
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
dft98304
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
idft64
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
idft128
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
idft256
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
idft512
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
idft1024
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
idft1536
(
int16_t
*
sigF
,
int16_t
*
sig
,
uint8_t
scale_flag
);
void
idft2048
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
idft3072
(
int16_t
*
sigF
,
int16_t
*
sig
,
uint8_t
scale_flag
);
void
idft4096
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
idft6144
(
int16_t
*
sigF
,
int16_t
*
sig
,
uint8_t
scale_flag
);
void
idft8192
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
idft9216
(
int16_t
*
x
,
int16_t
*
y
,
uint8_t
scale_flag
);
void
idft12288
(
int16_t
*
sigF
,
int16_t
*
sig
,
uint8_t
scale_flag
);
void
idft18432
(
int16_t
*
sigF
,
int16_t
*
sig
,
uint8_t
scale_flag
);
void
idft24576
(
int16_t
*
sigF
,
int16_t
*
sig
,
uint8_t
scale_flag
);
void
idft36864
(
int16_t
*
sigF
,
int16_t
*
sig
,
uint8_t
scale_flag
);
void
idft49152
(
int16_t
*
sigF
,
int16_t
*
sig
,
uint8_t
scale_flag
);
void
idft73728
(
int16_t
*
sigF
,
int16_t
*
sig
,
uint8_t
scale_flag
);
void
idft98304
(
int16_t
*
sigF
,
int16_t
*
sig
,
uint8_t
scale_flag
);
#define SZ_FUNC(Sz) void dft ## Sz(int16_t *x,int16_t *y,uint8_t scale_flag);
FOREACH_DFTSZ
(
SZ_FUNC
)
#define SZ_iFUNC(Sz) void idft ## Sz(int16_t *x,int16_t *y,uint8_t scale_flag);
FOREACH_IDFTSZ
(
SZ_iFUNC
)
#else
typedef
void
(
*
dftfunc_t
)(
uint8_t
sizeidx
,
int16_t
*
sigF
,
int16_t
*
sig
,
unsigned
char
scale_flag
);
...
...
@@ -294,46 +298,33 @@ void idft98304(int16_t *sigF,int16_t *sig,uint8_t scale_flag);
extern
int
load_dftslib
(
void
);
# endif
#endif
typedef
enum
DFT_size_idx
{
DFT_12
,
DFT_24
,
DFT_36
,
DFT_48
,
DFT_60
,
DFT_72
,
DFT_96
,
DFT_108
,
DFT_120
,
DFT_128
,
DFT_144
,
DFT_180
,
DFT_192
,
DFT_216
,
DFT_240
,
DFT_256
,
DFT_288
,
DFT_300
,
DFT_324
,
DFT_360
,
DFT_384
,
DFT_432
,
DFT_480
,
DFT_512
,
DFT_540
,
DFT_576
,
DFT_600
,
DFT_648
,
DFT_720
,
DFT_768
,
DFT_864
,
DFT_900
,
DFT_960
,
DFT_972
,
DFT_1024
,
DFT_1080
,
DFT_1152
,
DFT_1200
,
DFT_1296
,
DFT_1440
,
DFT_1500
,
DFT_1536
,
DFT_1620
,
DFT_1728
,
DFT_1800
,
DFT_1920
,
DFT_1944
,
DFT_2048
,
DFT_2160
,
DFT_2304
,
DFT_2400
,
DFT_2592
,
DFT_2700
,
DFT_2880
,
DFT_2916
,
DFT_3000
,
DFT_3072
,
DFT_3240
,
DFT_4096
,
DFT_6144
,
DFT_8192
,
DFT_9216
,
DFT_12288
,
DFT_18432
,
DFT_24576
,
DFT_36864
,
DFT_49152
,
DFT_73728
,
DFT_98304
,
DFT_SIZE_IDXTABLESIZE
}
dft_size_idx_t
;
#define SZ_ENUM(Sz) DFT_ ## Sz,
typedef
enum
dft_size_idx
{
FOREACH_DFTSZ
(
SZ_ENUM
)
DFT_SIZE_IDXTABLESIZE
}
dft_size_idx_t
;
#define SZ_iENUM(Sz) IDFT_ ## Sz,
typedef
enum
idft_size_idx
{
FOREACH_IDFTSZ
(
SZ_iENUM
)
IDFT_SIZE_IDXTABLESIZE
}
idft_size_idx_t
;
#ifdef OAIDFTS_MAIN
adftfunc_t
dft_ftab
[]
=
{
dft12
,
dft24
,
dft36
,
dft48
,
dft60
,
dft72
,
dft96
,
dft108
,
dft120
,
dft128
,
dft144
,
dft180
,
dft192
,
dft216
,
dft240
,
dft256
,
dft288
,
dft300
,
dft324
,
dft360
,
dft384
,
dft432
,
dft480
,
dft512
,
dft540
,
dft576
,
dft600
,
dft648
,
dft720
,
dft768
,
dft864
,
dft900
,
dft960
,
dft972
,
dft1024
,
dft1080
,
dft1152
,
dft1200
,
dft1296
,
dft1440
,
dft1500
,
dft1536
,
dft1620
,
dft1728
,
dft1800
,
dft1920
,
dft1944
,
dft2048
,
dft2160
,
dft2304
,
dft2400
,
dft2592
,
dft2700
,
dft2880
,
dft2916
,
dft3000
,
dft3072
,
dft3240
,
dft4096
,
dft6144
,
dft8192
,
dft9216
,
dft12288
,
dft18432
,
dft24576
,
dft36864
,
dft49152
,
dft73728
,
dft98304
};
#endif
#define SZ_PTR(Sz) {dft ## Sz,Sz},
struct
{
adftfunc_t
func
;
int
size
;}
dft_ftab
[]
=
{
FOREACH_DFTSZ
(
SZ_PTR
)
};
#define SZ_iPTR(Sz) {idft ## Sz,Sz},
struct
{
adftfunc_t
func
;
int
size
;}
idft_ftab
[]
=
{
FOREACH_IDFTSZ
(
SZ_iPTR
)
};
typedef
enum
idft_size_idx
{
IDFT_128
,
IDFT_256
,
IDFT_512
,
IDFT_1024
,
IDFT_1536
,
IDFT_2048
,
IDFT_3072
,
IDFT_4096
,
IDFT_6144
,
IDFT_8192
,
IDFT_9216
,
IDFT_12288
,
IDFT_18432
,
IDFT_24576
,
IDFT_36864
,
IDFT_49152
,
IDFT_73728
,
IDFT_98304
,
IDFT_SIZE_IDXTABLESIZE
}
idft_size_idx_t
;
#ifdef OAIDFTS_MAIN
aidftfunc_t
idft_ftab
[]
=
{
idft128
,
idft256
,
idft512
,
idft1024
,
idft1536
,
idft2048
,
idft3072
,
idft4096
,
idft6144
,
idft8192
,
idft9216
,
idft12288
,
idft18432
,
idft24576
,
idft36864
,
idft49152
,
idft73728
,
idft98304
};
#endif
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment