Esempio n. 1
0
 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))
Esempio n. 2
0
    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)
Esempio n. 3
0
    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)
Esempio n. 4
0
 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))
Esempio n. 5
0
 def test_ring_buffer_write_ptr(self):
     data = bytearray('\x01\x02\x03\x04'.encode())
     soundio.ring_buffer_write_ptr(self.buffer, data, len(data))