Itview Modules
List of internal modules used by itview. Those that are already implemented as re-usable modules and used outside the itview application are highlighted in blue. All the modules are written in python 2.x unless specified otherwise.
Techstack
Python, PyQt, Cython, C++, Scala
GUI
PyQt v4 (PySide compatible)
Viewport
OpenGL based “layer stack”
Playback Engine
Timecube (timing module) that takes over the Qt event loop
Videostreamer, manages read-ahead logic for video and invoking the read codecs
Audiostreamer, same as videostreamer but for audio
I/O Layer
OIIO for individual image files (C++)
FileSequence (C++)
Understands individual image files for a rendered sequence
SpMovie (C++)
Wrapper around third party libraries and internal movie formats (h264, J2K codecs)
Internal movie file format using J2K with DCP compliant encoding (12 bit depth)
Ffmpeg based libraries for most third party movie file formats
MediaCache
Finds the physical media on disk based on tracking number
VirtualMedia
Programmatically generate frames for blackframes, error card, contact sheet, title cards
Media layer that abstracts all video, audio I/O
Support pixel probing
Recognize colorspace, aspect ratio, stereo
Playlist
Manages a list of clips (media with video and/or audio)
Clip can have one video and/or audio
Manages metadata with playlists, clips and the media objects themselves
Transitions: cross-dissolves and wipes
Timewarps: customize the order of frames for playback, holding frames, speed changes etc
Playlist files are in XML format
Database Layer
Shotgun (Production tracking)
Edbot (Editorial tracking: proprietary, maybe replaced with OTIO in the future)
VFO (review notes)
VnP (Versioning and Publishing - proprietary asset management system)
Annotations
Supports
Scribbles with various Brushes, Text, Color Corrections (rectangles, ellipses and lasso)
Vector format (resolution independent), stored as XML in database
Internal API for storing and retrieving
Would be great to move to an interchangeable format+API (OTIO, USD)
Color Pipeline
OCIO (C++)
Color correction operations are sent as OCIO requests and rendered
Aware of display devices being used and will choose the correct look
Misc
FCurve
FTGL/Freetype
FormWidgets
ResolutionTable
StereoConvergence
Plugins
Python based
Internal “pyCore” module exposes most of core itview functionality to plugins
Messaging
PyQt signals/slots
ZeroC ICE api
Sockets
Remote Sync
Sync Server (Scala)
Separate project, written in Scala for high performance
Itview clients talk to it via ZeroC ICE api protocol
Manages permissions and access controls for remote users
Host itview Qt events and API calls are broadcast to remote clients
Sync sessions provide a “headless itview” with it’s entire state backed by a database
Public (show based) /private user based sessions as well as internal “context view playlists”
Aware of editorial information for sequence/shots