cli: support "dummy" audio interface

specify '-' to to skip loading PortAudio shared library.
This commit is contained in:
Roman Zeyde
2015-02-14 10:38:21 +02:00
parent c0634a34d0
commit b3804a42be
3 changed files with 17 additions and 3 deletions

View File

@@ -94,6 +94,15 @@ def get_volume_cmd(args):
return c[args.command]
class _DummyInterface(object):
''' Audio interface mock, to skip shared library loading. '''
def __enter__(self):
pass
def __exit__(self, *args):
pass
def _main():
fmt = ('Audio OFDM MODEM: {0:.1f} kb/s ({1:d}-QAM x {2:d} carriers) '
'Fs={3:.1f} kHz')
@@ -194,7 +203,12 @@ def _main():
import pylab
args.pylab = pylab
with interface.load(args.audio_library):
if args.audio_library == '-':
interface = _DummyInterface()
else:
interface.load(args.audio_library)
with interface:
args.src = args.input_type(args.input)
args.dst = args.output_type(args.output)
try:

View File

@@ -17,7 +17,6 @@ class Interface(object):
assert self._error_string(0) == b'Success'
version = self.call('GetVersionText', restype=ctypes.c_char_p)
log.info('%s loaded', version)
return self
def _error_string(self, code):
return self.call('GetErrorText', code, restype=ctypes.c_char_p)

View File

@@ -15,7 +15,8 @@ def test():
lib.Pa_OpenStream.return_value = 0
cdll.return_value = lib
interface = audio.Interface(config=config.fastest(), debug=True)
with interface.load(name='portaudio'):
interface.load(name='portaudio')
with interface:
s = interface.player()
assert s.params.device == 1
s.stream = 1 # simulate non-zero output stream handle