mirror of
				https://github.com/f4exb/sdrangel.git
				synced 2025-10-30 20:40:20 -04:00 
			
		
		
		
	DV Serial: prepare multi slot (3)
This commit is contained in:
		
							parent
							
								
									413ba162c7
								
							
						
					
					
						commit
						01c901a8fe
					
				| @ -26,13 +26,8 @@ MESSAGE_CLASS_DEFINITION(DVSerialWorker::MsgTest, Message) | |||||||
| DVSerialWorker::DVSerialWorker() : | DVSerialWorker::DVSerialWorker() : | ||||||
|     m_running(false), |     m_running(false), | ||||||
|     m_currentGainIn(0), |     m_currentGainIn(0), | ||||||
|     m_currentGainOut(0), |     m_currentGainOut(0) | ||||||
| //    m_upsamplerLastValue(0),
 |  | ||||||
|     m_phase(0) |  | ||||||
| { | { | ||||||
| //    m_audioBuffer.resize(48000);
 |  | ||||||
| //    m_audioBufferFill = 0;
 |  | ||||||
| //    m_audioFifo = 0;
 |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| DVSerialWorker::~DVSerialWorker() | DVSerialWorker::~DVSerialWorker() | ||||||
| @ -85,11 +80,15 @@ void DVSerialWorker::handleInputMessages() | |||||||
|         { |         { | ||||||
|             MsgMbeDecode *decodeMsg = (MsgMbeDecode *) message; |             MsgMbeDecode *decodeMsg = (MsgMbeDecode *) message; | ||||||
|             int dBVolume = (decodeMsg->getVolumeIndex() - 30) / 2; |             int dBVolume = (decodeMsg->getVolumeIndex() - 30) / 2; | ||||||
|  |             unsigned int fifoSlot = decodeMsg->getFifoSlot(); | ||||||
| 
 | 
 | ||||||
|             if (m_dvController.decode(m_dvAudioSamples, decodeMsg->getMbeFrame(), decodeMsg->getMbeRate(), dBVolume)) |             if (m_dvController.decode(m_fifoSlots[fifoSlot].m_dvAudioSamples, decodeMsg->getMbeFrame(), decodeMsg->getMbeRate(), dBVolume)) | ||||||
|             { |             { | ||||||
|                 upsample6(m_dvAudioSamples, SerialDV::MBE_AUDIO_BLOCK_SIZE, decodeMsg->getChannels(), decodeMsg->getFifoSlot()); |                 upsample6(m_fifoSlots[fifoSlot].m_dvAudioSamples, | ||||||
|                 audioFifo[decodeMsg->getFifoSlot()] = decodeMsg->getAudioFifo(); |                         SerialDV::MBE_AUDIO_BLOCK_SIZE, | ||||||
|  |                         decodeMsg->getChannels(), | ||||||
|  |                         fifoSlot); | ||||||
|  |                 audioFifo[fifoSlot] = decodeMsg->getAudioFifo(); | ||||||
|             } |             } | ||||||
|             else |             else | ||||||
|             { |             { | ||||||
| @ -183,67 +182,3 @@ void DVSerialWorker::upsample6(short *in, int nbSamplesIn, unsigned char channel | |||||||
|         m_fifoSlots[fifoSlot].m_upsamplerLastValue = in[i]; |         m_fifoSlots[fifoSlot].m_upsamplerLastValue = in[i]; | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 |  | ||||||
| //void DVSerialWorker::upsample6(short *in, short *out, int nbSamplesIn)
 |  | ||||||
| //{
 |  | ||||||
| //    for (int i = 0; i < nbSamplesIn; i++)
 |  | ||||||
| //    {
 |  | ||||||
| //        int cur = (int) in[i];
 |  | ||||||
| //        int prev = (int) m_upsamplerLastValue;
 |  | ||||||
| //        short up;
 |  | ||||||
| //
 |  | ||||||
| //// DEBUG:
 |  | ||||||
| ////        for (int j = 0; j < 6; j++)
 |  | ||||||
| ////        {
 |  | ||||||
| ////            up = 32768.0f * cos(m_phase);
 |  | ||||||
| ////            *out = up;
 |  | ||||||
| ////            out ++;
 |  | ||||||
| ////            *out = up;
 |  | ||||||
| ////            out ++;
 |  | ||||||
| ////            m_phase += M_PI / 6.0;
 |  | ||||||
| ////        }
 |  | ||||||
| ////
 |  | ||||||
| ////        if ((i % 2) == 1)
 |  | ||||||
| ////        {
 |  | ||||||
| ////            m_phase = 0.0f;
 |  | ||||||
| ////        }
 |  | ||||||
| //
 |  | ||||||
| //        up = m_upsampleFilter.run((cur*1 + prev*5) / 6);
 |  | ||||||
| //        *out = up;
 |  | ||||||
| //        out++;
 |  | ||||||
| //        *out = up;
 |  | ||||||
| //        out++;
 |  | ||||||
| //
 |  | ||||||
| //        up = m_upsampleFilter.run((cur*2 + prev*4) / 6);
 |  | ||||||
| //        *out = up;
 |  | ||||||
| //        out++;
 |  | ||||||
| //        *out = up;
 |  | ||||||
| //        out++;
 |  | ||||||
| //
 |  | ||||||
| //        up = m_upsampleFilter.run((cur*3 + prev*3) / 6);
 |  | ||||||
| //        *out = up;
 |  | ||||||
| //        out++;
 |  | ||||||
| //        *out = up;
 |  | ||||||
| //        out++;
 |  | ||||||
| //
 |  | ||||||
| //        up = m_upsampleFilter.run((cur*4 + prev*2) / 6);
 |  | ||||||
| //        *out = up;
 |  | ||||||
| //        out++;
 |  | ||||||
| //        *out = up;
 |  | ||||||
| //        out++;
 |  | ||||||
| //
 |  | ||||||
| //        up = m_upsampleFilter.run((cur*5 + prev*1) / 6);
 |  | ||||||
| //        *out = up;
 |  | ||||||
| //        out++;
 |  | ||||||
| //        *out = up;
 |  | ||||||
| //        out++;
 |  | ||||||
| //
 |  | ||||||
| //        up = m_upsampleFilter.run(in[i]);
 |  | ||||||
| //        *out = up;
 |  | ||||||
| //        out++;
 |  | ||||||
| //        *out = up;
 |  | ||||||
| //        out++;
 |  | ||||||
| //
 |  | ||||||
| //        m_upsamplerLastValue = in[i];
 |  | ||||||
| //    }
 |  | ||||||
| //}
 |  | ||||||
|  | |||||||
| @ -148,20 +148,17 @@ private: | |||||||
|         uint m_audioBufferFill; |         uint m_audioBufferFill; | ||||||
|         short m_upsamplerLastValue; |         short m_upsamplerLastValue; | ||||||
|         MBEAudioInterpolatorFilter m_upsampleFilter; |         MBEAudioInterpolatorFilter m_upsampleFilter; | ||||||
|  |         short m_dvAudioSamples[SerialDV::MBE_AUDIO_BLOCK_SIZE]; | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
| //    void upsample6(short *in, short *out, int nbSamplesIn);
 |  | ||||||
|     void upsample6(short *in, int nbSamplesIn, unsigned char channels, unsigned int fifoSlot); |     void upsample6(short *in, int nbSamplesIn, unsigned char channels, unsigned int fifoSlot); | ||||||
| 
 | 
 | ||||||
|     SerialDV::DVController m_dvController; |     SerialDV::DVController m_dvController; | ||||||
|     bool m_running; |     bool m_running; | ||||||
|     int m_currentGainIn; |     int m_currentGainIn; | ||||||
|     int m_currentGainOut; |     int m_currentGainOut; | ||||||
|     short m_dvAudioSamples[SerialDV::MBE_AUDIO_BLOCK_SIZE]; |  | ||||||
|     //short m_audioSamples[SerialDV::MBE_AUDIO_BLOCK_SIZE * 6 * 2]; // upsample to 48k and duplicate channel
 |  | ||||||
|     static const unsigned int m_nbFifoSlots = 1; |     static const unsigned int m_nbFifoSlots = 1; | ||||||
|     FifoSlot m_fifoSlots[m_nbFifoSlots]; |     FifoSlot m_fifoSlots[m_nbFifoSlots]; | ||||||
|     float m_phase; |  | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| #endif /* SDRBASE_DSP_DVSERIALWORKER_H_ */ | #endif /* SDRBASE_DSP_DVSERIALWORKER_H_ */ | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user