IAMExtTransport Interface

The IAMExtTransport interface provides methods that control specific behaviors of an external VCR. These methods generally set and get the transport properties, which relate to how the VCR and the computer exchange data. Because this interface controls specific behaviors of transport, it must be implemented in combination with the IAMExtDevice interface, which controls an external device's general behaviors. If you want to control an external device other than a VCR, you have two options. Either use the methods you need and return E_NOTIMPL for the rest, or design a new interface and aggregate it with IAMExtDevice.

This interface also provides methods that enable developers to define edit events that assist in the content authoring process. Edit events are made up of individual edit properties that are grouped together into edit property sets. These edit property sets can define an actual recording sequence on the transport or a simple positional command. They can, for example, specify certain modes of editing, record the inpoints and outpoints of a recording sequence, or memorize positions called bookmarks. The SetEditPropertySet method creates or registers a group of edit properties, called an edit property set, while the SetEditProperty enables the application to define parameters and values of individual edit properties. Because these are relatively sophisticated situations, their implementation is left to the advanced developer.

For a description of a sample filter which controls a VCR through Microsoft® DirectShow®, see Vcrctrl Sample (VCR Control Filter).

Implement this interface if you want to build a filter or application that controls an external device, such as a VCR. Because this interface controls specific information about a device, you should implement it with the IAMExtDevice interface.

An application can directly instantiate and control external device control filters, such as those for VCRs, but it is strongly recommended that you always instantiate them within the context of a filter graph, even if they are the only filter within the graph.

Implementations can vary depending on the type of external device being controlled. With certain devices, methods can return E_NOTIMPL if they are not applicable.

Use this interface if you want a filter to control video and audio tape machines that are external to the computer. Typical uses for this interface include the applications that implement "batch capture" and "print to tape" of audio and video.

Applications should use the filter graph to enumerate the filters and then get the IAMExtTransport interface directly from the appropriate filter.

Hardware Requirements

To control an external VCR, certain hardware requirements are recommended. VCRs with an RS-422 serial interface require a special serial port card or an external RS-232-to-RS-422 adapter. In addition, for best performance, your computer should have a serial port card built with a 16,550 high-performance UART to sustain higher baud rates, such as 38.4 baud.

Methods in Vtable Order

IUnknown methodsDescription
QueryInterface Retrieves pointers to supported interfaces.
AddRef Increments the reference count.
Release Decrements the reference count.
IAMExtTransport methodsDescription
GetCapability Retrieves the general capabilities of an external transport.
put_MediaState Sets the current state of the media.
get_MediaState Retrieves the current state of the media.
put_LocalControl Sets the state of the external device to local or remote control.
get_LocalControl Retrieves the state of the external device.
GetStatus Determines the status of the external transport.
GetTransportBasicParameters Retrieves the external transport's basic parameter settings.
SetTransportBasicParameters Sets the external transport's basic parameters.
GetTransportVideoParameters Retrieves the external transport's video parameter settings.
SetTransportVideoParameters Sets the video parameters for the external transport.
GetTransportAudioParameters Retrieves the external transport's audio parameter settings.
SetTransportAudioParameters Sets audio parameter setting for the external transport.
put_Mode Sets the movement of the transport to a new mode (play, stop, record, edit, and so on).
get_Mode Retrieves the mode of the transport (play, stop, record, edit, and so on).
put_Rate Sets the playback rate for variable-speed external devices.
get_Rate Retrieves the playback rate set in put_Rate for variable speed external devices.
GetChase Retrieves the status of chase mode.
SetChase Enables or disables chase mode.
GetBump Retrieves status of bump mode.
SetBump Temporarily changes the speed of playback for synchronization of multiple external devices.
get_AntiClogControl Determines if the anti-headclog control is enabled or disabled.
put_AntiClogControl Enables or disables the transport's anti-headclog control.
GetEditPropertySet Retrieves the current state of an edit property set.
SetEditPropertySet Registers an edit property set that describes a group of edit properties.
GetEditProperty Retrieves individual parameters and values associated with a particular edit property set.
SetEditProperty Defines individual parameters and values associated with a particular edit property set.
get_EditStart Determines if the external transport's edit control is active.
put_EditStart Activates edit control on a capable transport.

IAMExtTransport::get_AntiClogControl

IAMExtTransport Interface

Determines if the anti-headclog control is enabled or disabled.

Syntax

HRESULT get_AntiClogControl(
    long *pEnabled
);

Parameters

pEnabled
[out] Pointer to a value indicating whether anti-headclog is enabled. OATRUE indicates anti-headclog is enabled; OAFALSE indicates disabled.

Return Value

Returns an HRESULT value that depends on the implementation of the interface.

See Also

IAMExtTransport::put_AntiClogControl

IAMExtTransport::GetBump

IAMExtTransport Interface

Retrieves the status of bump mode.

Syntax

HRESULT GetBump(
    long *pSpeed,
    long *pDuration
);

Parameters

pSpeed
[out] Pointer to the temporary speed (a multiple of normal speed).
pDuration
[out] Pointer to the duration of a bump in current time format.

Return Value

Returns an HRESULT value that depends on the implementation of the interface.

Remarks

This method returns the temporary speed and remaining duration for an active "bump".

For supported time formats, see "IAMExtTransport Basic Parms" in DXMedia\Include\Edevdefs.h.

See Also

IAMExtTransport::SetBump

IAMExtTransport::GetCapability

IAMExtTransport Interface

Retrieves the general capabilities of an external transport.

Syntax

HRESULT GetCapability(
    long Capability,
    long *pValue,
    double *pdblValue
);

Parameters

Capability
[in] Capability to query for. Specify one of the following:
ED_TRANSCAP_CAN_BUMP_PLAY Checks whether transport can vary speed for synchronizing.
ED_TRANSCAP_CAN_DELAY_AUDIO_IN Checks whether transport does delayed-in audio edits.
ED_TRANSCAP_CAN_DELAY_AUDIO_OUT Checks whether transport does delayed-out audio edits.
ED_TRANSCAP_CAN_DELAY_VIDEO_IN Checks whether transport does delayed-in video edits.
ED_TRANSCAP_CAN_DELAY_VIDEO_OUT Checks whether transport does delayed-out video edits.
ED_TRANSCAP_CAN_EJECT Checks whether transport can eject its media.
ED_TRANSCAP_CAN_PLAY_BACKWARDS Checks whether transport can play media in reverse (negative rate).
ED_TRANSCAP_CAN_SET_EE Checks whether transport can show its input on its output.
ED_TRANSCAP_CAN_SET_PB Checks whether transport can show media playback on its output.
ED_TRANSCAP_FWD_VARIABLE_MAX Maximum forward speed (multiple of play speed) in pdblValue.
ED_TRANSCAP_FWD_VARIABLE_MIN Minimum forward speed (multiple of play speed) in pdblValue.
ED_TRANSCAP_REV_VARIABLE_MAX Maximum reverse speed (multiple of play speed) in pdblValue.
ED_TRANSCAP_REV_VARIABLE_MIN Minimum reverse speed (multiple of play speed) in pdblValue.
ED_TRANSCAP_FWD_SHUTTLE_MAX Maximum forward Shuttle mode speed (multiple of play speed) in pdblValue.
ED_TRANSCAP_LTC_TRACK Track number of linear timecode (LTC) in pValue.
ED_TRANSCAP_NUM_AUDIO_TRACKS Number of audio tracks in pValue.
ED_TRANSCAP_FWD_SHUTTLE_MIN Minimum forward Shuttle speed (multiple of play speed) in pdblValue.
ED_TRANSCAP_REV_SHUTTLE_MAX Maximum reverse Shuttle mode speed (multiple of play speed) in pdblValue.
ED_TRANSCAP_REV_SHUTTLE_MIN Minimum reverse Shuttle mode speed (multiple of play speed) in pdblValue.
ED_TRANSCAP_HAS_DT_OATRUE Specifies device has Dynamic Tracking.
pValue
[out] Pointer to a value indicating whether the capability specified in Capability is supported. Returns OATRUE if it is supported or OAFALSE if not.
pdblValue
[out] Pointer to a value indicating the capabilities of the property specified in Capability.

Return Value

Returns an HRESULT value that depends on the implementation of the interface.

Remarks

All OATRUE and OAFALSE values are returned in pValue; numerical values are returned in pValue or pdblValue. Use the pdblValue parameter to return double values if the pValue parameter is insufficient. Return NULL if one of the parameters is not needed.

IAMExtTransport::GetChase

IAMExtTransport Interface

Retrieves the status of chase mode.

Syntax

HRESULT GetChase(
    long *pEnabled,
    long *pOffset,
    HEVENT *phEvent
);

Parameters

pEnabled
[out] Pointer to a value indicating whether chase is enabled. OATRUE specifies chase enabled; OAFALSE specifies chase disabled.
pOffset
[out] Pointer to an offset from the present time, indicating the offset the transport will maintain while playing.
phEvent
[out] Pointer to the completion notification that will signal that the chase offset is established.

Return Value

Returns an HRESULT value that depends on the implementation of the interface.

Remarks

The time for pOffset is given in the current time format (see "IAMExtTransport Basic Parms" in DXMedia\Include\Edevdefs.h for supported time formats).

See Also

IAMExtTransport::SetChase

IAMExtTransport::GetEditProperty

IAMExtTransport Interface

Retrieves the parameters and values associated with a particular edit event.

Syntax

HRESULT GetEditProperty(
    long EditID,
    long Param,
    long *pValue
);

Parameters

EditID
[in] Identification number of the edit property set.
Param
[in] Edit event parameter to determine the value of.
pValue
[out] Pointer to the returned value of the parameter specified in Param: OATRUE, OAFALSE, or a specific value.

Return Value

Returns an HRESULT value that depends on the implementation of the interface.

See Also

IAMExtTransport::SetEditProperty

IAMExtTransport::GetEditPropertySet

IAMExtTransport Interface

Retrieves individual parameters and values associated with a particular edit property set.

Syntax

HRESULT GetEditPropertySet(
    long EditID,
    long *pState
);

Parameters

EditID
[in] Identification number of the edit property set.
pState
[out] Pointer to the state of the edit property set. Retrieves one of the following:
DC_SET_ACTIVE Activates edit property set.
DC_SET_DELETE Deletes edit property set.
DC_SET_INACTIVE Deactivates edit property set.
DC_SET_REGISTER Registers edit property set.

Return Value

Returns an HRESULT value that depends on the implementation of the interface.

See Also

IAMExtTransport::SetEditPropertySet

IAMExtTransport::get_EditStart

IAMExtTransport Interface

Determines if the external transport's edit control is active.

Syntax

HRESULT get_EditStart(
    long *pValue
);

Parameters

pValue
[out] Pointer to a value indicating whether edit control is active. Returns OATRUE if edit control is active; OAFALSE if inactive.

Return Value

Returns an HRESULT value that depends on the implementation of the interface.

See Also

IAMExtTransport::put_EditStart

IAMExtTransport::get_LocalControl

IAMExtTransport Interface

Retrieves the state of the external device.

Syntax

HRESULT get_LocalControl(
    long *pState
);

Parameters

pState
[out] Pointer to a value indicating local or remote control. Returns OATRUE for local control or OAFALSE for remote.

Return Value

Returns an HRESULT value that depends on the implementation of the interface.

Remarks

To control an external device, it must be in remote mode.

See Also

IAMExtTransport::put_LocalControl

IAMExtTransport::get_MediaState

IAMExtTransport Interface

Retrieves the current state of the media set in put_MediaState.

Syntax

HRESULT get_MediaState(
    long *pState
);

Parameters

pState
[out] Pointer to a returned value indicating the current state of the media. Values will be device specific but can include the following:
ED_MEDIA_SPIN_DOWN Stopped spinning (for disk media); unthreaded (for tape media).
ED_MEDIA_SPIN_UP Started spinning but not at full speed (for disk media); threading the tape (for tape media).
ED_MEDIA_UNLOAD Media is ejected from the drive (if device supports it).

Return Value

Returns an HRESULT value that depends on the implementation of the interface.

IAMExtTransport::get_Mode

IAMExtTransport Interface

Retrieves the mode of the transport (play, stop, record, edit, and so on).

Syntax

HRESULT get_Mode(
    long *pMode
);

Parameters

pMode
[out] Pointer to the current transport mode (see IAMExtTransport::put_Mode for possible modes).

Return Value

Returns an HRESULT value that depends on the implementation of the interface.

IAMExtTransport::get_Rate

IAMExtTransport Interface

Retrieves the playback rate for variable-speed external devices.

Syntax

HRESULT get_Rate(
    double *pdblRate
);

Parameters

pdblRate
[out] Pointer to the playback rate set in IAMExtTransport::put_Rate.

Return Value

Returns an HRESULT value that depends on the implementation of the interface.

IAMExtTransport::GetStatus

IAMExtTransport Interface

Returns the extended information about the external transport's status.

Syntax

HRESULT GetStatus(
    long StatusItem,
    long *pValue
);

Parameters

StatusItem
[in] Item you want to determine the status of; can include one of the following:
ED_MODE_EDIT_CUE Checks if device is cueing for an active edit event.
ED_MODE_FF Checks if device is fast forwarding.
ED_MODE_FREEZE Checks if device is paused in the Play mode.
ED_MODE_LINK_OFF Checks if transport control isn't linked to filter graph's run, stop, and pause controls.
ED_MODE_LINK_ON Checks if transport control is linked to filter graph's run, stop, pause controls.
ED_MODE_PLAY Checks if device is playing.
ED_MODE_RECORD Checks if device is recording.
ED_MODE_RECORD_STROBE Checks if device is recording single-frame.
ED_MODE_RECORD_FREEZEChecks if device is paused in the Record Mode.
ED_MODE_REW Checks if device is rewinding.
ED_MODE_SHUTTLE Checks if device is shuttling (high-speed movement with visible picture). Use IAMExtTransport::get_Rate to determine actual transport speed.
ED_MODE_STEP_FWD or ED_MODE_STEP Checks if device is single-stepping (searching one frame at a time) in a forward direction.
ED_MODE_STOP Checks if device is stopped.
pValue
[out] Pointer to a value indicating whether the item in StatusItem is active. Returns OATRUE if StatusItem is active or OAFALSE if not.

Return Value

Returns an HRESULT value that depends on the implementation of the interface.

Remarks

When implementing this interface, be aware that transport StatusItem parameters are more extensive than most DirectShow interfaces and code should reflect this variety and check the transport status of appropriate parameters.

IAMExtTransport::GetTransportAudioParameters

IAMExtTransport Interface

Retrieves audio parameter setting for external transport.

Syntax

HRESULT GetTransportAudioParameters(
    long Param,
    long *pValue
);

Parameters

Param
[in] Audio parameter whose value you want to get. Specify one of the following:
ED_TRANSAUDIO_ENABLE_OUTPUT Audio output channel(s)
ED_TRANSAUDIO_ENABLE_RECORD Audio recording channel(s)
ED_TRANSAUDIO_ENABLE_SELSYNC Audio selsync recording channel(s)
ED_TRANSAUDIO_SET_MONITOR Monitor output audio channel(s)
ED_TRANSAUDIO_SET_SOURCE Audio source channel(s)
pValue
[out] Pointer to the channel or channels set in the IAMExtTransport::SetTransportAudioParameters method.

Return Value

Returns an HRESULT value that depends on the implementation of the interface.

IAMExtTransport::GetTransportBasicParameters

IAMExtTransport Interface

Retrieves the transport's basic parameter settings.

Syntax

HRESULT GetTransportBasicParameters(

  long Param,
  long *pValue,
  LPOLESTR *ppszData );

Parameters

Param
[in] Parameter you want to receive the setting for (for possible parameters, see Edevdefs.h under "IAMExtTransport Basic Parms").
pValue
[out] Pointer to the setting of the parameter if it is numeric.
ppszData
[out] Address of a pointer to the setting of the parameter if it is a string.

Return Value

Returns an HRESULT value that depends on the implementation of the interface.

See Also

IAMExtTransport::SetTransportBasicParameters

IAMExtTransport::GetTransportVideoParameters

IAMExtTransport Interface

Retrieves video parameter settings for external transport.

Syntax

HRESULT GetTransportVideoParameters(
    long Param,
    long *pValue
);

Parameters

Param
[in] Video parameter you want to receive the settings for. Can be either ED_TRANSVIDEO_SET_OUTPUT (video transport output parameters) or ED_TRANSVIDEO_SET_SOURCE (video transport input source).
pValue
[out] Pointer to a variable that will receive the video parameters. If Param is set to ED_TRANSVIDEO_SET_SOURCE, pValue will receive the active video input. If Param is set to ED_TRANSVIDEO_SET_OUTPUT, pValue will receive one of the following values:
ED_E2E Input video is visible on device's output regardless of transport mode.
ED_OFF Video output is disabled.
ED_PLAYBACK Video playing from media is displayed on the screen.

Return Value

Returns an HRESULT value that depends on the implementation of the interface.

See Also

IAMExtTransport::SetTransportVideoParameters

IAMExtTransport::put_AntiClogControl

IAMExtTransport Interface

Enables or disables transport anti-headclog control.

Syntax

HRESULT put_AntiClogControl(
    long Enable
);

Parameters

Enable
[in] Value indicating whether to enable anti-headclog control; set OATRUE to enable, OAFALSE to disable.

Return Value

Returns an HRESULT value that depends on the implementation of the interface.

Remarks

Use this method to unclog video heads on VCRs that have an automatic head-cleaning feature.

See Also

IAMExtTransport::get_AntiClogControl

IAMExtTransport::put_EditStart

IAMExtTransport Interface

Activates the edit control on a capable transport.

Syntax

HRESULT put_EditStart(
    long Value
);

Parameters

Value
[in] Value indicating whether to active the edit control. OATRUE activates the edit control; OAFALSE deactivates it.

Return Value

Returns an HRESULT value that depends on the implementation of the interface.

Remarks

Use this method to manually enable edit control. Edit control is defined as the precise enabling of individual, or a set of, record tracks on a VCR; for example, a video-only insert edit, where only the video record head is enabled and a new video signal is recorded—the audio signal is left as is. Use this method to control "on the fly" editing on machines that have this feature.

See Also

IAMExtTransport::get_EditStart

IAMExtTransport::put_LocalControl

IAMExtTransport Interface

Sets the state of the external device to local or remote control.

Syntax

HRESULT put_LocalControl(
    long State
);

Parameters

State
[in] Current state; pass OATRUE for local, OAFALSE for remote.

Return Value

Returns an HRESULT value that depends on the implementation of the interface.

See Also

IAMExtTransport::get_LocalControl

IAMExtTransport::put_MediaState

IAMExtTransport Interface

Sets the current state of the media.

Syntax

HRESULT put_MediaState(
    long State
);

Parameters

State
[in] Value specifying the state. Use one of the following:
ED_MEDIA_SPIN_DOWN Stop spinning (for disc media); unthread the tape (for tape media).
ED_MEDIA_SPIN_UP Start spinning (for disc media); thread the tape (for tape media).
ED_MEDIA_UNLOAD Eject the media from the drive (if device supports it).

Return Value

Returns an HRESULT value that depends on the implementation of the interface.

Remarks

Use the preceding parameters for disk and tape media. For other devices, you might need to specify new parameters.

See Also

IAMExtTransport::get_MediaState

IAMExtTransport::put_Mode

IAMExtTransport Interface

Sets the movement of the transport to a new mode (play, stop, record, edit, and so on).

Syntax

HRESULT put_Mode(
    long Mode
);

Parameters

Mode
[in] Transport mode. Specify one of the following:
ED_MODE_PLAY Play
ED_MODE_STOP Stop
ED_MODE_FREEZE Freeze (pause)
ED_MODE_THAW Resume
ED_MODE_FF Fast forward
ED_MODE_REW Rewind
ED_MODE_RECORD Record
ED_MODE_RECORD_STROBE Record single frame
ED_MODE_STEP_FWD Single step forward
ED_MODE_STEP_REV Single step backward
ED_MODE_SHUTTLE Shuttle (high-speed movement with visible picture). Use with IAMExtTransport::put_Rate to set the transport speed.
ED_MODE_EDIT_CUE Position transport to cue point for an active edit event
ED_MODE_LINK_ON Link this method to the graph's IMediaControl::Run, Stop, and Pause methods
ED_MODE_LINK_OFF Disengage this method from the graph's IMediaControl::Run, Stop, Pause methods.

Return Value

Returns an HRESULT value that depends on the implementation of the interface.

See Also

IAMExtTransport::get_Mode

IAMExtTransport::put_Rate

IAMExtTransport Interface

Sets the playback rate for variable-speed external devices.

Syntax

HRESULT put_Rate(
    double dblRate
);

Parameters

dblRate
[in] Multiple of play speed where .5=half, 1=normal, 2=double, 3=triple, and so forth.

Return Value

Returns an HRESULT value that depends on the implementation of the interface.

Remarks

This method enables an application to speed up or slow down playback relative to the normal default playback speed. A rate of 1.0 indicates normal playback speed. Specifying 2.0 causes playback at twice the normal rate.

You can also link this method to the IMediaPosition::put_Rate method as an alternate means of setting rates of playback relative to normal speed.

See Also

IAMExtTransport::get_Rate

IAMExtTransport::SetBump

IAMExtTransport Interface

Temporarily changes the speed of playback for synchronization of multiple external devices.

Syntax

HRESULT SetBump(
    long Speed,
    long Duration
);

Parameters

Speed
[in] Temporary speed (a multiple of normal speed).
Duration
[in] Duration of a bump in current time format.

Return Value

Returns an HRESULT value that depends on the implementation of the interface.

Remarks

This method will cause a temporary speed variation of transport used during the physical synchronization process. This method will stay in effect until Duration time has expired.

For supported time formats, see "IAMExtTransport Basic Parms" in DXMedia\Include\Edevdefs.h.

See Also

IAMExtTransport::GetBump

IAMExtTransport::SetChase

IAMExtTransport Interface

Enables or disables chase mode.

Syntax

HRESULT SetChase(
    long Enable,
    long Offset,
    HEVENT hEvent
);

Parameters

Enable
[in] Value specifying whether chase is enabled. Specify OATRUE to enable chase; OAFALSE to disable.
Offset
[in] Offset from the time reference that the transport will maintain. Specify in current time format.
hEvent
[in] Event to signal offset established.

Return Value

Returns an HRESULT value that depends on the implementation of the interface.

Remarks

Use the SetChase method when you want an external transport to continuously follow a timecode signal with a fixed offset. For example, if your computer is generating timecode, it can tell a VCR capable of chasing to put itself in play mode and keep its media a fixed offset from the reference timecode. You determine the offset by comparing the timecode on the playback media to the reference (generated) timecode.

This method will stay in effect until canceled or complete and requires the filter to verify (by periodically reading the transport's timecode) that the transport is indeed maintaining the fixed offset.

Time for Offset is specified in current time format (for supported time formats, see "IAMExtTransport Basic Parms" in DXMedia\Include\Edevdefs.h).

See Also

IAMExtTransport::GetChase

IAMExtTransport::SetEditProperty

IAMExtTransport Interface

Defines individual parameters and values associated with a particular edit property set.

Syntax

HRESULT SetEditProperty(
    long EditID,
    long Param,
    long Value
);

Parameters

EditID
[in] Identification number of the edit property set.
Param
[in] Edit event parameter to define.
Value
[in] Value of the parameter specified in Param. Use OATRUE, OAFALSE, or a specific value.

Return Value

Returns an HRESULT value that depends on the implementation of the interface.

Remarks

Edit events can either refer to a group of predefined properties that define an actual recording sequence, or they can refer to simple positional commands. They can, for example, specify certain modes of editing, record inpoints and outpoints, or memorize positions called bookmarks. The SetEditPropertySet method defines and registers a group of edit events, called an edit property set, while the SetEditProperty method enables the user to define parameters and values of individual edit events.

To define a set of edit properties, first register an edit property set and get an EditID with the SetEditPropertySet method. Then use the SetEditProperty method to define specific parameters and values of individual edit properties. Finally, use the SetEditPropertySet method to activate the edit property set.

For a complete listing of possible parameters and values for edit property sets, see Edevdefs.h in the Microsoft® DirectX® Media SDK DXMedia\Include folder.

See Also

IAMExtTransport::GetEditProperty

IAMExtTransport::SetEditPropertySet

IAMExtTransport Interface

Registers an edit property set that describes a group of edit properties.

Syntax

HRESULT SetEditPropertySet(
    long *pEditID,
    long State
);

Parameters

pEditID
[in, out] Pointer to the identification number of the edit property set.
State
[in] State of the edit property set. Specify one of the following:
DC_SET_ACTIVE Activates edit property set.
DC_SET_DELETE Deletes edit property set.
DC_SET_INACTIVE Inactivates edit property set.
DC_SET_REGISTER Registers edit property set.

Return Value

Returns an HRESULT value that depends on the implementation of the interface.

Remarks

Edit events refer to a group of predefined properties that define an actual recording sequence on the transport or a simple positional command. They can, for example, specify certain modes of editing, record inpoints and outpoints, or memorize positions called bookmarks. The SetEditPropertySet method defines and registers a group of edit properties, called an edit property set, while the SetEditProperty enables the user to define parameters and values of individual edit event properties.

To define a set of edit properties, first register an edit property set and get an EditID with the SetEditPropertySet method. The implementation of this method handles memory allocation for the property set. Then use the SetEditProperty method to define specific parameters and values of individual edit properties. Finally, use the SetEditPropertySet method to activate the edit property set.

For example, you would configure an insert edit on all tracks as shown in the following code.

  SetEditPropertySet( pEditID,       // Register an edit property set ID (causes
                 ED_REGISTER );      // memory to be allocated)
  SetEditProperty( EditID,           // Identify the property set
                 ED_EDIT_MODE        // Set the edit mode
				 ED_EDIT_MODE_INSERT);
  SetEditProperty( EditID,
                 ED_EDIT_TRACK,      // Set the particulars about the event
				 ED_VIDEO | ED_AUDIO_ALL);
  SetEditProperty( EditID,
                 ED_REHEARSE_MODE,
				 ED_EDIT_PERFORM);
  // then set the record and source times and so on..
  SetEditPropertySet( pEditID,       // and activate it
                 ED_ACTIVE);
  SetEditProperty( EditID,           // Cue up the machine
                 ED_EDIT_SEEK,
				 OATRUE );
  // and start the graph
  

To do an immediate edit (editing "on the fly"), use the ED_EDIT_IMMEDIATE edit property.

You can also use the edit property set mechanism to do timecode searches. To do this, set the following properties.

  1. ED_EDIT_SRC_INPOINT to the target timecode value
  2. ED_EDIT_SEEK_MODE to ED_EDIT_SEEK_EDIT_IN
  3. ED_EDIT_SEEK to OATRUE—this initiates the search operation

VCR control filters can support one of several modes of editing and synchronization control:

Determine master/slave mode for a particular device by testing the ED_TRANSCAP_IS_MASTER item with the IAMExtTransport::GetCapability method.

It is relatively straightforward to assign filter graph playback as a slave to a master VCR by using SMPTE timecode. The TIMECODE_SAMPLE returned from the IAMTimecodeReader::GetTimecode method contains a reference clock time stamp that reflects the time relationship between the VCR's frame position and the filter graph's clock. You can use this offset to trigger digital capture of playback with the stream control interfaces.

Assigning a VCR as a slave to the filter graph's clock requires sending a target time offset to the VCR control filter. In the simplest case, you can do this by implementing the IAMExtTransport::SetChase method. For single or multiple event edit support, use the ED_EDIT_OFFSET property of the edit property set.

For a complete listing of possible parameters and values for edit property sets, see Edevdefs.h in the DirectX Media SDK DXMedia\Include folder.

See Also

IAMExtTransport::GetEditPropertySet

IAMExtTransport::SetTransportAudioParameters

IAMExtTransport Interface

Sets audio parameter setting for external transport.

Syntax

HRESULT SetTransportAudioParameters(
    long Param,
    long Value
);

Parameters

Param
[in] Audio parameter you want to set. Specify one of the following.
ED_TRANSAUDIO_ENABLE_OUTPUT Enable audio channel(s) for output.
ED_TRANSAUDIO_ENABLE_RECORD Enable audio channel(s) for recording.
ED_TRANSAUDIO_ENABLE_SELSYNC Enable audio channel(s) for selsync recording.
ED_TRANSAUDIO_SET_MONITOR Set the monitor output source.
ED_TRANSAUDIO_SET_SOURCE Set the active audio input.
Value
[in] Audio channel or channels to set the parameter on.

Return Value

Returns an HRESULT value that depends on the implementation of the interface.

Remarks

Specify an exact channel or channels in Value by selecting ED_AUDIO_1 through ED_AUDIO_24 (use an or switch to combine), or all channels by selecting ED_AUDIO_ALL.

See Also

IAMExtTransport::GetTransportAudioParameters

IAMExtTransport::SetTransportBasicParameters

IAMExtTransport Interface

Sets basic parameters of external transport.

Syntax

HRESULT SetTransportBasicParameters(
    long Param,
    long Value,
    LPCOLESTR pszData
);

Parameters

Param
[in] Parameter you want to set (see Edevdefs.h for possible parameters under "IAMExtTransport Basic Parms").
Value
[in] Setting of the parameter if it is numeric.
pszData
[in] Pointer to the setting of the parameter if it is a string.

Return Value

Returns an HRESULT value that depends on the implementation of the interface.

Remarks

Basic settings include time formats, record formats, preroll setting, servo setting, and others (see Edevdefs.h).

See Also

IAMExtTransport::GetTransportBasicParameters

IAMExtTransport::SetTransportVideoParameters

IAMExtTransport Interface

Sets video parameters for external transport.

Syntax

HRESULT SetTransportVideoParameters(
    long Param,
    long Value
);

Parameters

Param
[in] Video parameter you want to set. Specify either ED_TRANSVIDEO_SET_OUTPUT (video transport output parameters) or ED_TRANSVIDEO_SET_SOURCE (video transport physical input).
Value
[in] Set the ED_TRANSVIDEO_SET_SOURCE flag to set the active video input, or set the ED_TRANSVIDEO_SET_OUTPUT flag to one of the following values.
ED_E2E Input video is visible on device's output regardless of transport mode.
ED_OFF Video output is disabled.
ED_PLAYBACK Video playing from media is displayed on the screen.

Return Value

Returns an HRESULT value that depends on the implementation of the interface.

Remarks

For the ED_TRANSVIDEO_SET_SOURCE flag, an external device filter uses physical pins to describe its inputs. Calls to the filter's pin enumerator will return an index value. The value is passed to this method as its as its Value parameter.

See Also

IAMExtTransport::GetTransportVideoParameters


Top of Page Top of Page
© 2000 Microsoft and/or its suppliers. All rights reserved. Terms of Use.