For frame accuracy reasons some clip control commands need to be delayed according to the prevailing ringbuffer size. Other commands needed for configuration are executed immediately. Hence one needs to be careful with the timing when sending commands otherwise commands may not be executed in the order they were sent it. For example, a flush followed by configuration and open commands may result in having the flush execute after open command due to a ringbuffer.
Commands that have delayed execution are:

  • CONTROL RECORD

  • CONTROL CHANGE_DURATION

  • CONTROL PAUSE

  • CONTROL FLUSH

Open the Clip(s)

After configuring (but before the Quicktime options), the clip(s) can be opened for writing. The following commands show how to set and get the clip name:

RENDERER*VIDEO*CLIPOUT*n*NAME GET
RENDERER*VIDEO*CLIPOUT*n*NAME SET "clipname" [ TDIR Interval ]
RENDERER*VIDEO*CLIPOUT*n*NAME PLACEHOLDER_SET "clip_base_name"

The clipname argument for the SET command must be given as absolute path name. The directory separators must be given as forward slashes. The extension should be omitted since it is added automatically, depending on the resolution, container and codec types.

Note: Quotes around clipname are mandatory and literal if the TDIR argument is used. The TDIR argument is the interval with which the file is updated regarding the clip length. Using the TDIR feature allows for so called “growing files”. It is currently supported on .avi, .mxf, .mov and .wav containers.

  • MATROX_MOV containers create a separate reference file that is updated according to the given interval. See below for file naming convention.

  • QT_MOV containers update the quicktime file itself. The interval in seconds must be larger than 1.0s and less than 60.0 seconds. A value of 1.0s or less disables this feature.

The clipname can consist of placeholders as well. The following placeholders are available:

  • <clip_root>: The clip data directory as set in the configuration file.

  • <clip_name>: The value that has been set with PLACEHOLDER_SET.

  • <absolute_scene_name>: The complete name of the scene currently loaded in the render editor.

  • <base_scene_name>: The last part of the name of the scene currently loaded in the render editor.

  • <absolut_scene2_name>: The complete name of the scene that is to be loaded into the render editor.

  • <base_scene2_name>: The last part of the name of the scene that is to be loaded into the render editor.

The resulting filenames, depending on the type of the file, are as follows:

  • video: Clipname argument + automatic extension.

  • key: Clipname argument + “_key” + automatic extension.

  • audio: Clipname argument + “_audio” + automatic extension.

  • vbi: Clipname argument + “_vbi” + automatic extension.

  • proxy: Clipname argument + “_proxy” + automatic extension.

  • MATROX_MOV: Reference file clipname argument + “.Ref” + automatic extension.

Example Open a Clip

RENDERER*VIDEO*CLIPOUT*1*NAME SET v:/clips/testclip

Record And Close Commands

RENDERER*VIDEO*CLIPOUT*n*CONTROL RECORD frames
RENDERER*VIDEO*CLIPOUT*n*CONTROL CHANGE_DURATION frames
RENDERER*VIDEO*CLIPOUT*n*CONTROL PAUSE
RENDERER*VIDEO*CLIPOUT*n*CONTROL FLUSH

The RECORD command starts recording up to the given number of frames. If the argument is zero it records until a PAUSE or FLUSH command is sent.

Once the recording has finished, additional RECORD commands can be issued. The number of frames to be recorded can be changed during a recording operation with CHANGE_DURATION.

In Interlaced resolutions, RECORD can only start at a first field. If the command is issued at a second field then this field it is dropped and the recording starts at the next first field.

FLUSH closes the clip and resets the clip channel. This command can also be used before a clip has been opened to reset the clip out channel.

Please remember that the flush command is a delayed command that needs to travel through the ringbuffer. Therefore it shall be waited until the command has executed before sending in new commands to set up a new recording.

Example: Record 500 Frames

RENDERER*VIDEO*CLIPOUT*1*CONTROL RECORD 500

Example: Change the Requested Number of Frames to 300

RENDERER*VIDEO*CLIPOUT*1*CONTROL CHANGE_DURATION 300

Example: Pause an Ongoing Recording

RENDERER*VIDEO*CLIPOUT*1*CONTROL PAUSE

Example: Finish and Close

RENDERER*VIDEO*CLIPOUT*1*CONTROL FLUSH

Query Current Clip Values

RENDERER*VIDEO*CLIPOUT*n*CONTROL GET_REQUESTED_DURATION
RENDERER*VIDEO*CLIPOUT*n*CONTROL GET_RECORDED_DURATION
RENDERER*VIDEO*CLIPOUT*n*CONTROL GET_TOTAL_DURATION
  • GET_REQUESTED_DURATION returns the frame argument from the last RECORD command.

  • GET_RECORDED_DURATION returns the number of already recorded frames since the last RECORD command.

  • GET_TOTAL_DURATION returns the total number of recorded frames so far.