recv: add audio dumping option (for debugging)

This commit is contained in:
Roman Zeyde
2015-01-11 18:01:39 +02:00
parent 2ee79870c5
commit 2d890339e2
3 changed files with 21 additions and 3 deletions

View File

@@ -124,13 +124,16 @@ def main():
'-o', '--output', help='output file (use "-" for stdout).')
receiver.add_argument(
'-c', '--calibrate', default=False, action='store_true')
receiver.add_argument(
'-d', '--dump', type=FileType('wb'),
help='Filename to save recorded audio')
receiver.add_argument(
'--plot', action='store_true', default=False,
help='plot results using pylab module')
receiver.set_defaults(
main=lambda config, args: recv.main(
config, src=args.src, dst=wrap(Decompressor, args.dst, args.zip),
pylab=args.pylab
pylab=args.pylab, dump_audio=args.dump
),
calib=lambda config, args: calib.recv(
config, src=args.src, verbose=args.verbose

View File

@@ -214,7 +214,20 @@ class Receiver(object):
self.plt.title(title)
def main(config, src, dst, pylab=None):
class Dumper(object):
def __init__(self, src, dst):
self.src = src
self.dst = dst
def read(self, size):
data = self.src.read(size)
self.dst.write(data)
return data
def main(config, src, dst, dump_audio=None, pylab=None):
if dump_audio:
src = Dumper(src, dump_audio)
reader = stream.Reader(src, data_type=common.loads)
signal = itertools.chain.from_iterable(reader)

View File

@@ -44,8 +44,10 @@ def run(size, chan=None, df=0, success=True):
rx_audio = BytesIO(data)
rx_data = BytesIO()
result = recv.main(config=config, src=rx_audio, dst=rx_data)
d = BytesIO()
result = recv.main(config=config, src=rx_audio, dst=rx_data, dump_audio=d)
rx_data = rx_data.getvalue()
assert data.startswith(d.getvalue())
assert result == success
if success: