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



  • No labels