VCR
Services
Windows
provides VCR services through a device driver that is based on the MCI command
set for VCRs. This section describes the MCI Video System Control Architecture
(VISCA) driver and explains how to use it to control a VCR.
The vcr
device type controls VCRs. For a list of the MCI commands recognized by VCR
devices, see VCR Command Set
The MCI VISCA Driver
The MCI VISCA
driver controls Sony VISCA-compatible VCRs, such as the CVD-1000 VDeck. The
VISCA driver controls the tape transport, channel tuners, and VCR input and
output channels.
Searching and Positioning with a VCR
The VISCA
driver uses two methods to track videotape movement within the VCR tape
transport: timecode information and tape counters. Timecode
information is timing information that has been recorded on the videotape. Most
VCRs allow timecodes to be recorded without destroying audio and video tracks.
Tape counters estimate the amount of videotape that travels past the videotape
head to obtain a position.
Both timecode
information and tape counters increase as the videotape moves from beginning to
end. Because of its accuracy, using timecode information to position a
videotape is almost always preferable to using tape counters.
The MCI
command flags for specifying positioning information are expressed as time
dependencies: time format , duration , from , to , and seek . (Also, the status
The VISCA
driver uses the set
An
application can set the time mode to detect if it doesn t matter that there
might be two sources of position information. When in detect mode, the VISCA
driver uses timecode information for positioning when any of the following
conditions occur:
The timecode information is
present when the driver is opened.
You change a videotape with the
set door open command and timecode information is present on the
videotape.
The set time mode command is
reissued.
If timecode
information cannot be found, the driver uses the tape counters.
To determine
the current positioning method, issue the status
The status
counter command retrieves the current tape counter value, regardless of
the current positioning method; however, you can use this counter reading only
with the set
The VISCA
driver can retrieve the native timecode format recorded on a videotape by using
the status timecode type and status frame rate commands
together. For example, if timecode type is smpte and frame rate is 25, the
native timecode format recorded on the videotape is SMPTE 25.
The VISCA
driver can also retrieve the counter resolution by using the status counter
resolution command, which returns seconds or frames . The counter format
might still be set to SMPTE 30, but the return value returns only a frame of 0.
If the current time type is counter, then this resolution applies also to the
value returned by status position .
Capturing Frames
Frame-capturing
commands provide still images for a frame-capture device. A
frame-capture device is a separate piece of hardware capable of reading and
storing the video image. The VISCA driver supports the freezeL63G89 (MCI_UNFREEZE ) command can be used to
restart the tape transport following a freeze command.
The freeze
command provides a high-quality, stabilized, time-base - corrected image for a frame-capture device. This command
exists because a device might not always deliver its maximum-quality output
image during playback or while paused; such a video image is not suitable for
capturing.
The unfreeze
command unlocks the tape transport and resumes the transport mode in effect
before the freeze command.
When your
application needs to record a video image on the VCR, use the freeze input
command or the cue
Selecting Inputs
The VISCA
driver supports three input types: video, audio, and timecode. The video inputs
include two standard channels (lines 1 and 2), an SVideo channel, an auxiliary
channel, and a channel from an internal tuner. The audio inputs include two
standard channels (lines 1 and 2) and a channel from an internal tuner. The
timecode input is internal to the VCR.
The normal
outputs carry the currently selected inputs when the VCR is recording or when
the tape transport is stopped, and they carry the contents of the videotape
when the tape transport is playing or paused. The monitored outputs carry the
same information as the normal outputs plus current timecode and channel
information.
Assuming the
appropriate external inputs are connected to your VCR and you have decided what
you want to record, you can select the inputs to be recorded. For example, to
record or view from the svideo video and the line 1 audio inputs, you would
use the setvideo
By default,
the monitor shows exactly what appears as the output. Sometimes, however, you
might want to view one source while recording from another. This is a common
practice using the tuner. For example, you might want to watch channel 4 while
you record channel 7. In this case, you have two logical tuner inputs. You
could set up the VCR by using the following commands:
To review one source while recording from another
1. Use the settuner (MCI_SETTUNER ) command to select the
channels to watch and record.
2. Use the setvideo command to select the
video-recording source.
3. Use the setaudio command to select the
audio-recording source.
4. Use the setvideo command to route the
channel 4 video input to the monitored output to display it on-screen.
5. Use the setaudio command to route the
channel 4 audio input to the monitored output to play the audio.
6. Verify your selections by using the status command.
The VISCA
driver also supports a special input type for audio and video called mute.
Mute allows the selection of no input, which is useful when recording a blank
signal.
Selecting Recording Tracks
Three types
of recording tracks exist on a videotape: video, audio, and timecode. You have
only one video or timecode track, but you can use more than one audio track.
When you do so, make track 1 the main audio track.
The VISCA
driver supports two operating modes: assemble and insert. In assemble mode,
all tracks are selected to be recorded. In insert mode, tracks can be
independently selected for recording. Most VCRs are in assemble mode by
default. Use the set
Recording and Editing
The record
The cue
command prepares the device for recording or playing. Use the cue
input command to prepare the device for recording. The cue command is
required because an application must know when the device is ready to perform
the command (and because it can take several minutes to prepare for a play
The VCR
prepares itself for recording or playing by seeking to the in-point,
which is the current position or the position specified by using the cue
from command. If the preroll flag is specified with the cue
command, however, the VCR positions itself the preroll distance from the
in-point. The preroll flag also indicates that the VCR uses any applicable
editing mode, so it s important that you use preroll , especially when you
want the most accurate recording. (Use the capability
Note When you
record using from and to positions, the from position is included in the
edit, and the to position is not.
For more
information about recording, see Recording
Using the Clock While Editing
When editing,
you might want to record segments from one VCR to another. You can begin
recording at a specific time and position on one VCR while another begins
playing at the same time and position by specifying an action (play or record),
a position, and a time for each VCR.
Both VCRs
must use the same clock for this type of editing; the clock helps synchronize
both devices. You can determine if two VCRs share the same clock by using the status
You can also
determine clock resolution by using the status clock increment rate
command. This command returns the number of increments the clock supports per
second. For example, if the clock is updated every millisecond, the command
returns 1000 as the clock increment rate. The advantage of using the increment
rate is that the rate is expressed as an integer; otherwise, the increment
would be a (single- or double-precision) floating-point value. As an integer,
manipulating the increment rate is a simple operation and is not susceptible to
rounding errors. You can reset the clock by using the set
When issuing
a play
To ensure that
the waiting period is long enough, place the record command last in your
application and check the time immediately before it. If the interval is too
short, restart the play command. Alternatively, you could check the time
immediately after the last command of the script to verify that there is enough
time to send and complete all the commands.