Microsoft DirectX 9.0 |
The IAMTimecodeReader interface enables an application to read SMPTE or MIDI timecode from an external device. The MSDV and MSTape drivers support this interface for reading timecode from an external DV or MPEG-2 camcorder.
Hardware Requirements
See the IAMExtTransport interface for hardware requirements.
In addition to the methods inherited from IUnknown, the IAMTimecodeReader interface exposes the following methods.
Method | Description |
GetTCRMode | Retrieves properties of the timecode reader. |
SetTCRMode | Sets the timecode reader properties. |
put_VITCLine | Specifies the vertical interval line that the timecode reader will use to read timecode. |
get_VITCLine | Retrieves the vertical interval line that the timecode reader is using to read timecode. |
GetTimecode | Retrieves the most recent timecode, userbits, and flag values available in the stream. |
Remarks
For Windows Driver Model (WDM) devices, the WDM Video Capture Filter automatically exposes this interface if the WDM driver supports the PROPSETID_TIMECODE_READER property set. For more information, see the DirectX DDK documenation.
SMPTE timecode is a frame addressing system that identifies video and audio sources, makes automatic track synchronization possible, and provides a container for additional data related to the source material. SMPTE timecode's main purpose is to provide a machine-readable address for video and audio. It is displayed in hh:mm:ss:ff (hours, minutes, seconds, frames) format and is thoroughly defined in ANSI/SMPTE 12-1986.
Applications generally save timecode in one of two ways. It is either written to the capture file as an additional stream or as a discontinuity table stored in the extended AVI file index. It is commonly used to trigger capture or playback and to create edit decision lists that describes how source material is organized into a finished product.
If you intend to capture timecode, treat it as a separate stream that has its own media type. It can be consumed by an appropriate file-writing multiplexer filter. However, sometimes there are errors in reading the timecode off the tape because of dropouts and other mechanical tape problems. In such cases, the timecode source filter should simply drop samples and mark the next valid one with the discontinuity property.
If you intend to use timecodes to trigger capture or playback from a timecoded (or "striped") videotape, the sequence of events goes as follows:
You must consider discontinuous timecode, both during preroll and during the capture process; it is reasonable to demand that the timecode be continuous and monotonically increasing throughout the preroll and capture start point. This prevents a potentially ambiguous calculation of relative stream times by the IMediaSeeking::ConvertTimeFormat method. Also, the timecode need not be the only gating signal for triggered capture. Any time-stamped data stored in the vertical blanking interval, such as Intercast or closed-captioned data (XDS), can be used to start the streaming of video and audio data to disk.
Filter Developers: Implement this interface on an external device filter when you want to specify how an external device should read SMPTE/MIDI timecode information. Expose the IMediaSeeking interface on your filter so that applications can convert timecode to
The external device must be able to read timecode and send it to the computer over its control interface. If this is not the case, you must either have a timecode reader card in your computer, or you can write a software decoder that converts VITC (Vertical Interval Timecode) in captured video frames or LTC (Linear Timecode) captured as an audio signal into DirectShow timecode samples.