-------------------------------------------------------------------------------- CoreData API Version 3.0.0 - May 2010 -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- Introduction -------------------------------------------------------------------------------- The Seeing Machines CoreData API is a set of libraries and tools for interpreting and manipulating data produced by Seeing Machines products. Features: * Open source * Multi-language: C++, C#, Python * Multi-platform: Windows, Mac OS X, Linux -------------------------------------------------------------------------------- System Requirements -------------------------------------------------------------------------------- * x86 CPU supporting SSE2 or greater. * On Linux, there is also a build for x86 non-SSE2 processors. * Windows XP operating system SP2 or later, OS-X 10.4 or later, Ubuntu Linux 8.04 or later -------------------------------------------------------------------------------- Supported Compilers -------------------------------------------------------------------------------- * Microsoft Visual Studio 2005 SP1 * Microsoft Visual Studio 2008 SP1 * Mac OS X gcc 4.0.1 * Linux gcc 4.2.0 -------------------------------------------------------------------------------- Library Dependencies -------------------------------------------------------------------------------- * boost 1.42.0 -------------------------------------------------------------------------------- Changes V3.0.0 -------------------------------------------------------------------------------- * Drop support for Visual Studio 2003 and python 2.5. * Add support for python 2.6. * Move from boost 1.36.0 to boost 1.42.0 * EOD types now return std::map and std::vector types by const reference where possible. * Remove DSS objects. They can now be found in the DSS Data API. * Fix bug in reading an unknown object when it is the last object in the file' on Mac OS X/Linux. * Add class design information to documentation. * Makefiles build binaries requiring processors to support SSE2. For Linux, there is also a non-sse2 set of makefiles. * Define the following typedefs to increase readability: Serializable::ObjectID, Serializable::ObjectIDVec, Serializable::ObjectID. sm::eod::iStdVector2, sm::eod::fStdVector2, sm::eod::fStdVector3, sm::eod::dStdVector2, sm::eod::dStdVector3, sm::eod::dStdVector4. sm::SerializableComposite::SerializablePtrVec. EngineOutputData::FrameNumber. * Change code using boost::shared_ptr to use typedef type ## Ptr. * Disable warning non dll-interface class 'std::runtime_error' used as base for dll-interface class 'sm::eod::EODError' * Change functions returning std::vector for 2D and 3D values to use [idf]StdVector[0-9] typedefs. They all map back to std::vector<> but at least you can tell the dimension from the function signature. * Add newFile function to EngineOutputDataFileWriter. * Add openFile function to EngineOutputDataFileReader. * Fix compiler warnings for signed comparison/truncations. * Change Serializable::readBuffer for reading strings to use std::string::assign instead of pushing each character back individually. assign will give one memory allocation while pushing back can give many. -------------------------------------------------------------------------------- Known Issues -------------------------------------------------------------------------------- None. -------------------------------------------------------------------------------- Configuration -------------------------------------------------------------------------------- * Environment variables - You must define the COREDATA_INSTALL_DIR to be the absolute path to the root of the extracted files. * Include Paths: - Add $(COREDATA_INSTALL_DIR)/coredata/include - Add $(COREDATA_INSTALL_DIR)/coredata/thirdparty/boost1.42.0/include - Library header files are then included using "eod/sdk.h" * Library Paths: - Provide the linker with the path to either $(COREDATA_INSTALL_DIR)/coredata/libshared/ or $(COREDATA_INSTALL_DIR)/coredata/libstatic/ * Libraries: - Add sm_cd_coredata_3.0.lib for windows release shared library - Add sm_cd_coredata_d3.0.lib for windows debug shared library - Add sm_cd_coredata.lib for windows release static library - Add sm_cd_coredata_d.lib for windows debug static library - Add sm_cd_coredata for mac/linux release library - Add sm_cd_coredata_d for mac/linux debug library -------------------------------------------------------------------------------- Documentation -------------------------------------------------------------------------------- The CoreData is extensively documented: * ./doc/html/index.html is the front page for the HTML documentation * ./doc/CoreData.chm is a searchable HTML Help binary containing the same HTML documentation. -------------------------------------------------------------------------------- Bugs and Feature Requests -------------------------------------------------------------------------------- To report any bugs or feature requests, write to faceAPI@seeingmachines.com with details. -------------------------------------------------------------------------------- Previous Releases -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- Changes V2.1.0 -------------------------------------------------------------------------------- * Flags to the compiler enabling SSE2 instructions have now been removed to support processors that don't implement the SSE2 instructions. * Fix python doco for FaceOutputData.addLandmark. * Added typedef sm::eod::FaceLandmarkIdVec for std::vector * Give unnamed enumeration a name FixedFaceLandmarkId. * Remove forward declaration of renamed class DSSEventOutputData. * Create typedef FaceLandmarkMap in flmtypes.h. * Add constructors for POD types sm::eod::FaceCoordinate, sm::eod::FaceTextureCoordinate and sm::eod::FaceLandmark. * Add functions to FaceOutputData: void setFaceCoordinate(FaceLandmarkId, const FaceCoordinate&); bool hasLandmark(FaceLandmarkId) const; bool hasAllLandmarks(const FaceLandmarkIdVec&) const; -------------------------------------------------------------------------------- Changes V2.0.0 -------------------------------------------------------------------------------- * Replaced DSSEventOutputData with CustomEventOutputData. * ImageOutputData now aligns rawData() to 32 byte boundaries. * Add ImageOutputData::shareNewImage() to use external memory for the rawData(). * EngineOutputDataFileWriter now writes CustomEventOutputData, formerly DSSEventOutputData to the filename "Custom_Events". * DSS output data classes are now deprecated. They will be moved to the DSS Data API. * Fix C# project files so that they compile correctly. -------------------------------------------------------------------------------- Changes V1.1.5 -------------------------------------------------------------------------------- * Remove include of term.h and termios.h in devicesettings.h. They were creating too many macros with generic names. * Add 'void TcpSocket::setSocketFlag(SocketFlag,bool)'. Exposes functionality to modify the socket options TCP_NODELAY and SO_REUSEADDR. * Add 'void TcpSocket::socketFlag(SocketFlag) const' to read the current socket option values. -------------------------------------------------------------------------------- Changes V1.1.4 -------------------------------------------------------------------------------- * Fix EngineOutputDataTcpClient to behave correctly when connection closed by server. Update documentation on exact behaviour. * Add SerializableFactory::canDeserialize(const std::vector&,int) to check the amount of data in a buffer before attempting to deserialize. -------------------------------------------------------------------------------- Changes V1.1.3 -------------------------------------------------------------------------------- * Update documentation on how to compile the CoreData C++ API and examples for Linux and Mac. * Fix udpclient and tcpclient examples not handling missing world and head output data. * Remove QMake specific targets from generated makefiles. * Fix missing format specification string passed to printf in logconverter example. * Fix behaviour of SerializableFactory::newObject(std::vector,int&). When the object in the buffer is unknown, the read_pos is correctly updated to refer to the location of the next object in the buffer. This would cause an infinite loop in deserializing code. * Fix bug where calling SerializableFactory::registerObjectType before calling SerializableFactory::newObject skips registration of CoreData object types. * Comment out printing to std::cout by DatagramSocket, SerialPort, TcpSocket classes. -------------------------------------------------------------------------------- Changes V1.1.2 -------------------------------------------------------------------------------- * Fix compile problem with template function EngineOutputBase::attachIfMissing. * Move sm::eod::SerialPortError to namespace sm::eod::io. * Delete unnecessary header tstring.h * Move stringfuns.h functions under sm::eod::io namespace. * Move pitch, axis and direction enumerations from sm::eod to sm::eod::utils namespace. * Move mathematical vector functions from sm::eod to sm::eod::utils namespace. * Fixed a bug in SerialPort of not calling GetCommTimeouts to fill in the COMMTIMEOUTS structure before updating and setting it back. * Move EngineOutputDataFileError from sm::eod to sm::eod::io. * Fix precondition checks on gazeVergencePoint, gazeVergenceAngle, bestGazeRay, mergedGazeRay. * Add templated addSubObject functions to SerializableComposite that creation of new object and adding in a single call. * Add templated addIfMissing functions to SerializableComposite to create and add a new object if it doesn't already exist. -------------------------------------------------------------------------------- Changes V1.1.1 -------------------------------------------------------------------------------- * Fix library names to match documented naming conventions. -------------------------------------------------------------------------------- Changes V1.1.0 -------------------------------------------------------------------------------- * Support for build shared libraries * Fix C# example project names in Visual Studio so that they do not conflict with the C++ examples. * Fix access violation in SerializableComposite when deserializing and object with an incorrect header size. -------------------------------------------------------------------------------- Changes V1.0.0 (over ClientToolsSDK) -------------------------------------------------------------------------------- * Now supports Microsoft Visual Studio 2008, Visual Studio 2005, Visual Studio .NET 2003, Linux/GCC, MacOSX/GCC. * Shared pointers used to simplify memory management. * Bindings for C# and Python. * Memory pooling support. * Extensibility - client defined output data classes can now be serialized as part of engine output data.