@@ -73,51 +73,55 @@ void powermap_initAna(void* const hPm)
7373 pars -> Y_grid_cmplx [n - 1 ][i * (pars -> grid_nDirs )+ j ] = cmplxf (pars -> Y_grid [n - 1 ][i * (pars -> grid_nDirs )+ j ], 0.0f );
7474 }
7575
76- /* generate interpolation table for current display settings */
77- switch (pData -> HFOVoption ){
78- default :
79- case HFOV_360 : hfov = 360.0f ; break ;
80- }
81- switch (pData -> aspectRatioOption ){
82- default :
83- case ASPECT_RATIO_2_1 : aspectRatio = 2.0f ; break ;
84- }
85- N_azi = pData -> dispWidth ;
86- N_ele = (int )((float )pData -> dispWidth /aspectRatio + 0.5f );
87- grid_x_axis = malloc1d (N_azi * sizeof (float ));
88- grid_y_axis = malloc1d (N_ele * sizeof (float ));
89- vfov = hfov /aspectRatio ;
90- for (fi = - hfov /2.0f , i = 0 ; i < N_azi ; fi += hfov /N_azi , i ++ )
91- grid_x_axis [i ] = fi ;
92- for (fi = - vfov /2.0f , i = 0 ; i < N_ele ; fi += vfov /N_ele , i ++ )
93- grid_y_axis [i ] = fi ;
94- free (pars -> interp_dirs_deg );
95- pars -> interp_dirs_deg = malloc1d (N_azi * N_ele * 2 * sizeof (float ));
96- for (i = 0 ; i < N_ele ; i ++ ){
97- for (j = 0 ; j < N_azi ; j ++ ){
98- pars -> interp_dirs_deg [(i * N_azi + j )* 2 ] = grid_x_axis [j ];
99- pars -> interp_dirs_deg [(i * N_azi + j )* 2 + 1 ] = grid_y_axis [i ];
76+ if (pData -> isFirstInit ){
77+ /* generate interpolation table for current display settings */
78+ switch (pData -> HFOVoption ){
79+ default :
80+ case HFOV_360 : hfov = 360.0f ; break ;
10081 }
101- }
102- free (pars -> interp_table );
103- generateVBAPgainTable3D_srcs (pars -> interp_dirs_deg , N_azi * N_ele , pars -> grid_dirs_deg , pars -> grid_nDirs , 0 , 0 , 0.0f , & (pars -> interp_table ), & (pars -> interp_nDirs ), & (pars -> interp_nTri ));
104- VBAPgainTable2InterpTable (pars -> interp_table , pars -> interp_nDirs , pars -> grid_nDirs );
105-
106- /* reallocate memory for storing the powermaps */
107- free (pData -> pmap );
108- pData -> pmap = malloc1d (pars -> grid_nDirs * sizeof (float ));
109- free (pData -> prev_pmap );
110- pData -> prev_pmap = calloc1d (pars -> grid_nDirs , sizeof (float ));
111- for (i = 0 ; i < NUM_DISP_SLOTS ; i ++ ){
112- free (pData -> pmap_grid [i ]);
113- pData -> pmap_grid [i ] = calloc1d (pars -> interp_nDirs ,sizeof (float ));
82+ switch (pData -> aspectRatioOption ){
83+ default :
84+ case ASPECT_RATIO_2_1 : aspectRatio = 2.0f ; break ;
85+ }
86+ N_azi = pData -> dispWidth ;
87+ N_ele = (int )((float )pData -> dispWidth /aspectRatio + 0.5f );
88+ grid_x_axis = malloc1d (N_azi * sizeof (float ));
89+ grid_y_axis = malloc1d (N_ele * sizeof (float ));
90+ vfov = hfov /aspectRatio ;
91+ for (fi = - hfov /2.0f , i = 0 ; i < N_azi ; fi += hfov /N_azi , i ++ )
92+ grid_x_axis [i ] = fi ;
93+ for (fi = - vfov /2.0f , i = 0 ; i < N_ele ; fi += vfov /N_ele , i ++ )
94+ grid_y_axis [i ] = fi ;
95+ free (pars -> interp_dirs_deg );
96+ pars -> interp_dirs_deg = malloc1d (N_azi * N_ele * 2 * sizeof (float ));
97+ for (i = 0 ; i < N_ele ; i ++ ){
98+ for (j = 0 ; j < N_azi ; j ++ ){
99+ pars -> interp_dirs_deg [(i * N_azi + j )* 2 ] = grid_x_axis [j ];
100+ pars -> interp_dirs_deg [(i * N_azi + j )* 2 + 1 ] = grid_y_axis [i ];
101+ }
102+ }
103+ free (pars -> interp_table );
104+ generateVBAPgainTable3D_srcs (pars -> interp_dirs_deg , N_azi * N_ele , pars -> grid_dirs_deg , pars -> grid_nDirs , 0 , 0 , 0.0f , & (pars -> interp_table ), & (pars -> interp_nDirs ), & (pars -> interp_nTri ));
105+ VBAPgainTable2InterpTable (pars -> interp_table , pars -> interp_nDirs , pars -> grid_nDirs );
106+
107+ /* reallocate memory for storing the powermaps */
108+ free (pData -> pmap );
109+ pData -> pmap = malloc1d (pars -> grid_nDirs * sizeof (float ));
110+ free (pData -> prev_pmap );
111+ pData -> prev_pmap = calloc1d (pars -> grid_nDirs , sizeof (float ));
112+ for (i = 0 ; i < NUM_DISP_SLOTS ; i ++ ){
113+ free (pData -> pmap_grid [i ]);
114+ pData -> pmap_grid [i ] = calloc1d (pars -> interp_nDirs ,sizeof (float ));
115+ }
116+ free (grid_x_axis );
117+ free (grid_y_axis );
118+
119+ pData -> isFirstInit = 0 ;
114120 }
115121
116122 pData -> masterOrder = order ;
117123
118124 free (Y_grid_N );
119- free (grid_x_axis );
120- free (grid_y_axis );
121125}
122126
123127void powermap_initTFT
0 commit comments