kopia lustrzana https://github.com/f4exb/sdrangel
				
				
				
			WDSP: use double precision for meter results
							rodzic
							
								
									fb08489f5a
								
							
						
					
					
						commit
						c99f2e1914
					
				|  | @ -86,7 +86,7 @@ RXA* RXA::create_rxa ( | |||
|     rxa->inbuff  = new float[1 * rxa->dsp_insize  * 2]; // (float *) malloc0 (1 * ch.dsp_insize  * sizeof (complex));
 | ||||
|     rxa->outbuff = new float[1 * rxa->dsp_outsize  * 2]; // (float *) malloc0 (1 * ch.dsp_outsize * sizeof (complex));
 | ||||
|     rxa->midbuff = new float[2 * rxa->dsp_size  * 2]; // (float *) malloc0 (2 * ch.dsp_size    * sizeof (complex));
 | ||||
|     memset(rxa->meter, 0, sizeof(float)*RXA_METERTYPE_LAST); | ||||
|     std::fill(rxa->meter, rxa->meter + RXA_METERTYPE_LAST, 0); | ||||
| 
 | ||||
|     // Noise blanker (ANB or "NB")
 | ||||
|     rxa->anb.p = ANB::create_anb( | ||||
|  | @ -161,7 +161,7 @@ RXA* RXA::create_rxa ( | |||
|         rxa->pmtupdate,                         // locks for meter access
 | ||||
|         RXA_ADC_AV,                             // index for average value
 | ||||
|         RXA_ADC_PK,                             // index for peak value
 | ||||
|         -1,                                     // index for gain value
 | ||||
|         -1,                                     // index for gain value - disabled
 | ||||
|         0);                                     // pointer for gain computation
 | ||||
| 
 | ||||
|     // Notched bandpass section
 | ||||
|  | @ -235,7 +235,7 @@ RXA* RXA::create_rxa ( | |||
|         rxa->pmtupdate,                         // locks for meter access
 | ||||
|         RXA_S_AV,                               // index for average value
 | ||||
|         RXA_S_PK,                               // index for peak value
 | ||||
|         -1,                                     // index for gain value
 | ||||
|         -1,                                     // index for gain value - disabled
 | ||||
|         0);                                     // pointer for gain computation
 | ||||
| 
 | ||||
|     // AM squelch capture (for other modes than FM)
 | ||||
|  |  | |||
|  | @ -98,7 +98,7 @@ public: | |||
|     }; | ||||
| 
 | ||||
|     int mode; | ||||
|     float meter[RXA_METERTYPE_LAST]; | ||||
|     double meter[RXA_METERTYPE_LAST]; | ||||
|     QRecursiveMutex *pmtupdate[RXA_METERTYPE_LAST]; | ||||
|     struct | ||||
|     { | ||||
|  |  | |||
|  | @ -127,7 +127,7 @@ public: | |||
|     int mode; | ||||
|     float f_low; | ||||
|     float f_high; | ||||
|     float meter[TXA_METERTYPE_LAST]; | ||||
|     double meter[TXA_METERTYPE_LAST]; | ||||
|     QRecursiveMutex *pmtupdate[TXA_METERTYPE_LAST]; | ||||
|     std::atomic<long> upslew; | ||||
|     struct | ||||
|  |  | |||
|  | @ -48,7 +48,7 @@ METER* METER::create_meter ( | |||
|     int rate, | ||||
|     double tau_av, | ||||
|     double tau_decay, | ||||
|     float* result, | ||||
|     double* result, | ||||
|     QRecursiveMutex** pmtupdate, | ||||
|     int enum_av, | ||||
|     int enum_pk, | ||||
|  | @ -119,9 +119,9 @@ void METER::xmeter (METER *a) | |||
|     } | ||||
|     else | ||||
|     { | ||||
|         if (a->enum_av   >= 0) a->result[a->enum_av]   = - 400.0; | ||||
|         if (a->enum_pk   >= 0) a->result[a->enum_pk]   = - 400.0; | ||||
|         if (a->enum_gain >= 0) a->result[a->enum_gain] = +   0.0; | ||||
|         if (a->enum_av   >= 0) a->result[a->enum_av]   = -400.0; | ||||
|         if (a->enum_pk   >= 0) a->result[a->enum_pk]   = -400.0; | ||||
|         if (a->enum_gain >= 0) a->result[a->enum_gain] = 0.0; | ||||
|     } | ||||
|     a->mtupdate.unlock(); | ||||
| } | ||||
|  | @ -149,9 +149,9 @@ void METER::setSize_meter (METER *a, int size) | |||
| *                                                                                                       * | ||||
| ********************************************************************************************************/ | ||||
| 
 | ||||
| float METER::GetMeter (RXA& rxa, int mt) | ||||
| double METER::GetMeter (RXA& rxa, int mt) | ||||
| { | ||||
|     float val; | ||||
|     double val; | ||||
|     rxa.pmtupdate[mt]->lock(); | ||||
|     val = rxa.meter[mt]; | ||||
|     rxa.pmtupdate[mt]->unlock(); | ||||
|  | @ -164,9 +164,9 @@ float METER::GetMeter (RXA& rxa, int mt) | |||
| *                                                                                                       * | ||||
| ********************************************************************************************************/ | ||||
| 
 | ||||
| float METER::GetMeter (TXA& txa, int mt) | ||||
| double METER::GetMeter (TXA& txa, int mt) | ||||
| { | ||||
|     float val; | ||||
|     double val; | ||||
|     txa.pmtupdate[mt]->lock(); | ||||
|     val = txa.meter[mt]; | ||||
|     txa.pmtupdate[mt]->unlock(); | ||||
|  |  | |||
|  | @ -49,7 +49,7 @@ public: | |||
|     double tau_peak_decay; | ||||
|     double mult_average; | ||||
|     double mult_peak; | ||||
|     float* result; | ||||
|     double* result; | ||||
|     int enum_av; | ||||
|     int enum_pk; | ||||
|     int enum_gain; | ||||
|  | @ -66,7 +66,7 @@ public: | |||
|         int rate, | ||||
|         double tau_av, | ||||
|         double tau_decay, | ||||
|         float* result, | ||||
|         double* result, | ||||
|         QRecursiveMutex** pmtupdate, | ||||
|         int enum_av, | ||||
|         int enum_pk, | ||||
|  | @ -80,9 +80,9 @@ public: | |||
|     static void setSamplerate_meter (METER *a, int rate); | ||||
|     static void setSize_meter (METER *a, int size); | ||||
|     // RXA Properties
 | ||||
|     static float GetMeter (RXA& rxa, int mt); | ||||
|     static double GetMeter (RXA& rxa, int mt); | ||||
|     // TXA Properties
 | ||||
|     static float GetMeter (TXA& txa, int mt); | ||||
|     static double GetMeter (TXA& txa, int mt); | ||||
| 
 | ||||
| private: | ||||
|     static void calc_meter (METER *a); | ||||
|  |  | |||
		Ładowanie…
	
		Reference in New Issue
	
	 f4exb
						f4exb