MCI_SET
The MCI_SET
command sets device information. CD audio, digital-video, MIDI sequencer, VCR,
videodisc, video-overlay, and waveform-audio devices recognize this command.
MCIERROR mciSendCommand(MCIDEVICEID wDeviceID,
MCI_SET,
DWORD dwFlags, (DWORD)
(LPMCI_SET_PARMS) lpSet);
Parameters
wDeviceID
Device
identifier of the MCI device that is to receive the command message.
dwFlags
MCI_NOTIFY,
MCI_WAIT, or, for digital-video and VCR devices, MCI_TEST. For information
about these flags, see The Wait, Notify, and Test Flags
lpSet
Address of an
MCI_SET_PARMS
Return Values
Returns zero
if successful or an error otherwise.
Remarks
The following
additional flags apply to all devices supporting MCI_SET:
MCI_SET_AUDIO
An audio
channel number is included in the dwAudio member of the structure
identified by lpSet. This flag must be used with MCI_SET_ON or
MCI_SET_OFF. Use one of the following constants to indicate the channel number:
MCI_SET_AUDIO_ALL
All audio
channels.
MCI_SET_AUDIO_LEFT
Left channel.
MCI_SET_AUDIO_RIGHT
Right
channel.
MCI_SET_DOOR_CLOSED
Closes the
media cover (if any).
MCI_SET_DOOR_OPEN
Opens the
media cover (if any).
MCI_SET_OFF
Disables the
specified video or audio channel.
MCI_SET_ON
Enables the
specified video or audio channel.
MCI_SET_TIME_FORMAT
A time format
parameter is included in the dwTimeFormat member of the structure
identified by lpSet. The following flags are used with this flag:
MCI_FORMAT_BYTES
Within a PCM
(Pulse Code Modulation) data format, changes the time member description to
bytes for input or output. Recognized by the waveaudio device type.
MCI_FORMAT_FRAMES
Subsequent
commands will use frames. Recognized by the digitalvideo, vcr, and videodisc
device types.
MCI_FORMAT_HMS
Changes the
time format to hours, minutes, and seconds. Recognized by the vcr and videodisc
device types.
MCI_FORMAT_MILLISECONDS
Changes the
time format to milliseconds. Recognized by all device types.
MCI_FORMAT_MSF
Changes the
time format to minutes, seconds, and frames. Recognized by the cdaudio
and vcr device types.
MCI_FORMAT_SAMPLES
Changes the
time format to samples for input or output. Recognized by the waveaudio
device type.
MCI_FORMAT_SMPTE_24,
MCI_FORMAT_SMPTE_25, and MCI_FORMAT_SMPTE_30
Sets the time
format to 24, 25, and 30 frame SMPTE (Society of Motion Picture and Television
Engineers), respectively. Recognized by the sequencer and vcr
device types.
MCI_FORMAT_SMPTE_30DROP
Sets the time
format to 30 drop-frame SMPTE. Recognized by the sequencer and vcr
device types.
MCI_FORMAT_TMSF
Changes the
time format to tracks, minutes, seconds, and frames. (MCI uses continuous track
numbers.) Recognized by the cdaudio and vcr device types.
MCI_SET_VIDEO
Sets the
video signal on or off. This flag must be used with either MCI_SET_ON or
MCI_SET_OFF. Devices that do not have video return MCIERR_UNSUPPORTED_FUNCTION.
The following
additional flags are used with the digitalvideo device type:
MCI_DGV_SET_FILEFORMAT
A file format
parameter is included in the dwFileFormat member of the structure
identified by lpSet. For digital-video devices, the file format is used
for save or capture commands. If omitted, this might default to a device driver
defined format. If the specified file format conflicts with the currently
selected algorithm and quality, then they are changed to the defaults for the
file format. The following file format constants are defined:
MCI_DGV_FF_AVI
AVI format.
MCI_DGV_FF_AVSS
AVSS format.
MCI_DGV_FF_DIB
DIB format.
MCI_DGV_FF_JFIF
JFIF format.
MCI_DGV_FF_JPEG
JPEG format.
MCI_DGV_FF_MPEG
MPEG format.
MCI_DGV_FF_RDIB
RLE DIB
format.
MCI_DGV_FF_RJPEG
RJPEG format.
MCI_DGV_SET_SEEK_EXACTLY
Sets the
format used for positioning. This flag must be used with MCI_SET_ON or
MCI_SET_OFF. If MCI_SET_ON is specified, playing or recording precisely
accesses the frame specified with the MCI_FROM flag. This might add some extra
delay if the requested frame is not a key frame. If MCI_SET_OFF is specified,
the device will seek to a key-frame image that precedes the requested frame. For
some files and devices, this might be the first frame of the file. The default
for this flag is device dependent.
MCI_DGV_SET_SPEED
A speed
parameter is included in the dwSpeed member of the structure identified
by lpSet. Speed is specified as a ratio between the nominal frame rate
and the desired frame rate where the nominal frame rate is designated as 1000.
Half speed is 500 and double speed is 2000. The allowable speed range is
dependent on the device and possibly the file, too.
MCI_DGV_SET_STILL
When used
with MCI_DGV_SET_FILEFORMAT, MCI_SET sets the file format used for
capture commands.
For
digital-video devices, the lpSet parameter points to an MCI_DGV_SET_PARMS
The following
additional flags are used with the sequencer device type:
MCI_SEQ_FORMAT_SONGPTR
Sets the time
format to song pointer units.
MCI_SEQ_SET_MASTER
Sets the
sequencer as a source of synchronization data and indicates that the type of
synchronization is specified in the dwMaster member of the structure
identified by lpSet. MCISEQ returns MCIERR_UNSUPPORTED_FUNCTION. The
following constants are defined for the synchronization type:
MCI_SEQ_MIDI
The sequencer
will send MIDI format synchronization data.
MCI_SEQ_SMPTE
The sequencer
will send SMPTE format synchronization data.
MCI_SEQ_NONE
The sequencer
will not send synchronization data.
MCI_SEQ_SET_OFFSET
Changes the
SMPTE offset of a sequence to that specified by the dwOffset member of
the structure identified by lpSet. This affects only sequences with a
SMPTE division type.
MCI_SEQ_SET_PORT
Sets the
output MIDI port of a sequence to that specified by the MIDI device identifier
in the dwPort member of the structure identified by lpSet. The
device closes the previous port (if any), and attempts to open and use the new
port. If it fails, it returns an error and reopens the previously used port (if
any). The following constants are defined for the ports:
MCI_SEQ_NONE
Closes the
previously used port (if any). The sequencer behaves exactly the same as if a
port were open, except no MIDI message is sent.
MIDI_MAPPER
Sets the port
opened to the MIDI mapper.
MCI_SEQ_SET_SLAVE
Sets the
sequencer to receive synchronization data and indicates that the type of
synchronization is specified in the dwSlave member of the structure
identified by lpSet. MCISEQ returns MCIERR_UNSUPPORTED_FUNCTION. The
following constants are defined for the synchronization type:
MCI_SEQ_FILE
Sets the
sequencer to receive synchronization data contained in the MIDI file.
MCI_SEQ_MIDI
Sets the
sequencer to receive MIDI synchronization data.
MCI_SEQ_NONE
Sets the
sequencer to ignore synchronization data in a MIDI stream.
MCI_SEQ_SMPTE
Sets the
sequencer to receive SMPTE synchronization data.
MCI_SEQ_SET_TEMPO
Changes the
tempo of the MIDI sequence to that specified by the dwTempo member of
the structure pointed to by lpSet. For sequences with division type
PPQN, tempo is specified in beats per minute; for sequences with division type
SMPTE, tempo is specified in frames per second.
For sequencer
devices, the lpSet parameter points to an MCI_SEQ_SET_PARMS
The following
additional flags are used with the vcr device type:
MCI_VCR_SET_ASSEMBLE_RECORD
Sets the
device to record in assemble or insert modes (when assemble is off, insert is
on, and vice-versa). Use with one of the following flag:
MCI_SET_ON
Sets assemble
record on, and turns insert record off. Records all video, audio and timecode
tracks.
MCI_SET_OFF
Sets assemble
record off, and turns insert record on. When assemble record is off, individual
tracks of video, audio, and timecode can be selected for recording.
MCI_VCR_SET_CLOCK
The
dwClock member of the structure identified by lpSet contains the new
clock time.
MCI_VCR_SET_COUNTER_FORMAT
The dwCounterFormat
member of the structure identified by lpSet contains a constant
specifying the new counter-time format to be used by the status counter. For a
list of valid constants, see MCI_SET_TIME_FORMAT in the list of additional
flags for this command.
MCI_VCR_SET_COUNTER_VALUE
The dwCounterValue
member of the structure identified by lpSet contains the new counter
value.
MCI_VCR_SET_INDEX
The dwIndex
member of the structure identified by lpSet contains a constant
indicating the contents of the on-screen display and must be one of the following:
MCI_VCR_INDEX_COUNTER
Displays
counter.
MCI_VCR_INDEX_DATE
Displays
date.
MCI_VCR_INDEX_TIME
Displays
time.
MCI_VCR_INDEX_TIMECODE
Displays
timecode.
For more
information, see the MCI_INDEX
MCI_VCR_SET_PAUSE_TIMEOUT
The dwPauseTimeout
member of the structure identified by lpSet contains the maximum
duration, in milliseconds, of a pause command.
MCI_VCR_SET_POSTROLL_DURATION
The dwPostrollDuration
member of the structure identified by lpSet contains the videotape
length, in the current time format, needed to brake the VCR transport when a
stop or pause command is issued.
MCI_VCR_SET_POWER
Sets the
power on or off. Must be used with one of the following flags:
MCI_SET_OFF
Turns power
off.
MCI_SET_ON
Turns power
on.
MCI_VCR_SET_PREROLL_DURATION
The dwPrerollDuration
member of the structure identified by lpSet contains the videotape
length, in the current time format, needed to stabilize the VCR output.
MCI_VCR_SET_RECORD_FORMAT
The dwRecordFormat
member of the structure identified by lpSet contains a constant
describing the record speed, which must be one of the following:
MCI_VCR_FORMAT_EP
Records at
slow speed.
MCI_VCR_FORMAT_LP
Records at
medium-slow speed.
MCI_VCR_FORMAT_SP
Records at
standard speed.
MCI_VCR_SET_SPEED
The dwSpeed
member of the structure identified by lpSet contains the new speed
setting, where 1000 is normal speed, 2000 is double speed, and 500 is half
speed, and so on.
MCI_VCR_SET_TAPE_LENGTH
The dwTapeLength
member of the structure identified by lpSet contains the new length
of the tape, provided that the length of the tape is undetectable.
MCI_VCR_SET_TIME_MODE
The dwTimeMode
member of the structure identified by lpSet contains a constant
indicating the new positional time mode. The following constants are valid:
MCI_VCR_TIME_COUNTER
Forces the
device to use counter exclusively.
MCI_VCR_TIME_DETECT
Each time a
new videotape is inserted into the device, or the mode changes from not ready
to ready, the device should attempt to determine if there is timecode available
on the videotape. If timecode is available, use timecode in all subsequent
commands that specify positions. Otherwise, use the counter.
MCI_VCR_TIME_TIMECODE
Forces the
device to use timecode exclusively.
MCI_VCR_SET_TRACKING
Tunes the
speed of the VCR tape transport with a fine adjustment, and must be used with
one of the following flags:
MCI_VCR_PLUS
Increases the
tape transport speed.
MCI_VCR_MINUS
Decreases the
tape transport speed.
MCI_VCR_RESET
Returns the
tracking adjustment to zero.
For VCR
devices, the lpSet parameter points to an MCI_VCR_SET_PARMS
The following
additional flag is used with the videodisc device type:
MCI_VD_FORMAT_TRACK
Changes the
time format to tracks. MCI uses continuous track numbers.
The following
additional flags are used with the waveaudio device type:
MCI_WAVE_INPUT
Sets the
input used for recording to the wInput member of the structure
identified by lpSet.
MCI_WAVE_OUTPUT
Sets the
output used for playing to the wOutput member of the structure
identified by lpSet.
MCI_WAVE_SET_ANYINPUT
Any wave
input compatible with the current format can be used for recording.
MCI_WAVE_SET_ANYOUTPUT
Any wave
output compatible with the current format can be used for playing.
MCI_WAVE_SET_AVGBYTESPERSEC
Sets the
bytes per second used for playing, recording, and saving to the nAvgBytesPerSec
member of the structure identified by lpSet.
MCI_WAVE_SET_BITSPERSAMPLE
Sets the bits
per sample used for playing, recording, and saving to the nBitsPerSample
member of the PCM data format identified by lpSet.
MCI_WAVE_SET_BLOCKALIGN
Sets the
block alignment used for playing, recording, and saving to the nBlockAlign
member of the structure identified by lpSet.
MCI_WAVE_SET_CHANNELS
The number of
channels is indicated in the nChannels member of the structure
identified by lpSet.
MCI_WAVE_SET_FORMATTAG
Sets the
format type used for playing, recording, and saving to the wFormatTag
member of the structure identified by lpSet. Specifying WAVE_FORMAT_PCM
changes the format to PCM.
MCI_WAVE_SET_SAMPLESPERSEC
Sets the
samples per second used for playing, recording, and saving to the nSamplesPerSec
member of the structure identified by lpSet.
For
waveform-audio devices, the lpSet parameter points to an MCI_WAVE_SET_PARMS
Several
properties of waveform-audio data are defined when the file to store the data
is created. These properties describe how the data is structured within the
file and cannot be changed once recording begins. The following list of flags
identifies these properties:
MCI_WAVE_SET_AVGBYTESPERSEC
MCI_WAVE_SET_BITSPERSAMPLE
MCI_WAVE_SET_BLOCKALIGN
MCI_WAVE_SET_CHANNELS
MCI_WAVE_SET_FORMATTAG
MCI_WAVE_SET_SAMPLESPERSEC
See Also