kopia lustrzana https://github.com/f4exb/sdrangel
				
				
				
			Fix audio sink/source mapping
							rodzic
							
								
									556cc8ad45
								
							
						
					
					
						commit
						32aee52ab3
					
				|  | @ -339,11 +339,17 @@ void AudioDeviceManager::addAudioSink(AudioFifo* audioFifo, MessageQueue *sample | |||
| 
 | ||||
|         if (audioOutputDeviceIndex != outputDeviceIndex) // change of audio device
 | ||||
|         { | ||||
|             removeAudioSink(audioFifo); // remove from current
 | ||||
|             // remove from current
 | ||||
|             m_audioOutputs[audioOutputDeviceIndex]->removeFifo(audioFifo); | ||||
|             if ((audioOutputDeviceIndex != -1) && (m_audioOutputs[audioOutputDeviceIndex]->getNbFifos() == 0)) { | ||||
|                 stopAudioOutput(audioOutputDeviceIndex); | ||||
|             } | ||||
| 
 | ||||
|             m_audioOutputs[outputDeviceIndex]->addFifo(audioFifo); // add to new
 | ||||
|             m_audioSinkFifos[audioFifo] = outputDeviceIndex; // new index
 | ||||
|             m_outputDeviceSinkMessageQueues[audioOutputDeviceIndex].removeOne(sampleSinkMessageQueue); | ||||
|             m_outputDeviceSinkMessageQueues[audioOutputDeviceIndex].removeOne(m_audioFifoToSinkMessageQueues[audioFifo]); | ||||
|             m_outputDeviceSinkMessageQueues[outputDeviceIndex].append(sampleSinkMessageQueue); | ||||
|             m_audioFifoToSinkMessageQueues[audioFifo] = sampleSinkMessageQueue; | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -416,6 +422,9 @@ void AudioDeviceManager::addAudioSource(AudioFifo* audioFifo, MessageQueue *samp | |||
|     if (m_audioSourceFifos.find(audioFifo) == m_audioSourceFifos.end()) // new FIFO
 | ||||
|     { | ||||
|         m_audioInputs[inputDeviceIndex]->addFifo(audioFifo); | ||||
|         m_audioSourceFifos[audioFifo] = inputDeviceIndex; // register audio FIFO
 | ||||
|         m_audioFifoToSourceMessageQueues[audioFifo] = sampleSourceMessageQueue; | ||||
|         m_inputDeviceSourceMessageQueues[inputDeviceIndex].append(sampleSourceMessageQueue); | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|  | @ -423,14 +432,19 @@ void AudioDeviceManager::addAudioSource(AudioFifo* audioFifo, MessageQueue *samp | |||
| 
 | ||||
|         if (audioInputDeviceIndex != inputDeviceIndex) // change of audio device
 | ||||
|         { | ||||
|             removeAudioSource(audioFifo); // remove from current
 | ||||
|             // remove from current
 | ||||
|             m_audioInputs[audioInputDeviceIndex]->removeFifo(audioFifo); | ||||
|             if ((audioInputDeviceIndex != -1) && (m_audioInputs[audioInputDeviceIndex]->getNbFifos() == 0)) { | ||||
|                 stopAudioInput(audioInputDeviceIndex); | ||||
|             } | ||||
| 
 | ||||
|             m_audioInputs[inputDeviceIndex]->addFifo(audioFifo); // add to new
 | ||||
|             m_audioSourceFifos[audioFifo] = inputDeviceIndex; // new index
 | ||||
|             m_outputDeviceSinkMessageQueues[audioInputDeviceIndex].removeOne(m_audioFifoToSourceMessageQueues[audioFifo]); | ||||
|             m_inputDeviceSourceMessageQueues[inputDeviceIndex].append(sampleSourceMessageQueue); | ||||
|             m_audioFifoToSourceMessageQueues[audioFifo] = sampleSourceMessageQueue; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     m_audioSourceFifos[audioFifo] = inputDeviceIndex; // register audio FIFO
 | ||||
|     m_audioFifoToSourceMessageQueues[audioFifo] = sampleSourceMessageQueue; | ||||
|     m_outputDeviceSinkMessageQueues[inputDeviceIndex].append(sampleSourceMessageQueue); | ||||
| } | ||||
| 
 | ||||
| void AudioDeviceManager::removeAudioSource(AudioFifo* audioFifo) | ||||
|  |  | |||
		Ładowanie…
	
		Reference in New Issue
	
	 mxi-box
						mxi-box