def run(self): """ Callback to fill data """ data = bytearray(b'\x00' * self.block_size * self.bytes_per_frame) free_bytes = soundio.ring_buffer_free_count(self.buffer) if self.callback and free_bytes >= len(data): self.callback(data=data, length=self.block_size) soundio.ring_buffer_write_ptr(self.buffer, data, len(data)) soundio.ring_buffer_advance_write_ptr(self.buffer, len(data))
def setUp(self): self.s = soundio.create() soundio.connect_backend(pysoundio.SoundIoBackendDummy) soundio.flush() self.buffer = soundio.input_ring_buffer_create(44100) # Fill with some data for libsoundio < v1.1.0 data = bytearray(b'' * 42) soundio.ring_buffer_write_ptr(self.buffer, data, len(data)) soundio.ring_buffer_advance_write_ptr(self.buffer, 42)
def test_read_callback(self): self.sio.start_input_stream( sample_rate=44100, dtype=pysoundio.SoundIoFormatFloat32LE, channels=2, block_size=4096, read_callback=self.callback) self.assertIsNotNone(self.sio.input['stream']) data = bytearray(b'\x00' * 4096 * 8) _soundiox.ring_buffer_write_ptr(self.sio.input['buffer'], data, len(data)) _soundiox.ring_buffer_advance_write_ptr(self.sio.input['buffer'], len(data)) thread = pysoundio.pysoundio._InputProcessingThread(parent=self.sio) thread.run() self.assertTrue(self.callback_called)
def fill_input_buffer(self): data = bytearray(b'\x00' * 4096 * 8) _soundiox.ring_buffer_write_ptr(self.sio.input['buffer'], data, len(data)) _soundiox.ring_buffer_advance_write_ptr(self.sio.input['buffer'], len(data))
def test_ring_buffer_write_ptr(self): data = bytearray('\x01\x02\x03\x04'.encode()) soundio.ring_buffer_write_ptr(self.buffer, data, len(data))