code: func NewInputStream(id DeviceID, bufferSize int64) (stream *Stream, err error) {
  	var str *C.PmStream
  	errCode := C.Pm_OpenInput(
  		(*unsafe.Pointer)(unsafe.Pointer(&str)),
  		C.PmDeviceID(id), nil, C.int32_t(bufferSize), nil, nil)
  	if errCode != 0 {
  		return nil, convertToError(errCode)
  	}
  	if info := Info(id); !info.IsInputAvailable {
  		return nil, ErrInputUnavailable
  	}
  	return &Stream{deviceID: id, pmStream: str}, nil
  }
docs: // NewInputStream initializes a new input stream.