NAME

mvcp - Multiport Video Computer Protocol


PROTOCOL REVISION

Revised 01MAR2003


DESCRIPTION

The Media Server for Broadcast (MSB) includes a TCP/IP-based protocol processor enabling an application remote, network-based control over video codec and storage resources comprising an MSB infrastructure. The Multiport Video Control Protocol (MVCP) is text-based and simplifies interaction between a client controlling application and the MSB.


PROTOCOL OVERVIEW

MVCP comprises a simple request/response protocol over a standard stream socket connection. The protocol semantics substantially match the standard file transfer protocol FTP. MVCP requests consist of case-sensitive command strings two to four characters long with a varying number of space-delimited arguments. All commands consist of uppercase ASCII letters. Each command and optional argument list must terminate with a CR/LF (HEX 0D/0A) combination.

NOTE: Lower case MVCP command strings will not parse. The command arguments may consist of any case combination of ASCII characters. Unprintable ASCII character passed as arguments are parsed as spaces, but retain their ASCII values, rendering these clips unmanagable by the MSB. Users should restrict command argument values to the inclusive ASCII range HEX 20 (space) and HEX 7E (~). Arguments with spaces as values must enclosed with quotation marks (HEX 22).

Protocol response message text consists of a numeric result code and an attributed informational message terminated by a CR/LF. Success is indicated with a response code of the form 2xx. Unless otherwise stated, a command returns the result code 200 if successfully parsed. However, a valid command parse does not automatically imply the underlying MSB resource executes successfully. Refer to UNIT COMMAND MODES for discussion of this behavior.

Like FTP, certain MVCP responses may also include a single response line or multiple response lines terminated by a single blank line (CR/LF). In this case, a result code of 202 is returned and a single response line follows. Result code 201 returns if (one or more lines terminated by a blank line) is subsequently generated.

All MVCP command arguments and responses are white space-delimited. Command arguments that contain spaces must be encapsulated by double quotation marks to enable consistent argument parse. In some cases, response arguments that do not contain spaces may be double-quoted, and the application should be prepared to handle these specifically.

NOTE: Future MVCP enhancements may alter command name, argument quantity, or reply results. When new arguments are added to a command, omission of the new arguments will result in the behavior associated with the original command; hence, existing applications will continue to work in a compatible manner. See the VERS command for information regarding protocol versioning, which aids the conditionalization of applications that track MVCP evolution.


UNIT MANAGEMENT

A single MVCP session can control multiple MSB logical units. Each unit consists of a logical VTR transport capable of loading, cueing, and playing a clip, and permits numerous other content operations, as defined and supported by MVCP. MVCP commands addressing a specific unit include the unit name as the first argument, while global commands, commands that affect MSB state or device categories, do not include a unit name.

For example:

 CINF clip1     (global: retrieve clip information)
 202 OK
 clip1 movie/stream/mpeg/mpeg2/sgi ... (additional metadata not shown)

 LOAD U1 clip1  (unit: load clip into unit U1)
 202 OK
 clip1 movie/stream/mpeg/mpeg2/sgi ... (additional metadata not shown)

When the unit name is omitted or specified as '*' with a unit command, the current unit is used. The unit name can be omitted only if the unit command has no required arguments.

Units can either be created (using the UADD command) or opened (using the UOPN command). When a unit is opened, it must have previously been created by another MVCP session (which could be another MVCP session or an external control processor such as a station automation system or on-line editor). Exercise caution when sharing control of a unit between two MVCP sessions. Interfering with a unit owned by an MSB external protocol processor (e.g., Sony, Harris, Odetics) may lead to unpredictable behavior.


COMMAND SETS

Two disjoint command subsets comprise MVCP. One subset includes global commands, those commands which address MSB state or device categories and do not address specific unit configuration or state. The other subset comprises unit commands. Certain commands affect only the current MVCP session invoking them, while others impact global MSB state.


GLOBAL COMMANDS: ACCESS CONTROL

USER username
The USER command sets the username for access control purposes. If MVCP access is restricted by the mvcp.allow or mvcp.deny files, the USER and PASS commands must be issued before access to any other MVCP commands is granted.

The USER command applies only to the current MVCP session.

The files /usr/vtr/config/mvcp.allow or /usr/vtr/config/mvcp.deny must be specified to enable and disable individual user access to MSB via MVCP. A comma-separated list of user names must be given in each file. The user names must match the entries held in /etc/passwd to affect comparison during session initiation.

If successful, the USER command returns 331 Password required for user.

PASS password
The PASS command verifies password for access control purposes and must follow the corresponding USER command.

The PASS command applies only to the current MVCP session. The /etc/passwd value for the user's password must contain a valid, non-null entry to affect comparison.

If successful, the PASS command returns 200 OK.

NOTE: The access controls furnished with USER and PASS commands are not fully implemented and usage should be avoided.

VERS
The VERS (Version) command reports the MVCP version supported by MSB. This may change with each release, signifying that command arguments have changed or that command semantics are different.

If successful, the VERS command returns 202 OK, followed by the MVCP version label. This command is currently unimplemented.


GLOBAL COMMANDS: PORTS

PLS
The PLS (List Ports) command returns a list of supported media ports. If successful, a response code 201 returns and one response line for each port is returned. The format of each line is:

name mode ``description'' type port-physical-name

where:

name identifies the port name as known to MSB.

mode identifies the port's input/output mode (IN, OUT, or BOTH).

description provides descriptive text about the port.

type identifies the port type. Currently MSB supports port types of NET (network), VID (video), DECK (deck control), or DISK (disk storage).

port-physical-name defines the media ports physical name used for unit creation and management.

For example:

  PLS
  201 OK
  MPEG422_6 OUT "SGI PCI-VIDAUD-MSB-B" VID "WHITE HOUSE OVAL OFFICE"
  MPEG422_7 OUT "SGI PCI-VIDAUD-MSB-B" VID "MAIN CASINO, ROULETTE TABLE 2"
  MPEG422_12 IN "SGI PCI-VIDAUD-MSB-B" VID "COUNT ROOM"
  MPEG422_13 OUT "SGI PCI-VIDAUD-MSB-B" VID "MAIN AND 1ST TRAFFIC LIGHT EAST BOUND"


GLOBAL COMMANDS: UNITS

UADD media-port-name storage-port-name port-sharing-mode [ owner-info ]

The UADD command creates a new unit in the current MVCP session. The name of the media port accessed by the unit is specified by media-port-name. The storage port accessed by the unit is specified by storage-port-name (use '*' to specify the default storage system).

Certain media ports have no attributed storage port, such as those assigned to deck control. Specify 'null' for the storage port to create a unit which does not have a storage port.

The port-sharing-mode specifies how access is shared between multiple units accessing the same media port and takes one of the following values: EXCL, SHAR, or CONC.

Exclusive access (EXCL) asserts that only one unit may exist at any instance, precluding creation of additional units through contemporaneous MVCP sessions. UADD will fail if a pre-existing unit was created with EXCL and currently active within a sibling MVCP session.

Shared access (SHAR) allows multiple unit creation on the same port. However, only one unit may actually use the hardware at any given time. Shared access is only available on media ports which support it (in their interface module).

Concurrent access (CONC) allows multiple units to simultaneously use the media port. This mode is used most commonly on multiplexed networking ports.

The owner-info is optional and establishes an ownership label for the new unit. The owner info is output by certain unit status commands (UINF, UGIN, and ULS).

If the unit is successfully created, a response code 202 returns and a single response line containing the newly created unit name is output.

For example:

  UADD MFCODEC_6 * EXCL *
  202 OK 
  U1

UGIN unit-name
The UGIN (Get Unit Info) command returns the owner and port information for the unit specified by unit-name. The specified unit does not need to be opened by the current MVCP session. UINF returns the identical information for an opened unit.

If the unit exists, a response code 202 returns and a single response line is returned with this format:

owner port-name port-mode port-physical-name

where:

owner identifies the creating MVCP session name for the unit.

port-name identifies the media port label controlled by the unit.

port-mode identifies the input/output mode the unit supports. The possible values are IN, OUT, and BOTH.

port-physical-name identifies the media port physical name controlled by the unit.

For example:

  UGIN U1
  202 OK 
  * MPEG422_6 OUT MFCODEC_6

ULS
The ULS (List Units) command returns a list of previously active or existing MSB units. The current state of each unit is output.

If the ULS command is successful, a response code 201 returns and one response line for each unit is output followed by a terminating blank line. The display format for unit state is:

name owner port mode clip status function location speed rate command-id

where:

name identifies the unit.

owner identifies the MVCP session name that created the unit.

port identifies the unit's media port label.

mode identifies the media port mode (IN, OUT, or BOTH).

clip identifies the loaded clip name (``*'' if no clip is currently loaded).

status states the unit's current function status (BUSY - OP IN-PROGRESS, RUN - RUNNING, DONE - COMPLETE, ERR - ERROR).

function identifies the current function: IDLE, LOAD, UNLD (Unload), CUE (Cue for playout), CUER (Cue for record), PLAY, STEP, SHTL (Shuttle), REC (Record), PAUS (Pause), STON (StandbyOn), STOP, FF (Fast Forward), REW (Rewind).

location identifies the current clip location in hours:minutes:seconds:frames format. In drop-frame mode, a period (.) replaces the last colon in the timecode.

speed specifies the current playback speed (1000 = normal 1x speed).

rate specifies the frame rate (in frames/sec) corresponding to the unit location. 525-line drop-frame timing is specified in its approximate form, 29.97 (525 non-drop-frame is 30). 625-line is represented as 25 frames per second.

command-id identifies the unit's MVCP command in-process.

For example:

  ULS
  201 OK
  U1 * MPEG422_6 OUT * DONE IDLE * 0 * 0

MON [ unit-name ... ] [ / event-type ... ]
The MON (Monitor) command places the current MVCP session into event monitoring mode. In this mode, a single response line is returned whenever a monitored event occurs. If one or more units are specified, unit events for only the specified units are returned; Otherwise, events for all active units are returned.

A list of one or more event types may be specified (preceded by a single forward slash). The event types are: UADD (unit added), URM (unit closed), UCHG (unit state change), ULOC (unit location change), UCTL (unit control change), UERR (unit error), CADD (clip added), CRM (clip removed), CCHG (clip media modified), CMV (clip moved), CEDP (change in clip in/out points) and CCHP (clip attribute protection change). Only the specified types of events are returned.

If no event-type is specified, MON returns UCHG, URM, UERR, and UCTL events by default, and if no units are specified, UADD-related events are returned by default.

Event monitoring terminates by closing the MVCP session.

The event response line returned by MON consists of one of the following.

In response to UADD from an MVCP session, MON produces:

UADD unit-name owner_info media_port_name port_sharing_mode physical_port_name

UCHG unit-name clip status function location speed rate command-id

where:

unit-name is the name of the unit.

clip identifies the loaded clip name (``*'' if no clip is loaded).

status states the unit's current function status (BUSY - INITIALIZATION, RUN - RUNNING, DONE - COMPLETE, ERR - ERROR).

function states the unit's current function: IDLE, LOAD, UNLD (Unload), CUE, CUER (Cue for record), PLAY, STEP, SHTL (Shuttle), REC (Record), PAUS (Pause), STON (StandbyOn), STOP, FF (Fast Forward), REW (Rewind).

location is the current clip location in hours:minutes:seconds:frames format. A period (.) replaces the final colon (:) in drop-frame mode.

speed identifies the current playback speed (1000 = normal 1x speed).

rate is the frame rate (in frames/sec) corresponding to the unit location. 525-line drop-frame timing is specified in its approximate form, 29.97 (525 non-drop-frame is 30). 625-line is represented as 25 frames per second.

command-id identifies unit's in-process command.

In response to UCLS from an MVCP session, MON produces:

URM unit-name

unit-name identifies the unit name.

In response to ULS from an MVCP session, MON produces:

ULOC unit-name location rate

unit-name identifies the unit name.

location identifies the current clip location in hours:minutes:seconds:frames format. A period (.) replaces the final colon (:) in drop-frame mode.

rate identifies the timecode rate (in frames/sec) corresponding to the unit location. 525-line drop-frame timing is specified in its approximate form, 29.97 (525 non-drop-frame is 30).

In response to a SSET from an MVCP session, or in response to initial unit creation via UADD, MON produces:

UCTL unit-name control-name ``control-value''

unit-name identifies the unit name.

control-name identifies the control name.

control-value identifies the new value assigned to control-name.

In the event of a unit error, MON produces:

UERR unit-name error-code ``error-message''

unit-name identifies the unit name experiencing the error.

error-code identifies the error code number.

error-message identifes textual error message.

In response to CADD, MON produces:

CADD clip format size resident-size start end in out rate time-of-last-modification clip-type

clip identifies the clip name.

format identifies the clip format (mpeg2, dvcpro, vframe, etc).

size identifies clip content size in bytes.

resident-size identifies the cache-resident clip content size in bytes

start states the clip timecode of the first time.

end states the clip timecode of the last frame.

in identifies the clip current mark-in timecode.

out identifies the clip current mark-out timecode.

rate identifies the clip frame rate (in frames/sec). 525-line drop-frame timing is specified in its approximate form, 29.97 (525 non-drop-frame is 30). Drop-frame and non-drop-frame translation is not performed irrespective of FRAT setting.

time-of-last-modification specifies the clip modification time, the last time the clip content was modified and flushed to mass storage.

clip-type specifies either CL or LN. The value LN implies that clip creation was performed as a link to another clip. The value CL implies the clip is unassociated.

In respone to CRM, MON produces:

CRM clip

clip identifies the clip name.

In response to CCHG, MON produces:

CCHG clip format size resident-size start end in out rate time-of-last-modification clip-type

clip identifies the clip name.

format identifies the clip format.

size specifies clip content size in bytes.

resident-size specifies cache-resident clip content size in bytes.

start identifies the clip timecode of the first frame.

end identifies the clip timecode of the last frame.

in identifies the clip current mark-in point.

out identifies the clip current mark-out point.

rate identifies the clip frame rate (in frames/sec). 525-line drop-frame timing is specified in its approximate form, 29.97 (525 non-drop-frame is 30). Drop-frame and non-drop-frame translation is not performed regardless of FRAT setting.

time-of-last-modification specifies the clip modification time, the last time the clip content was modified and flushed to mass storage.

clip-type specifies either CL or LN. The value LN implies that clip creation was performed as a link to another clip. The value CL implies the clip is unassociated.

In response to CMV, MON produces:

CMV clip new-clip

clip identifies original clip name; new-clip identifies new clip name.

In response to CEDP, MON produces:

CEDP clip mark-in mark-out [tc-track]

mark-in mark-out identify the new clip in-out points. The optional argument tc-track specifies the time code track used for the mark-in and mark-out:

CLIP is the control track, VITC is the vitc track,

LTC is fis the ltc track. If not specified, the default time code track will be used.

In response to CCHP, MON produces:

CCHP clip {protection-type ...}

The returned protections values identify the new protections for clip. The protection values are ATTR (Attribute Protect), MV (Rename Protect), REC (Record Protect), and RM (Delete Protect).

UOPN unit-name
The UOPN (Unit Open) command permits the current MVCP session to control the unit.

If the unit opens successfully, a response code 202 and separate response line containing the unit name returns.


GLOBAL COMMANDS: CLIP EDITING

CBLD clip new-clip [start]
The CBLD command (Build Clip) creates new-clip by copying segments specified by clip. No association between new-clip and the original clip exists when the copy completes.

The source clip must possess a segmented format (i.e. movie/vclip), and be complete a virtual clips. Fetal vclips cannot be processed with CBLD. All segments in the source clip must be contiguous.

If start is given, the timecode of the first frame of new-clip is set to start; Otherwise, the first frame of new-clip is assigned that of clip.

A response code of 200 indicates success.

NOTE: CBLD requires the input clip to consist exclusively of I-frame content, since editing streams based on groups of picture is not supported. Building clips derived from different bitrates and chroma formats is discouraged.

CCLS [ clip ]
The CCLS command (Clip Close) ends clip editing operations for the open clip clip, or for the last clip opened or created if clip is not specified. The clip must have been previously opened or created via COPN or CMK during the current MVCP session. Any changes made to the clip since it was opened or created are committed to the clip cache. Subsequent clip editing operations for the clip must be preceded by another COPN command.

A response code of 200 indicates success.

CFCL clip track-mask in out
The CFCL (Clip Clear Frames) command clears (erases) frames of the clip from the frame specified by in (inclusive) to the frame specified by out (exclusive). The video and audio is removed, but the intermediate frames remain as filler. This contrasts with CFRM which removes the frames, closing the clip gap. This command is only applicable to fixed format clip content (DV, DVCPRO, or DIF, for instance). Frame clearing via CFCL is not supported by the PCI-VIDAUD-MSB-B codec.

This command is analogous to the FCLR command, except that it does not take place in the context of a unit. The clip must have previously been opened or created via COPN or CMK during the current MVCP session.

track-mask must be specified as ``*''.

A response code of 200 indicates success.

CFNW clip track-mask in out
The CFNW command (Clip Insert New Frames) inserts empty (black) frames into clip in the interval [in, out), between the original frames in and in+1. This command is only applicable to fixed format clip content (VC, DVCPRO, or DIF for instance).

This command is analogous to the FNEW command, except that it does not take place in the context of a unit. The clip must have previously been opened or created via COPN or CMK during the current MVCP session.

track-mask must be specified as ``*''.

A response code of 200 indicates success.

CFRM clip track-mask in out
The CFRM (Clip Remove Frames) command removes frames from clip beginning with frame in (inclusive) to the frame out (exclusive). This command removes the intermediate frames altogether, joining the frames in the timeline to close the gap. This contrasts with CFCL which erases the video and audio but does not remove the intermediate frames. This command is only applicable to fixed format clip content (DV, DVCPRO, or DIF, for instance).

This command is analogous to the FRM command, except that it does not take place in the context of a unit. The clip must have previously been opened or created via COPN or CMK during the current MVCP session.

track-mask must be specified as ``*''.

A response code of 200 indicates success.

CMK clip format-name
The CMK command (Clip Make) creates clip with format format-name. format-name must specify the segmented format movie/vclip; non-segmented formats must be created within the context of a unit using the LOAD command.

If succesful, response code 200 is returned, and the new clip possesses a ``fetal'' state. In this state, the clip will not appear in the clip cache, although it can be deleted using CRM. In order for the clip to be visible in the clip cache and usable in the system, an initial segment must be added to it via the CUPS command. At that point, the new clip file will be written to the clip cache and become usable within the system.

The new clip will remain open for subsequent clip editing operations (see COPN) within the MVCP session duration or until explicitly closed with the CCLS command.

COPN clip
The COPN (Clip Open) command opens the existing clip for use in subsequent clip editing operations, as supported and specified with the commands in this section. The clip remains open for the duration of the current MVCP session, or until explicitly closed via CCLS.

CSAV [ clip ]
The CSAV command (Clip Save) causes the clip, or the most-recently opened or created clip, to have changes flushed to the clip cache. In general, clip editing operations are not committed to the clip cache until either a CSAV, CCLS or the end of the current MVCP session. However, real-time MSB resource and processing constraints preclude immediate guarantee of this behavior.

The clip must have been previously opened by a COPN or CMK command in the current MVCP session.

A response code of 200 indicates success.

CSCL clip track-mask timecode
The CSCL command (Clip Clear Segment) removes the segment beginning at the frame specified by timecode from clip. track-mask must be ``*''. The video and audio contained by the indicated segment is removed, but the frames remain (a gap is created in the clip). This contrasts with CSRM, which joins the interval. This command is only applicable to fixed format clip content (DV, DVCPRO, or DIF, for instance). Segment clearing via CSCL is not supported by the PCI-VIDAUD-MSB-B codec.

The clip must have been previously opened by a COPN or CMK command in the current MVCP session.

A response code of 200 indicates success.

CSLS [ clip [ track mask [ in [ out ]]]]
The CSLS command (Clip List Segments) lists the various segments that comprise the clip, or the most recently opened or created clip if clip is not specified. For a clip of segmented format (such as movie/vclip), this results in zero (0) or more response lines, depending upon the number of segments in the clip. For a non-segmented format (such as movie/vframe or movie/dif) it always results in a single segment response line, equal to the entire clip (similar to CINF).

If in is specified, only segments between in and the end are returned. If out is also specified, only segments between in (inclusive) and out (exclusive) are returned. If specified, track-mask must be specified as ``*''.

The clip must have been previously opened by a COPN or CMK command in the current MVCP session.

If succesful, a response code of 201 and the following per-segment information will be returned in the following format:

trk in out clip src-trk src-clip src-in src-out

trk is universally ``*''.

in identifies the segment in-point in the clip's timeline.

out identifies the segement out-point in the clip's timeline.

clip identifies the clip name in the clip-cache corresponding to this segment. Multiple segments may share the same value for clip if they are associated with the same source clip. The associated clip will link (see CLN) the original source clip, or an actual clip, if the segment was created via a REC command in the unit context. This clip is managed automatically by the system and should generally be ignored.

src-trk is universally ``*''.

src-in identifies the segment in-point of the original source clip.

src-out identifies the segment out-point of the original source clip.

src-clip identifies original source clip name from which this segment was taken, or ``*'' if the segment was created as a result of a REC command in the unit context.

CSRM clip track-mask timecode
The CSRM command (Clip Segment Remove) removes the segment beginning at the frame specified by timecode from the clip specified by clip. track-mask must be ``*''. This command removes the frames altogether, moving the frames after the removed frames down in the timeline to close the gap. This contrasts with CSCL which simply erases the video and audio associated with the frames but does not remove the frames themselves. This command is only applicable to movie/vclip format.

The clip must have previously been opened or created via COPN or CMK during the current MVCP session.

A response code of 200 indicates success.

CUPS clip src-op dest-op trk-mask in out src-clip src-trk-mask src-in src-out

The CUPS command (Clip Update Segment) adds segments from an existing source clip to an existing destination clip. The destination clip must have a segmented format (i.e. movie/vclip), and must have previously been opened or created in the current MVCP session with COPN or CMK. The source clip need not be open.

A segmented virtual clip (vclip) links segments from source content clip files into a structure for playout or record. The links specify in and out timecodes pointing to source content clips. CUPS populates fetal vclips with video segments extracted from clip content files.

The new segment can be either inserted into the destination clip's timeline or can overwrite audio/video in that timeline (see dest-op below).

A homogenous vclip structure is enforced. Mixing clip formats (DV, DVCPRO, MPEG2, or DIF, for instance) is not permitted.

Streaming source clips (primarily MPEG) integrated into a segmented vclip via CUPS are ineligible for direct play out or record operations (see CBLD). Fixed frame formats such as DV or DVCPRO are eligible for segmented vclip playout or record operations.

The specified frames in the source clip can be removed, cleared, or left unchanged. In addition, if the source clip is itself segmented, the new segment in the destination clip can either reference the source clip itself, or the appropriate segments in the source clip. In this later case, if the source clip is changed in the future, it will not affect the audio/video in the destination clip (see src-op below).

clip identifies the destination clip name, must possess a segmented format, and be open within the context of the current MVCP session. src-op specifies an operation performed against the source clip's specified frames.

The possible operations are:

FCP - Copy the appropriate segments from the source clip to the destination clip. Both the source and destination must be segmented vclips (see CMK). If the source vclip changes, the destination vclip will not be altered. However, if the underlying source content clip changes, the destination vclip will change, as the copied segments directly reference the source content clip.

FLN - Link the entire source clip into the destination clip as a single segment. Unlike the FCP operation, if the source clip changes in the future, the destination clip is immediately affected. Also unlike FCP, the source clip is not required to have a segmented format. This operation is the only choice for an unsegmented source clip.

FRM - Remove the appropriate frames from the source clip after they have been copied to the destination clip. The source clip must have a segmented format. This operation implies copy semantics as opposed to link semantics as described in the FLN and FCP operations. Refer to CFRM for a full description of frame removal.

FCL - Clear the appropriate frames from the source clip after they have been copied to the destination clip. The source clip must have a segmented format. This choice implies copy semantics as opposed to link semantics as described in the FLN and FCP operations. Refer to CFCL for a full description of frame clearing. The PCI-VIDAUD-MSB-B card does not support frame clearing.

dest-op specifies whether the new segment should be inserted (FINS) into the destination clip or should overwrite (FOVR) any part of existing segments.

trk-mask must be specified as ``*''.

in identifies the new segment in-point for the destination clip's timeline.

out identifies the new segment out-point in the destination clip's timeline.

src-clip identifies the source clip name. It need not be open. The source clip audio and video format parameters must match the destination clip, unless the destination clip possesses a fetal as described in CMK.

src-trk-mask must be specified as ``*''.

src-in identifies the segment in-point for the source clip timeline. If specified as ``*'', the source clip in-point value is used.

src-out identifies the segment out-point for the source clip timeline. If specified as ``*'', the source clip out-point value is used.

If successful, the response code is 200.


GLOBAL COMMANDS: CLIP MANAGEMENT

CADD clip [ format ]
The CADD (Add Clip) command introduces new clip content to MSB inserted through an external mechanism to the clip cache. clip identifies the new clip name. format specifies the clip format. If format is not specified, the clip clip.format attribute is used if it exists, or MSB attempts to automatically discern clip format. See attr(1) for information on file attribute extensions.

The clip content must exist within a specific location addressable by the clip cache prior to issuing CADD (typcally /usr/vtr/clips). If the clip format requires an ancillary index (as is common for MPEG formats), the index file must also exist in the appropriate index directory (typically /usr/vtr/index) before issuing CADD. Refer to vtrftp(1) for a description of the mechanism preferred for external clip transfer to MSB.

CADD need not be issued to resolve a clip for use by other MSB commands (such as causing it to load). MSB automatically attempts to resolve and reference a clip when an MVCP session invokes a command that explicitly names it.

CADD adds a clip to MSB's clip cache such that it appears when CLS is invoked. CADD also generates the appropriate clip-add event messages for MVCP sessions that monitor the clip cache.

If a clip currently exists within the clip cache, CADD causes MSB to update the size and attributes if the content has changed in response to an external process.

CCHP clip {{+|-}protection-type ...}
The CCHP (Change Clip Protection) command adds to and/or removes protection from attributes of clip specified by the protection-type arguments.

The protection attribute values include ATTR (Attribute Protect), MV (Rename Protect), REC (Record Protect), and RM (Delete Protect).

When set, ATTR value precludes clip metadata modifications, such as edit in/out point modification or frame removal (CFRM) or clear operations (CFCL). When set, MV precludes the clip from rename via CMV. When set, REC attribute precludes the clip from record or append. When set, RM precludes clip deletion via CRM.

For example, the command ``CCHP NA1001 +RM -ATTR'' sets the protection on NA1001 such that the clip cannot be deleted but can have its attributes (such as its edit points) changed.

If successful, the response code is 200.

CCP clip new-clip
The CCP (Copy Clip) command creates by copying clip to new clip new-clip. After the copy is created, no association exists between new-clip and clip.

If successful, the response code is 200.

For example:

  CCP palmpeg0 newclip
  200 OK

NOTE: CCP does not force realign a clip as the copy proceeds. Certain clip formats, such as MSB vframe, require destination filesystems to match major and minor alignment parameters of the source.

CCST
The CCST (Clip Cache Status) command returns the current status of the MSB Clip Cache. The response code is 202 and a single response line is returned in the following format:

num-clips bytes-used bytes-avail bytes-avail-contiguous

where:

num-clips states the current count of cache-resident clips.

bytes-used states the total bytes used by the clip-cache.

bytes-avail states the available free bytes within the storage systems to contain the clip cache.

bytes-avail-contiguous states the largest available contiguous amount of free bytes in the storage system.

For example:

  CCST
  202 OK
  1 53673984 436716306432 436662632448

CEDP clip mark-in mark-out
The CEDP (Set Clip Edit Points) command sets the edit points clip. The mark-in and mark-out arguments are specified in HH:MM:SS:FF format. The new edit points will not be seen by any unit until the clip is loaded (or reloaded). If the clip is already loaded into a unit, the original edit points will apply.

Specifying '*' for mark-in or mark-out removes the respective edit point.

A response code 200 returns if the command succeeds.

CGP clip
The CGP (Get Clip Protection) command returns the current protection attribute values for clip.

If successful, the response code 202 returns, and a single response line is returned containing the protection attribute values currently enabled for the clip. The allowed attribute protection values are ATTR (Attribute Protect), MV (Rename Protect), REC (Record Protect), and RM (Delete Protect).

When set, ATTR value precludes clip metadata modifications, such as edit in/out point modification or frame removal (CFRM) or clear operations (CFCL). When set, MV precludes the clip from rename via CMV. When set, REC attribute precludes the clip from record or append. When set, RM precludes clip deletion via CRM.

CIMG clip timecode interleave filename [format]
The CIMG (Create Clip Image) command extracts the image data associated with the frame specified by timecode of clip and writes the image to filename. This command is only applicable to fixed format clip content (DV, DVCPRO, or DIF, for instance).

interleave specifies how to construct the image from the two fields of the frame: F1 (odd field only), F2 (even field only), F1F2 (both fields interleave), F1F1 (odd field line-doubled), F2F2 (even field line-doubled).

format specifies the image format to use. Possible values are ``rice'', ``rgb'', ``yuv'', ``jpeg'', and ``tiff''. If format is not specified, the format is inferred from the filename extension (``.rice'', ``.rgb'', ``.yuv'', ``.jpg'', ``.tiff'').

A response code 200 returns if the command succeeds.

CINF clip
The CINF (Clip Info) command returns the metadata attributes of clip. If the clip is currently clip-cache resident, the response code is 202 and a single response line is returned in the following format:

clip format size resident-size start end in out rate time-of-last-modification clip-type

clip identifies the clip name.

format identifies the clip format.

size identifies clip content size in bytes.

resident-size identifies the cache-resident clip content size in bytes

start states the clip timecode of the first time.

end states the clip timecode of the last frame.

in identifies the clip current mark-in timecode.

out identifies the clip current mark-out timecode.

rate specifies the frame rate (in frames/sec) corresponding to the unit location. 525-line drop-frame timing is specified in its approximate form, 29.97 (525 non-drop-frame is 30). Translation between drop-frame and non-drop-frame is not performed regardless of FRAT setting.

time-of-last-modification states clip modification time and disk update, and possesses the format yyyymmddThhmmss.microsecsZ. For example, a value of 19990316T020942.836820Z means the clip was last modified 16th March, 1999 at two hours, nine minutes, forty two seconds and 836820 microseconds past midnight GMT.

clip-type specifies either CL or LN. The value LN implies that clip creation was performed as a link to another clip. The value CL implies the clip is unassociated.

CLN clip new-clip
The CLN (Link Clip) command links new-clip with the clip content of clip. The clip attributes (such as edit points) of the new clip may be set independently of the original clip. This command applies to all clip formats, fixed (DV, DVCPRO, DIF) and variable (MPEG2).

If the original clip is deleted, the new clip retains the the original clip content until the new clip is also deleted.

This command is useful for creating clips which refer to segments of other clips.

If successful, the response code is 200.

CLS pattern
The CLS (List Clips) command returns a list of all clips in the MSB clip cache. The response code is 201 and one response line is returned for each cache-resident clip. An optional argument pattern can be supplied to limit the returned list to only clips matching the pattern. See sh(1) under ``Filename Generation'' for the pattern syntax restrictions. The response line format is:

clip format size resident-size start end in out rate time-of-last-modification clip-type

clip identifies the clip name.

format identifies clip format.

size identifies clip content size in bytes.

resident-size identifies the cache-resident clip content size in bytes

start states the clip timecode of the first time.

end states the clip timecode of the last frame.

in identifies the clip current mark-in timecode.

out identifies the clip current mark-out timecode.

rate specifies the frame rate (in frames/sec) corresponding to the unit location. 525-line drop-frame timing is specified in its approximate form, 29.97 (525 non-drop-frame is 30). Translation between drop-frame and non-drop-frame is not performed regardless of FRAT setting.

time-of-last-modification states clip modification time and disk update, and possesses the format yyyymmddThhmmss.microsecsZ. For example, a value of 19990316T020942.836820Z means the clip was last modified 16th March, 1999 at two hours, nine minutes, forty two seconds and 836820 microseconds past midnight GMT.

clip-type specifies either CL or LN. The value LN implies that clip creation was performed as a link to another clip. The value CL implies the clip is unassociated.

CLSA
The CLSA (List Added Clips) command lists clips added to the clip cache since the last time the CLSA executed (or since the CMON command which created this clip monitor was executed).

The CMON (Clip Monitor) command must be issued to initiate clip cache monitoring before CLSA is entered by the current MVCP session.

If successful, the response code is 201 and one response line is returned for each newly added clip which contains the clip's name. A blank line terminates the list of clips.

CLSL clip
The CLSL (List Clips With Same Base) command lists all clips (including itself) in the clip cache with the same base clip. It can thus be used to find all links to a given clip or the base clip for a given link.

If the command is successful, the response code is 201 and for each clip found, one response line is returned in the following format:

clip-name clip-type

clip-type contains LN (a clip link) or CL (an unassocated clip).

CLSR
The CLSR (List Removed Clips) command lists clips removed from the clip cache since the last time the CLSR command was issued (or since the CMON command which created this clip monitor was executed).

The CMON (Clip Monitor) command must be issued to initiate monitoring of the clip cache by the current MVCP session.

If successful, the response code is 201 and one response line is returned for each removed clip which contains the clip's name. A blank line terminates the list of clips.

CMIN
The CMIN (Clip Monitor Info) command returns the number of clips added to and/or removed from the clip cache as returned by the CLSA and CLSR commands respectively.

The response code is 200, and a single response line is returned in the following format:

num-clips-added num-clips-removed

where:

num-clips-added identifies the number of added clips.

num-clips-removed identifies the number of removed clips.

CMON
The CMON (Clip Monitor) command initiates clip cache monitoring. The CLSA and CLSR commands are used to retrieve, respectively, the clips that have been added or removed from the clip cache.

If the CMON command is issued for a second or subsequent time, the current list of added and removed clips is discarded and monitoring is initialized again.

The response code is 200.

CMV clip new-clip
The CMV (Move Clip) command renames clip to new-clip.

If successful, the response code is 200.

For example:

  CMV newclip oldclip
  200 OK

NOTE: CMV cannot be used to move clips between file systems; use CCP instead.

CRM clip [ flag ]
The CRM (Delete Clip) command deletes clip. If the clip is currently loaded by a unit, actual deletion is deferred until the clip unloads.

The following flags may be specified:

PRGE - Purge the clip from the clip cache (in memory), but do not actually delete it from the disk.

IMM - If the clip is currently loaded by a unit, fail instead of doing a deferred delete.

If the command is successful, the response code is 200.

CRMA
The CRMA (Delete All Clips) command deletes all clips currently residing in the clip cache.

If the command is successful, the response code is 200.

For example:

  CRMA 
  200 OK
  CLS
  201 OK

CINT clip
The CINT (Interrupt Clip Operation) command interrupts the clip operation that is updating or creating clip.

Since clip operations are synchronous, a separate MVCP session must issue the CINT command.

If there is no clip operation associated with clip or the operation completed, the response code is 505, ``Unable to interrupt clip operation''.

If the command succeeds, the response code is 200.


GLOBAL COMMANDS: SYSTEM CONTROLS

SGET subsystem-name control-name-pattern ...
The SGET (System Get Control) command retrieves system control values for subsystem-pattern. The possible values for control-name-pattern are subsystem-dependent and are described in msb-controls(5). If the subsystem or control patterns contains wildcards, the values of all controls that match the specified patterns will be returned. The allowable subsystem-pattern values are main, clipmirror, and fs.

If successful, response code is 201, and one response line is returned for each matching control in the following format:

subsystem-name control-name ``control-value''

For example:

  SGET clipmirror *
  201 OK
  clipmirror vtr.clipmirror.local_server.hostname ""
  clipmirror vtr.clipmirror.max_threads "20"
  clipmirror vtr.clipmirror.primary_server.hostname ""
  clipmirror vtr.clipmirror.reconnect_interval "30"

SSET subsystem-name control1-name control1-value ...
The SSET (System Set Control) command sets system controls for the subsystem specified by subsystem-name. For each control, a name and a value must be provided. At least one control name/value pair must be specified. If the control value contains any spaces or tabs, the value must be enclosed in double quotes. The allowable subsystem-name values are main and clipmirror.

The possible values for control-name and control-value are subsystem-dependent and in msb-controls(5).

For example:

  SSET clipmirror vtr.clipmirror.max_threads 24
  200 OK
  SGET clipmirror *thread*
  201 OK
  clipmirror vtr.clipmirror.max_threads "24"


GLOBAL COMMANDS: STATISTICS

STLS [ component-pattern [ statistic-pattern ]]
The STLS (List Statistics) command lists the component name, statistic name, and current value of each statistical value matching the specified patterns.

If the command is successful, the response code is 201, and a response line is returned for each matching statistical value in the following format:

component-name statistic-name value ...

where:

component name identifies the component instance name generating the statistic.

statistic name identifies the statistical value name.

value identifies the integer or floating-point statistical value. The value of certain types of statistics (e.g., histogram) may include more than one number.

STST [component-pattern [statistic-pattern]]
The STST (Statistics Statistics) command calculates various statistics over all of the statistical values matching the specified patterns.

If the command is successful, the response code is 202, and a single response line is returned in the following format:

values samples min max sum mean stddev

where:

values identifies the number of statistical values matching the pattern.

samples identifies the total number of samples collected.

min identifies the minimum value.

max identifies the maximum value.

sum identifies the sum of the values.

mean identifies the mean of the values.

stddev identifies the standard deviation of the values.

STZ [component-pattern [statistic-pattern]]
The STZ (Statistics Reset) command resets the values of all the statistics matching the specified patterns.


GLOBAL COMMANDS: OTHER

BYE
The BYE command terminates the current MVCP session and disconnects from MSB.

ERR
The ERR command returns the code and description for the last global error that occurred for this MVCP session. Errors that occur on units are retrieved using the UERR command. This command returns errors for all Clip Management commands and other commands which do not pertain to a specific unit.

The response code is 202, and a single response line is returned in the following format:

code ``description''

where:

code identifies the error code.

description identifies the error description. If no error occured from the last command a ``*'' is used for the message text.

For example:

  ERR
  202 OK
  0 "*"

FRAT frame-rate
The FRAT (Frame Rate) command sets the frame rate used in translating timecodes for command timing and for unit operations. The frame-rate is specified as frames per second. Supported values are 25, 29.97, and 30.

The frame rate is set initially according to the value of the system control vtr.main.timing_standard.

The FRAT command applies only to the current MVCP session.

GTOD
The GTOD (Get Time-of-Day) command returns the current MSB system time. The response code is 202, and a single response line is returned with three forms of the current time (time code, ISO 8601, and Unadjusted System Time):

hh:mm:ss:ff yyyymmddThhmmss.ssssssZ UST

SORD order-type
The SORD (Set Sort Order) command sets the type of ordering used when lists are returned. The possible values of order-type are NAME, which sorts lists by clip name, and TIME, which sorts lists by creation time.

STOD time
The STOD (Set Time-of_Day) command sets the MSB system time as specified by time which is specified either as a time code (hh:mm:ss:ff) or in the ISO 8601-compatible format (yyyymmddThhmmss.ssssssZ).


UNIT COMMANDS

The unit commands all have as their first argument the name of unit to which the command is to be applied.

CUE [ unit-name [ in [ out [ direction [ passes [tc-track ]]]]]
The CUE (Cue For Play) command cues for playback the clip currently loaded by unit-name. If in is specified, the clip is cued at the specified frame. If in is missing or specified as '*', the mark-in point stored with the clip is used, or if mark-in is not set, the first recorded frame of the clip is used.

If out is specified, the clip is cued with the specified out point, meaning playback will terminate at the specified frame. If out is missing or specified as '*', the mark-out point stored with the clip is used, or if mark-out is not set, no out point is used.

If out is specified, in must be specified.

If either in or out is specified and not '*', the other may be specified as a duration by adding a '+' prefix character. For example, ``1:00:01:00 1:00:06:00'', ``1:00:01:00 +5:00'', and ``+5:00 1:00:06:00'' imply an identical edit range.

The optional direction argument specifies the playback direction: FWD is forward, BWD is backward, F/B is forward followed by backward, B/F is backward followed by forward. The default direction is forward (FWD).

The optional passes argument specifies how many passes through the clip are made. The default is 1 pass. Specify passes as 0 to repeat indefinitely (use the STOP command to terminate playout).

If passes is specified as -1, the unit is cued in free-range mode (for media devices that support free-range cueing). In free-range mode, the in point is used only as the initial location but does not define the lower limit of playback. The lower limit is defined by the vtr.media.clip.limit.start control, if set, or the start of the clip if the clip limit control is not set.

In free-range mode, the upper limit of playback is defined by the specified out-point. If the out-point is not set, the upper limit is defined by the vtr.media.clip.limit.end control, if set, or the end of the clip if the clip limit control is not set.

The optional tc-track argument specifies the time code track from which the edit points in and out are selected: CLIP is the control track, VITC is the vitc track, LTC is the ltc track. If not specified, the default time code track will be used.

If the command succeeds, the response code is 200.

CUER [ unit-name [ in [ out ]]]
The CUER (Cue For Record) command cues for recording the clip currently loaded by unit-name. If in is specified, the clip is cued at the specified frame. If in is missing or specified as '*', the unit cues to the mark-in point stored with the clip or if mark-in is not set.

If out is specified, the clip is cued with that out-point, meaning recording will terminate at the specified frame. If out is missing or specified as '*', recording will continue until the unit is stopped. If out is specified, in must also be specified.

If either in or out is specified and not '*', the other may be specified as a duration by adding a '+' prefix character. For example ``1:00:01:00 1:00:06:00'', ``1:00:01:00 +5:00'', and ``+5:00 1:00:06:00'' imply an identical edit range.

If the command succeeds, the response code is 200.

EDIT [ unit-name [ in [ out ]]]
The EDIT (Edit) command performs an auto-edit for the edit range in out. The unit prerolls for the duration specified by the setting of the vtr.edit.preroll control and postrolls for the duration specified by the vtr.edit.postroll control. This command is applicable to tape-based decks.

If the command succeeds, the response code is 200.

FCLR unit-name in out
The FCLR (Clear Frames) command clears (erases) the frames of the clip loaded into unit-name from the frame specified by in (inclusive) to the frame specified by out (exclusive). The video and audio associated with the cleared frames is removed, but the frames themselves remain. This contrasts with FRM which removes the frames, closing the intermediate clip gap.

The clip must be loaded for input (IN) or input/output (BOTH).

If the command succeeds, the response code is 200.

FF [ unit-name ]
The FF (Fast Forward) command fast forwards the unit specified by unit-name. The fast forward speed is device-dependent.

If the command succeeds, the response code is 200.

FINS unit-name source-in source-out dest-in
The FINS (Insert Frames) command moves the frames in the range source-in to source-out of the clip loaded into unit-name, inserting them at the point specified by the timecode dest-in. The frames are removed from the original location, and the duration of the clip remains unchanged.

The clip must be loaded for input (IN) or input/output (BOTH).

If the command succeeds, the response code is 200.

FNEW unit-name in out
The FNEW (Insert New Frames) command inserts blank frames into the clip loaded into unit-name between the frame specified by in (inclusive) and out (exclusive). FNEW opens a clip gap, and the clip's duration increases.

The clip must be loaded for input (IN) or input/output (BOTH).

If the command succeeds, the response code is 200.

FOVR unit-name source-in source-out dest-in
The FOVR (Overwrite Frames) command moves the frames in the range source-in to source-out of the clip loaded into unit-name, overwriting the frames starting at the timecode specified by dest-in. The frames are removed from the original location. The duration of the clip will decrease, though if the source and target overlap, the duration will decrease by a fewer number of frames than are represented by the source range.

The clip must be loaded for input (IN) or input/output (BOTH).

If the command succeeds, the response code is 200.

FRM unit-name in out
The FRM (Remove Frames) command removes the frames of the clip loaded into unit-name from the frame specified by in (inclusive) to the frame specified by out (exclusive). This command removes the intermediate frames altogether, joining frames after the removed frames in the intermediate timeline. This contrasts with FCLR which erases the video and audio but does not remove the intermediate frames.

The clip must be loaded for input (IN) or input/output (BOTH).

If the command succeeds, the response code is 200.

GET unit-name dev-type control-name-pattern ...
The GET (Get Control) command retrieves the device control values for unit-name. The dev-type specifies whether the controls are queried in the media (MED) or storage (STOR) device assigned to the unit.

The possible values for control-name-pattern are device-dependent are described elsewhere. If the pattern contains wildcards, the values of all controls that match the specified pattern will be returned.

If successful, response code is 201, and one response line is returned for each matching control in the following format:

control-name ``control-value''

For example:

  UADD MFCODEC_6 * EXCL *
  202 OK
  U1
  GET U1 MED *gop*
  201 OK
  vtr.media.video.input.compression.gop_on_scene_change "true"
  vtr.media.video.input.compression.gop_size "1"
  vtr.media.video.input.compression.gop_structure "I"

GOTO unit-name timecode
The GOTO (Goto) command jumps the unit transport unit-name to the location specified by timecode. The unit transport continues executing the currently active function when GOTO initiates and completes.

JOG unit-name count
The JOG command advances the queued clip content on unit-name ahead or behind count frames, simulating VTR jog transport. A negative count moves backwards, and a positive count moves forward.

LIMS unit-name in [out [direction [passes]]]
The LIMS (Set Edit Limits) command modifies the unit-name edit limits imposed on the current playback or record function. Edit parameter modification is device-dependent. In general, only the out-point may be changed to stop playback or recording at a specific point even if the unit was cued without an out-point.

LOAD unit-name clip [load-mode [load-options]]
The LOAD (Load Clip) command loads clip into unit-name. The load-mode indicates whether the clip is being loaded for input (IN), output (OUT), or both input and output (BOTH). The default is output (OUT).

The load-options indicate special handling for the clip when loading it. Zero or more options may be specified. Possible values are:

CRTE Create the clip if it does not exist.

NOEX Fail if the clip exists.

EPHM Create an ephemeral clip (automatically deleted when the clip is unloaded).

If successful, the response code is 202 and a single response line is returned in the following format:

format size resident-size start end in out rate

clip identifies the clip name.

format identifies the clip format (mpeg2, dvcpro, vframe, etc).

size identifies clip content size in bytes.

resident-size identifies the cache-resident clip content size in bytes

start states the clip timecode of the first time.

end states the clip timecode of the last frame.

in identifies the clip current mark-in timecode.

out identifies the clip current mark-out timecode.

rate identifies the clip frame rate (in frames/sec). 525-line drop-frame timing is specified in its approximate form, 29.97 (525 non-drop-frame is 30). Drop-frame and non-drop-frame translation is not performed irrespective of FRAT setting. 625-line is represented as 25 frames per second.

PAUS [ unit-name ]
The PAUS (Pause) command pauses unit-name. The unit must be in a playback or record state. The RSUM, PLAY, STEP, SHTL, FF, or REW commands are used to resume playback. The RSUM or REC commands are used to resume recording.

If the unit is playing, the video output will be a still frame at the paused clip location.

If the command succeeds, the response code is 200.

PLAY [ unit-name [ speed ]]
The PLAY command begins (or resumes) playback on unit-name. If speed is not specified, normal playback speed, 1000, is used. Some media ports may support other playback speeds.

Some media ports must be explicitly cued before starting playback. For those devices, PLAY cannot be used to resume playback after a STOP command is issued. The unit must be re-cued.

If the command succeeds, the response code is 200.

REC unit-name
The REC (Record) command begins recording on the unit specified by unit-name. REC can also be used to resume normal recording after a PAUS command.

Some media ports must be explicitly cued before record commences. For those devices, REC cannot resume recording after a STOP command is issued; the unit must be re-cued.

If the command succeeds, the response code is 200.

REVU unit-name in out
The REVU (Review) command performs an edit review on unit-name for the edit range in to out. The unit prerolls for the duration specified by the setting of the vtr.edit.preroll control and postrolls for the duration specified by the vtr.edit.postroll control.

If the command succeeds, the response code is 200.

REW unit-name
The REW (Rewind) command rewinds unit-name. The rewind speed is device-dependent and can be set with a control.

If the command succeeds, the response code is 200.

RHRS unit-name in out
The RHRS (Rehearse) command performs an auto-edit on unit-name for the edit range in out, but during the actual edit range switches the output to E-to-E mode rather than recording. The unit prerolls for the duration specified by the setting of the vtr.edit.preroll control and postrolls for the duration specified by the vtr.edit.postroll control.

If the command succeeds, the response code is 200.

RSUM [ unit-name ]
The RSUM (Resume) command resumes the playback or recording function that was paused by a PAUS command on unit-name.

If the command succeeds, the response code is 200.

SET unit-name dev-type control1-name control1-value ...
The SET (Set Control) command sets device controls for unit-name. The dev-type specifies whether the controls are to be set in the media (MED) or storage (STOR) device assigned to the unit.

For each control, a name and a value must be provided. At least one control name/value pair must be specified. If the control value contains any spaces or tabs, the value must be enclosed in double quotes.

The possible values for control-name and control-value are device-dependent and are described elsewhere.

If the command succeeds, the response code is 200.

For example:

  UADD MFCODEC_6 * EXCL *
  202 OK
  U1
  GET U1 MED *gop*
  201 OK
  vtr.media.video.input.compression.gop_on_scene_change "true"
  vtr.media.video.input.compression.gop_size "1"
  vtr.media.video.input.compression.gop_structure "I"

  SET U1 MED vtr.media.video.input.compression.gop_on_scene_change 
        false
  200 OK

  GET U1 MED vtr.media.video.input.compression.gop_on_scene_change
  201 OK
  vtr.media.video.input.compression.gop_on_scene_change "false"

SHTL unit-name speed
The SHTL (Shuttle) command shuttles unit-name at the speed speed, simulating VTR shuttle transport. A speed of 1000 is normal 1x speed. The speed scale is linear, so a speed of 100 is 1/10th normal speed and a speed of 10000 is 10x speed.

Positive speeds play forward. Negative speeds play backward. The actual shuttle speeds available are device-dependent.

If the command succeeds, the response code is 200.

STEP [ unit-name [ frames ]]
The STEP (Step) command steps unit-name by a frames count frames (1 frame, if not specified). Positive numbers step forward. Negative numbers step backward. If the distance specified by frames takes the unit past the current edit limits, the unit will stop (or pause, if the unit is configured to pause instead).

Some media ports require that the unit already be in a playback state when STEP is issued.

SSPD unit-name speed
The SSPD (Set Speed) command sets the unit-name speed to speed. SSPD is used to change speeds without changing the current unit transport function (either PLAY or SHTL).

If the command succeeds, the response code is 200.

STON [ unit-name ]
The STON (Standby On) command halts playback but does not stop the unit-name. This releases the output port for use by another unit, but allows the unit to resume playback quickly when a new playback command arrives.

STON is supported by only some media ports.

If the command succeeds, the response code is 200.

STOP [ unit-name ]
The STOP (Stop) command stops unit-name playout or record.

For some media ports, playback or recording cannot be resumed until the unit is re-cued with a CUE or CUER command, respectively.

If the command succeeds, the response code is 200.

UCLS [ unit-name ]
The UCLS (Unit Close) command closes unit-name. This MVCP session's access will be terminated, and if no other MVCP sessions have the unit open, the unit will be deleted.

If the command is successful, response code 200 is returned.

For example:

  UCLS U1
  200 OK

UERR [ unit-name ]
The UERR (Unit Error) command returns the code and description for the last error that occurred on the specified unit.

If the command is successful, the response code 202 is returned followed by a data line:

code ``description''

where:

code identifies the last error code.

description identifies the error code text.

If the command succeeds, the response code is 200.

For example:

  UCLS U1
  200 OK
  UOPN U1
  510 Unable to open unit
  UERR
  403 Unit not open

UFLS [ unit-name ]
The UFLS (Flush Unit) command flushes the command queue for the unit-name.

If the command succeeds, the response code is 200.

UINF [ unit-name ]
The UINF (Get Unit Info) command returns the owner and port information for the unit specified by unit-name. The unit must be opened (or created) by the current MVCP session.

The response code is 202 and single response line is returned in the following format:

owner port-name port-mode port-physical-name

where:

owner identifies the MVCP session name responsible for unit creation.

port-name identifies the media port name controlled by the unit.

port-mode identifies the input/output mode supported by the unit. The possible values are IN, OUT, and BOTH.

port-physical-name identifies the media port physical name controlled by the unit.

UINT [ unit-name ]
The UINT (Unit Interrupt) command interrupts the command currently being processed by unit-name.

If the command succeeds, the response code is 200.

ULOC [ unit-name ]
The ULOC (Unit Location) command returns the current transport location for unit-name.

The response code is 202 and a single response line is returned in the following format:

clip-loc vitc ltc UTC-time UST-time rate

where:

clip-loc states the clip location, which corresponds to an approximate CTL (control track) timecode.

vitc states the frame VITC (vertical interval timecode).

ltc states the frame LTC (longitudinal timecode).

UTC-time states the unit UTC time at the specified location. This time can be used to account for application or network latency in time reporting. This time is reported in the ISO 8601-compatible format: yyyymmddThhmmss.ssssssZ.

UST-time states the UST (unadjusted system time) time at the specified location. This time can be used to account for application or network latency in time reporting.

rate states the timecode rate (in frames/sec) corresponding to the specified clip location. 525-line drop-frame timing is specified in its approximate form, 29.97 (525 non-drop-frame is 30). 625-line is represented as 25 frames per second.

UNLD [ unit-name ]
The UNLD (Unload Clip) command unloads the clip currently loaded by unit-name.

If successful, the response code is 200.

USTA [ unit-name ]
The USTA (Unit Status) command returns the status of the unit specified by unit-name. The unit my be opened (or created) by the current MVCP session.

If successful, the response code is 202, and a single response line is returned in the following format:

clip status function location speed rate command-id

clip identifies the loaded clip name (``*'' if no clip is loaded).

status states the unit's current function status (BUSY - OP IN-PROGRESS, RUN - RUNNING, DONE - COMPLETE, ERR - ERROR).

function identifies the current function: IDLE, LOAD, UNLD (Unload), CUE, CUER (Cue for record), PLAY, STEP, SHTL (Shuttle), REC (Record), PAUS (Pause), STON (StandbyOn), STOP, FF (Fast Forward), REW (Rewind).

location identifies the current clip location in hours:minutes:seconds:frames format. In drop-frame mode, a period (.) replaces the last colon (:).

speed specifies the current playback speed (1000 = normal 1x speed).

rate specifies the frame rate (in frames/sec) corresponding to the unit location. 525-line drop-frame timing is specified in its approximate form, 29.97 (525 non-drop-frame is 30). command-id identifies the unit's MVCP command in-process. 625-line is represented as 25 frames per second.

USYN [ unit-name ]
The USYN (Set Unit Synchronization) command sets the default command synchronization mode for the unit specified by unit-name. The mode is set as specified by the sync-mode qualifiers which precede the command name. See UNIT COMMAND SYNCHRONIZATION.

Once the USYN command has been used to set the default synchronization mode, all unit commands which do not specify a sync mode will use this default.

UUWT unit-name wait-unit-name sync-mode [ wait-id ]
The UUWT (Unit-Unit Wait) command provides a mechanism for synchronizing command execution between two units. unit-name waits until wait-unit-name reaches execution status specified by sync-mode for wait-id.

For the possible values of sync-mode, see SYNCHRONIZATION below. Both units must be opened by the current MVCP session.

If wait-id is not specified, the unit waits for the command at the end of the target unit's command queue when the UUWT starts execution in the unit (not when the UUWT is issued to the unit).

The target command id can be obtained by using the /CID qualifier on the target unit command.

UWAT [ unit-name [ sync-mode ]]
The UWAT (Unit Wait) command waits for the last command issued to unit-name according to the synchronization mode sync-mode or the default sync mode if sync-mode argument is not provided.

For the possible values of sync-mode, see SYNCHRONIZATION below.


UNIT COMMAND MODES

The MSB units execute asynchronously with the MVCP session controlling them. How the MVCP control processor interacts with the units under session control and issuing MVCP commands is determined by command synchronization processing.

By default, when a command is issued to a unit, the unit's command queue is immediately flushed of any commands which are waiting to be executed by the unit, and the command preempts the previous command that was issued to the unit, even if that command has not completed execution.

Also by default, the MVCP session returns a response to the client as soon as the command queues for the unit. The generated reply in response to a command means that the command was successfully queued, not that the command completed successfully or started execution.


SYNCHRONIZATION

The synchronization mode determines when the MVCP session replies to the MVCP client. The available synchronization modes are: ASYN (async), SYNI (sync-init), SYNR (sync-run), and SYNC (sync-complete). These modes may be specified with USYN, or can prefix an MVCP command sequence.

The async (ASYN) mode implies the MVCP session receives a reply when the command queues, but immediate command initiation is not guaranteed, and may be deferred.

Sync-init (SYNI) mode delays response until the unit reaches command initialization state. This does not mean that the unit has initiated command execution, but that the command may block on a shared resource (such as the media port), and will wait for the resource to become available before continuing.

Sync-run (SYNR) mode delays response until the unit reaches the command initiated state. This means that the unit contemporaneously processes the command. For instance, the running state for a PLAY command means that video playout is currently active.

Sync-complete (SYNC) mode delays response until the unit reaches a finished, terminal state. This means that the unit ceases further processing. If the command is CUE, the finished state is achieved when the unit fully cues the clip and is ready to playout. If the command is PLAY, the complete state is achieved reached when playback finishes.

If no error occurs in the unit before the desired sync state is reached, the response code is 200 (or 201, or 202, as appropriate). If an error occurs before the unit reaches the desired state, an error response code returns.

The default command synchronization mode for a unit may be changed using the USYN command. Or, the default may be overridden on a individual command basis by prepending a forward slash (/) and the sync mode to the unit command. For example, the command ``PLAY U5'' uses the default sync mode, while the command ``/SYNC PLAY U5'' specifies that the command response should not be sent until the PLAY command completes execution.


COMMAND SEQUENCING

Command sequencing specifies how consecutive commands are processed by a unit following successful parse and queue by the unit command buffer. There are two variables which determine how a command is issued and processed: preemption mode and queuing mode.


PREEMPTION

Preemption mode determines if a subsequent command preempts the previously issued one or if the unit suspends command buffer processing until the previous command in process reaches the execution state. Preemption is controlled by both the ``previous'' command and the ``next'' command.

The ``previous'' command may be issued with a qualifier that defers execution of the ``next'' command until the ``previous'' command reaches a specified status. The ``next'' command may be issued with a qualifier that defers its execution until the ``previous'' command has reached a certain status.

The preemption modes available for the ``previous'' command are NNO (no deferral), NINI (defer next until Init), NRUN (defer next until Running), NCMP (defer next until Complete).

The preemption modes available for the ``next'' command are PNO (no deferral), PINI (defer until previous Init), PRUN (defer until previous Running), PCMP (defer until previous Complete). POVR may also be used to override the defer-next preemption mode of the ``previous'' command.

NOTE: The IMM and SEQ qualifiers have been superceded by the new preemption qualifiers, but are still supported for compatibility. IMM corresponds to PNO and SEQ corresponds to PCMP.


QUEUING

The queuing mode determines whether a command is placed at the beginning of the unit command queue (making it the next command to be executed), placed at the end of the command queue (making it the last command), or whether the command queue is flushed before adding the new command. The available queuing modes are prepend (PRE), append (APP), and flush (FLSH).

The default command sequencing is flush/no-defer-next/no-defer-previous, meaning that when an MVCP command is issued, the unit command queue is flushed and the command preempts whatever command is currently being executed by the unit.

The default command sequencing mode for a unit may be changed using the USYN command. Or, the default may be overridden on a individual command basis by prepending a forward slash (/) and the sequencing mode to the unit command. For example, the command ``PLAY U5'' uses the default sequencing mode, while the command ``/APP PLAY U5'' specifies that the command should be appended to the unit's command queue.

The default preemption and queuing modes are overridden individually. For example, ``/APP /PCMP PLAY U5'' places the PLAY command at the end of the command queue and the command does not begin executing until the previous command has completed.

Three common sequencing combinations can be abbreviated:

/SEQA is equivalent to /APP /PCMP.

/IMMP is equivalent to /PRE /PNO.

/IMMF is equivalent to /FLSH /PNO.


COMMAND TRIGGERS

More precise control of command execution can be accomplished by specifying the time at which a given command should begin execution. This feature is supported only for certain commands such as PLAY, REC, and STOP.


TIME-OF_DAY TRIGGERING

To specify a command time, at the beginning of the command line, include an at-sign (@) followed by the desired time-of-day. Several formats for specifying time are understood:

The timecode form, HH:MM:SS:FF may be used to specify the time relative to midnight local time calculated using current frame rate (which is initially set according to the system control vtr.main.timing_standard and can be set with FRAT). For instance, 14:14:00:00 specifies that the command should start at exactly 2:14pm local time.

The ISO 8601 date/time form, yyyymmddThhmmss.ssssssZ, may be used to specify the command time.

Finally, the time-of-day form, SEC.USEC, may be used to specify the time using a more traditional UNIX timebase. SEC is the number of seconds since the standard Epoch, Jan 1, 1970. USEC is microseconds.

Example:

    LOAD U1 a/COMM OUT
    /SEQA CUE U1
    /SEQA @17:31:00:02 PLAY U1

NOTE: If the system is receiving house timecode (via Little Red), command timing will be based on the incoming time; otherwise, the system time will be used.


RESPONSE CODES

The MVCP processor responds to all commands with a single response header line. Certain commands additionally return a single response data line. Other commands return multiple response data lines terminated by a single blank line.

The format of the response header line is a three-digit response code followed by an informational string. Some examples:

    200 OK
    410 Invalid clip time
    500 Server error

The response codes are divided into the following categories.

    2XX Successful command execution
    4XX Command format or setup error
    5XX Command execution error

The 2XX success codes include:

    200 OK      (Success with no additional data)
    201 OK      (Success with N data lines followed by a blank line)
    202 OK      (Success with one data line)

Numeric codes for error return values may be overloaded with distinct error text messages. The 4XX format error codes include:

    401 Port name missing
    402 Unit name missing
    403 Port not found
    404 Access mode missing or invalid
    405 Clip name missing
    406 Command not supported
    407 Load mode missing or invalid
    408 <not used>
    409 <not used>
    410 <not used>
    411 Event function missing or invalid
    412 Clock time missing or invalid
    413 Numeric argument missing or invalid
    414 Invalid direction
    415 <not used>
    416 Insertion id missing or invalid
    417 Event insertion failed
    418 Invalid speed
    419 Invalid number of passes
    420 Must specify start time
    421 Invalid load flag(s)
    422 Invalid command sync
    423 Invalid protection
    424 Missing or invalid sort order
    425 Missing or invalid time
    426 Clip monitor not active
    427 Invalid parameter format
    428 Node type missing or invalid
    429 Invalid event type
    432 Too many units specified
    433 Invalid timestamp format
    434 Frame-rate missing
    435 Filename missing
    436 Still-frame mode invalid
    437 Cannot specify both in and out as relative
    439 Sync modifier not supported for this command
    440 Invalid frame-rate
    441 Invalid target command id
    442 Invalid count
    443 Invalid unload flag
    444 Channel name missing
    445 Channel opened on different port (<portname>)
    446 Channel not open
    447 Channel name missing
    448 Too many arguments
    449 Clip not open
    450 Clip name missing
    451 Clip already open
    452 Format name missing
    453 Source clip name missing
    454 Invalid track mask
    455 Invalid clip source update mode
    456 Invalid clip destination update mode
    457 User name missing
    458 Password missing
    459 Already logged in as <username>
    460 Must provide USERname first
    461 Must login with USERname and PASSword
    462 Subsystem name missing
    463 Invalid time channel

The 5XX execution error codes include:

    500 General error (message varies)
    510 General error (message varies)
    511 General error (message varies)
    530 Login incorrect