Our “Ready to customize” SOFTWARE solution

NEXVISION offers a growing family of off-the-shelf software solutions through our class path brain.

Electronic modular architecture Software reference design

ClassPath functions Describtion

1. Base modules

(All other functions depends on these base modules)

  • Circular buffers : A simple two head and size limited buffer AKA circular/ring buffer
  • HashTable : A policy based and highly optimized hash table that also supports an iterative interface
  • SizeLimitedQueue : A multithread specialized queue with empty and full events
  • Queue : A multithread specialized unlimited size queue with empty events
  • Array : A highly optimized plain basic order-keeping array for storing copy constructible and plain old data objects
  • IndexList : A highly optimized pointer based order-keeping array for storing any object
  • ChainedList : A highly optimized double-linked list
  • Algorithms : Search and sort above containers with the most efficient implementation possible
  • FIFO/LIFO : An efficient stack class with FIFO or LIFO component
  • Bitstream : A bitstream specialized stack that buffers a bitstream and provide a convenient interface to extract bits from it optionally applying processing (decryption) on it.
  • UTF-8 String : A very capable UTF-8 specialized String class (with RegEx, Fluent interface, Type conversion, Semantic convertion, etc.)
  • Unicode String : A simple wchar_t based string class that can convert to/from UTF-8 string class
  • ReadOnly String : A read only class that’s very efficient for parsing with a fluent interface
  • StringArrays : A array like interface for strings, with spliting and joinning à la Python.
  • BoyerMoore : A text searching class using BoyerMoore/TurboBoyerMoore for unknown text.
  • TernarySearchTree : A very efficient string searching tree O(log N) for dictionnaries with approximate searching functions (Levenshtein, Hamming, etc.)
  • AVL : A self balanced binary tree where operations are all O(log N)
  • NTree : A hierarchical tree with any number of children per node. Used in DOM implementation
  • Rtree : A structural tree base for geographical information system storage
  • Zlib : Zlib based compressor and decompressor
  • Gzip : Gzip based compressor and decompressor
  • EBSC : BSC based compressor and decompressor (BSC behaves faster and better than LZMA)

1.6.1 Asymmetric algorithms

  • RSA : A mathematically correct RSA implementation (no optimizations)
  • DSA : A mathematically correct DSA implementation (no optimizations)
  • OAEP PKCS : OAEP implementation for padding messages
  • OSSL_RSA : RSA implementation that makes use of system’s OpenSSL library
  • OSSL_DSA : DSA implementation that makes use of system’s OpenSSL library
  • OSSL_RSASign : RSA signature implementation that makes use of system’s OpenSSL library
  • OSSL_ECIES : Elliptic curves based asymmetric cryptography using system’s OpenSSL library
  • OSSL_ECDSA : Elliptic curve DSA implementation that makes use of system’s OpenSSL library
  • OSSL_ECDH : Elliptic curve Diffie Hellman implementation for secret exchange that makes use of system’s OpenSSL library

1.6.2 Symmetric algorithms

  • AES : A mathematically correct AES implementation (official code implementation)
  • OSSL_AES : An AES primitive using system’s OpenSSL library

1.6.3 Hashing

  • Adler32 : Adler32 checksum that also support rolling checksum interface
  • CRC16/CRC32 : Classical CRC algorithm
  • MD5 : Classical MD5 hashing algorithm
  • SHA1/SHA256 : SHA hashing functions (160 bits for SHA1, 256 for SHA256)
  • HMAC : A template based HMAC class that can HMAC with any hashing primitive
  • KDF/PBKDF1/PBKDF2 : Key derivation functions (password based) that can use any hashing primitive.

1.6.4 Random

  • MersenneTwister : A pseudo random generator based on MersenneTwister, collecting true entropy from the Hardware scanner

1.7.1 InputStream Input streams provide an abstracted and common interface to handle all kind of source data

  • ForwardInputStream : Used for wrapper streams class
  • RangeInputStream : A range limiter input stream
  • StdInStream : A stream based on the standard input file descriptor (STDIN)
  • LineBasedInputStream : A wrapper that allow reading an input stream line by line
  • InputFileStream : An input stream whose source is a file
  • InputStringStream : An input stream whose source is a string
  • MemoryBlockStream : An input stream made from a pre-allocated memory buffer
  • MemoryBufferedInputStream : An input stream wrapper that’s completely reading the given input stream in a memory buffer for caching
  • SuccessiveStream : An input stream that’s reading from 2 input streams successively
  • Base64InputStream : An input stream that’s decoding Base64 data on the fly
  • AESInputStream : An input stream that’s decoding AES encrypted data on the fly
  • SocketInputStream : An input stream that’s reading from a socket
  • BufferedInputStream : An input stream that’s reading the given input stream block by block
  • DecompressInputStream : An input stream that’s decompressing data on the fly

1.7.2 OutputStream Output streams provide an abstracted and common interface to handle all kind of source data

  • OutputFileStream : An output stream that writes to a file
  • OutputStringStream : An output stream that’s filling a string
  • OutputMemStream : An output stream that’s filling a MemoryBlock
  • MemoryBlockOutStream : An output stream that’s filling a pre-allocated memory buffer
  • MemoryBufferedOutputStream : An output stream wrapper that’s filling a memory buffer and then write to the given output stream
  • NullOutputStream : An output stream that just keeps track of the amount written, but does not write anything
  • TeeStream : An output stream that duplicate its action on two output streams
  • Base64OutputStream : An output stream that’s encoding in Base64 on the fly
  • AESOutputStream : An output stream that’s encoding AES encrypted data on the fly
  • HashStream : An output stream that’s computing a Hash on the fly while still writing to an output stream
  • SocketOutputStream : An output stream that’s writing to a socket
  • CompressOutputStream : An output stream that’s compressing data on the fly
  • HeaderBodyStream : An output stream based on a memory buffer for an fixed size header and a output stream for data, that allow out-of time write to the header after data is written.
1.8.1 Hilbert Maps : a 2D area to a single variable length 1D coordinate
1.8.2 BoundingBox/FlatRectangles/Point : Basic N-Dimension primitives
1.8.3 Rtree : Efficient geographic specialized storage structure
1.8.4 LongNumber : Unlimited precision number
1.9.1 Config : An automatic persistant configuration value object with transparent interface
1.10.1 Database abstraction : The database implementation is a very innovative system where standard C++ object are used and synchronized automatically in the database
1.10.2 SQLite : A Database driver for SQLite3
1.10.3 MySQL : A Database driver for MySQL
1.10.4 Query based interface : A compile-time based statement construction with automatic prepared statement for safe database usage
1.10.5 Constraints : A constraint based view on database area that automatically sync itself
1.11.1 Date/InternationalData : A common interface for Date parsing, conversion in different calendar, and emitting.
1.11.2 Time/Duration : A common interface for Time parsing, conversion from different timezone (localtime, including time correct DST consistency)
1.11.3 Chrono : A very accurate Chrono
1.11.4 ScopeProfiler : A scope based profiler that allows profiling code per function / per scope with and without accumulation
1.12.1 Thread : A common cross platform thread class with its own local variable support, stack dumping, and many more features
1.12.2 Lock/Event/RWLock : Basic synchronization primitive (shared code section locking, event mechanism, read / write locks)
1.12.3 Atomic classes : Atomic class that makes use of C++ compiler features if available, else defaults to compiler intrinsics, and finally to OS’s functions
1.12.4 Jobs : A job based scheduler that runs in its own thread
1.12.5 AsyncThread : Easy to use asynchronous « call me later » primitive
1.12.6 TimerThread : A best effort time based scheduling thread with callbacks
1.13.1 XML Parser : One of the fastest XML parser around
1.13.2 Xpath : A complete Xpath processing engine
1.13.3 FastExtract : Extract information from XML by compile-time base searching in a XML tree

1.14.1 Common primitives

  • BaseAddress/IPV4/IPV6/URL/UDT : Provides a common and class specific interface for Network address manipulation with complete support for routing table querying, ARP, DNS, etc
  • BaseSocket/BerkeleySocket/SSLSocket : Provides a common interface for Network socket functions with safe and easy to use interface.
  • BaseConnection/Stream/PseudoStream/Datagram : Abstract away differences from the underlying sockets to focus on the application solutions
  • Detection : Detect devices on the network either by using UPNP, NATPMP, MulticastDNS, Multicast broadcasting
  • NAT : NAT passthrough technics
  • Pools Cross platform : pool of sockets polling system that makes use of the best OS primitives

1.14.2 Clients

  • HTTP : A HTTP1.0/1.1 compatible client with full feature support, including manual and automatic session management
  • AsMuchAsYouCan : A proof of concept read as much as possible client
  • Authentication : A authentication based client
  • FTP : A FTP client
  • PTZ : A pan tilt zoom abstract interface client for IP camera with PTZ functionality
  • RTSP/RTP : A real time streaming server compatible client with clean and easy to understand interface
  • SMTP : A SMTP client for sending emails
  • SDP : A session description protocol compatible client
  • MIME : A MIME parsing compatible client
  • SOAP : A SOAP compatible client to connect on SOAP services
  • Websocket : A websocket compliant client
  • OnVIF : OnVIF compliant client
  • Fetcher : An abstraction on stream fetching client (can be via HTTP/Multipart, RTSP/RTP, RTPoverRTSP, File, etc…)
  • Recorder : An abstraction on stream recording capabilities (to .MP4/.MJPG/.NVF files)

1.14.3 Servers

All servers support both monothread (via polling) and multithread interfaces

  • HTTP : A full feature complient HTTP server
  • EventHTTP : A event base HTTP server
  • Websocket : A websocket capable server that can reuse the client from an EventHTTP servers
  • WSDiscovery : A WS-Discovery server that broadcast the service on the network.
  • RTSP/RTP : A RTSP compliant server
  • SDP : A session description protocol compatible service for RTSP server
1.15.1 HTMLParser : A very fast HTML4 compliant parser that’s converting and fixing bad HTML document to valid XML documents or DOM tree
1.15.2 DOM : A DOM 2.0 compliant interface
1.15.3 XMLSession : A XML processing engine that can simulate user browsing to a given website, posting forms, and extracting data
1.16.1 H264/MPEG4/MJPEG : Demuxer for these codecs used in the streaming clients and servers.
1.16.2 AAC/MP3 : Demuxer for these codecs used in the streaming clients and servers.
1.16.3 MPEG4 layer 2 (file parser) : A MPEG4 archive parser
1.16.4 Bitratestats : Bitrate statistics
1.17.1 Scanner : A scanner for hardware configuration (extract many informations, like monitor EDID, hard drive serial number, etc.)
1.17.2 Platform : A cross platform implementation of platform specific features (like dynamic library loading, etc…)
1.18.1 Base16/Base64/Base85 : An hexadecimal, base64 and Base85 (not compliant with Adobe’s base85 format) encoder and decoder
1.19.1 Info : A very easy to use cross platform file info extractor (like permissions, date & time, content, links count, etc.)
1.19.2 Scanner : A very fast, callback based directory scanner with filtering capabilities
1.19.3 DirectoryIteractor : An iterator for enumerating files in a directory
1.19.4 Async/Stream/Pool : A block and asynchronous file reading and writing classes with pool capabilities
1.19.5 Metadata extractor : A file metadata extractor that can be combined with FFMPEG to get additional information about files
1.20.1 Zip : A zip capable archive creation and decompression class
1.20.2 PDF : A PDF object reader format
1.20.3 EPUB : An EPUB file reader class
1.21.1 JPEG : An optimized for size JPEG decoder
1.21.2 PNG : An optimized for size PNG decoder and encoder
1.22.3 PPM/PBM/PGM : A Netpbm decoder and encoder
1.22.4 Image : A very simple and fast Image processing class
1.22.5 Colour : A multiple colourspace capable colour processing class
1.22.1 Console : An implementation of the logger interface for console based logging
1.22.2 File : File bases logging
1.22.3 Structure file : File based logging with structure so it can be searched easily
1.22.4 Debug : A debug console based logging
1.23.1 Constant : A template based unit system for compiletime checked mathematical and physical equations
1.23.2 Units : A template based unit system for compiletime checked mathematical and physical equations
1.23.3 Value : A template based unit system for compiletime checked mathematical and physical equations
1.23.4 Expression : A mathematical expression parser with scope definable functions
1.23.5 Variant : A true type safe variant class with elegant heap/stack storage based on the stored type
1.23.6 JSON : A JSON compliant parser and writer
1.23.7 DynObj : A dynamic object class with an elegant interface that allows runtime based code modification
1.23.8 UUID : A UUID compliant parsing class
1.23.9 UniversalTypeIdentifier : A registry for type to allow dynamic type conversion based on pseudo XML implementation
1.24.1 Licensing / DigitialRightManagement : A DRM implementation algorithm
1.25.1 MemoryBlock : A memory block class that handles encoding, growing, shrinking, etc.
1.25.2 ScopePtr : A scope based pointer class
1.25.3 OwnPtr : A owned modifiable pointer class
1.25.4 RefPtr : A reference counter pointer class (deprecated)
1.25.5 Dump : A hexadecimal dumper for debugging
1.26.1 breakUnderDebugger : A simple break under debugger function if running the code under a debugger
1.26.2 Callstack dump : A callstack dumping feature
1.26.3 TypeOf : Return a textual representation of a type available even when compiled without RTTI
1.26.4 Assert / CompileTimeAssert : Runtime and compiletime based assertions checking
1.27.1 Calendars : Many different calendar supports for date and time conversion
1.27.2 Translate : A very optimized translation macro and function for string conversion based on external file resource
1.28.1 UnitTest : A very simple testing mechanism for all the features described above
1.28.2 False : A compile-time based file and line capture for Test failing
1.28.3 MakeUnitTest : A convenient macro for automatically generating test vectors based on compilation flags

Download our Ready to customize Software solution


Check also our Electronic module architecture HW & IP Core FPGA libraries.