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
zzha zzha
OpenXG-RAN
Commits
e1b9881c
Commit
e1b9881c
authored
3 years ago
by
Laurent THOMAS
Committed by
Robert Schmidt
3 years ago
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
)
);
...
...
This diff is collapsed.
Click to expand it.
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
];
...
...
This diff is collapsed.
Click to expand it.
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
/*---------------------------------------------------------------------------------------*/
...
...
This diff is collapsed.
Click to expand it.
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
...
...
This diff is collapsed.
Click to expand it.
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