The next thing I plan on working on in FreeDV will be the artificial 
"one sound card"/"two sound card" stuff and the two full-duplex stream 
thing.

On my current main system, my headset is actually connected to two 
different sound interfaces... the mic is on a separate sound card than 
the phones.  For whatever reason, Portaudio truly hates this 
configuration - likely because having two separate clock sources on a 
full-duplex stream will result in weird artefacts.  However, since the 
use case isn't actually a full duplex stream but two pairs of isolated 
half duplex ones (mic in/radio out, radio in/headset out), there's no 
technical reason to have these paired into a "headset" full duplex 
stream and a "radio" full duplex stream that I can think of.  The 
obvious solution is to split these into four separate configurations and 
streams.  The configuration dialogue box could easily stay the same, and 
for backward compatibility, the config file could as well (though I'm 
not a huge fan of the audio config dialogue, so it's on my radar).

What I'm wondering is if the current two full-duplex stream was 
originally done for technical reasons I'm unaware of (for example, maybe 
Portaudio doesn't support multiple streams on the same device) or if 
it's just a reflection of the "you need two sound cards" thought 
process?  If the former, it would still be possible (but more complex) 
to share a full-duplex stream when it's detected that the same device is 
being used in both directions.  I can't find any solid statement either 
way in the Portaudio documentation, but I've had experiences with the 
OSS API which suggests this may be so. What's even worse is that it's 
likely that *if* there's a technical limitation, it would quite possibly 
only occur with some specific set of soundcards on some set of platforms 
with some set of drivers.  Something that is very hard to get good test 
coverage of in a volunteer project without alienating users.

If anyone remembers the reasoning behind this choice, and it's just a 
conceptual thing, it would make it possible for me to do the much 
simpler implementation.  However, if nobody remembers, or if it's a 
technical reason, I'll go ahead and start working with full duplex 
streams when possible and half duplex streams otherwise.

Thanks in advance for your feedback,
K6BSD

------------------------------------------------------------------------------
_______________________________________________
Freetel-codec2 mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freetel-codec2

Reply via email to