code: def get_read_buffers(self, size):
          
          ptr1 = self._ffi.new('void**')
          ptr2 = self._ffi.new('void**')
          size1 = self._ffi.new('ring_buffer_size_t*')
          size2 = self._ffi.new('ring_buffer_size_t*')
          return (self._lib.PaUtil_GetRingBufferReadRegions(
                      self._ptr, size, ptr1, size1, ptr2, size2),
                  self._ffi.buffer(ptr1[0], size1[0] * self.elementsize),
                  self._ffi.buffer(ptr2[0], size2[0] * self.elementsize))
docs: Get buffer(s) from which we can read data.
  
          When done reading, use :meth:`advance_read_index` to make the
          memory available for writing again.
  
          :param size: The number of elements desired.
          :type size: int
  
          :returns:
              * The number of elements available for reading (which might
                be less than the requested *size*).
              * The first buffer.
              * The second buffer.
          :rtype: (int, buffer, buffer)