Personal tools
You are here: Home Products RV Hacking RV

Hacking RV

Overview

RV is built on an elegant architecture designed to be flexible and customizable. RV can be modified and integrated into pipelines in a variety of ways, from changing the look and behavior of the program using the extension language to reading and writing RV session files using open source tools to writing plugins for proprietary image and movie formats.

 

RV Customization

RV Customizable Components

  • User Interface written in the Mu extension language: Completely customizable and open to users.

  • RV Session DAG: RV’s rich data structure can be manipulated from Mu and is stored as a .rv Session file which can be created/manipulated using open source GTO tools.
  • Image/Movie Plugin architecture: Makes it possible to integrate proprietary image and movie formats with RV.
  • Color management source setup functions: Provides fine, programmatic control over image handling and color setup.

User Interface and Control Logic:

RV's extension language, Mu, is not just a tool for users. RV’s interface is entirely programmed in Mu. This includes all of RV’s menus, keyboard and mouse bindings, and heads-up widgets as well as all of the logic that controls RV's behavior. All of the Mu source code comes with RV and can be studied and modified by users. Mu controls RV through two basic mechanisms: first, by sending commands to the core library and second, by setting properties of the nodes in the RV Session DAG. Mu can also be used to read and write files, access the filesystem, get environment variables, make system calls and even draw directly on RV's display using Mu's OpenGL Module.

RV Session

An RV session is represented internally as a Directed Acyclic Graph (DAG) in which images and audio pass from the leaves to the root where they are rendered. Each node in the DAG has a number of properties (state variables and parameters) which control its behavior. For example an RVSource node will have properties like source fps, audio offset, and file name. The RV Session is a very rich structure than can represent arbitrary EDLs, color corrections (including file specific luts and the overall display lut), compositing operations, audio volume, audio offsets, etc.

 

RV sessions can be saved as .rv session files from RV or can be created or edited outside of RV using open source GTO Python and C++ tools. RV session files can also be read by RVIO, the standalone image and sequence pipeline tool that comes with RV. Because .rv files can represent color corrections, compositing operations, comparisons, image transforms, etc. RVIO can be used as a back end pipeline tool for tasks like preparing dailies (with slates, burn-ins, mattes, etc.), conforming material, generating slap comps, generating tiled renders of multiple input sequences, rendering picture-in-picture output, etc.

Image and Movie Plugin Architecture

RV comes with header files and examples for creating custom image and movie format plugins. (Mac and Linux only).

Color Management and UI Customization Per Source

RV supports per file LUTs and an overall display LUT. RV will also generate hardware shaders that precisely compute many useful color transforms, such as Log->sRGB, Log->Gamma2.2, sRGB->Linear, etc. RV provides a customizable source setup function (written in RV's extension language). Source setup is called for each source load and provides full control over how RV is configured.

 

This permits extremely fine-grained control, e.g. users can devise arbitrary rules based on image attributes, environment variables, etc. These rules can be used to apply luts, turn on or off RV's built in shaders, set image aspect ratios, mattes, or any other RV feature. For example, Exr's for compositors working on one sequence could be handled differently than Exr's for TD's working on a different sequence. Or Quicktime movies with baked in gamma, could be linearized to match Exr sequences - so that a common display lut & gamma can be applied.