Skip to content

Architecture

Gavin Jancke edited this page Aug 30, 2020 · 4 revisions

The Expressive Pixels Animation format is a simple palletized compression codec based on Intra-frame coding optimized for minimal CPU processing and communications overhead in small embedded systems. Two kinds of frame types exist in the codec, 'I' (Intra-coded) key frames, and 'P' (Predicted picture) differ

  • The EPX authoring app produces animations in the EPX Animation Format which is a compression video codec optimized for transmitting and storing image frames for constrained microcontrollers.
  • An animation package in the EPX Animation format can be consumed directly by the EPX MakeCode Extension
  • The Expressive Pixels MakeCode package implemented in TypeScript, the rendering of an animation in the EPX Animation Format that is surfaced to a MakeCode Block/Javascript program.
  • An animation package in the EPX Animation format can be transferred over USB or Bluetooth connection to an EPX compatible device.
  • Communication with an EPX compatible device that is running the EPX Firmware with the communication layers enabled, is done using the COBS streaming protocol. COBS (Consistent Overhead Byte Stuffing) is a communication streaming protocol that provides resilient transfer and recovery of data packets between two devices.
  • The EPX Firmware is split into two parts: The application logic in ExpressivePixelsCore that implements the features of Expressive Pixels such as animation rendering, file Storage, & behaviors; A hardware/platform abstraction layer in ExpressivePixelsPlatform, provides system level capabilities to ExpressivePixelsCore isolating the application logic from the underlying type of microprocessor and development toolchain such as Arduino, Nordic SDK, or other platforms that Makers can implement for.