tmModule Functions¶
Fill in 0 for any unsupported calls. Thread safety is defined per-module, only a single thread will enter a module at a time.
Member | Description |
---|---|
Startup |
Initialize a transmitter, fill in basic plug-in info, allocate memory to hold user settings and other data. tmResult (*Startup)(
tmStdParms* ioStdParms,
tmPluginInfo* outPluginInfo);
|
Shutdown |
Terminate a transmitter. tmResult (*Shutdown)(
tmStdParms* ioStdParms);
Dispose of |
QueryAudioMode |
Describe the audio modes supported by the transmitter, one at a time. tmResult (*QueryAudioMode)(
const tmStdParms* inStdParms,
const tmInstance* inInstance,
csSDK_int32 inQueryIterationIndex,
tmAudioMode* outAudioMode);
Note that currently one audio mode is currently supported. You can convert between audio formats using the Audio Suite. |
QueryVideoMode |
Describe the video modes supported by the transmitter, one at a time. tmResult (*QueryVideoMode)(
const tmStdParms* inStdParms,
const tmInstance* inInstance,
csSDK_int32 inQueryIterationIndex,
tmVideoMode* outVideoMode);
The video sent later in |
SetupDialog |
Display your own modal settings dialog. tmResult (*SetupDialog)(
tmStdParms* ioStdParms,
prParentWnd inParent);
Will only be called if the plugin returned Save any settings to
|
NeedsReset |
Will be called regularly on the first plug-in of a module to allow rebuilding on state changes. tmResult (*NeedsReset)(
const tmStdParms* inStdParms,
prBool* outResetModule);
If the passed in settings differ enough from the created settings, or if the settings on the hardware itself have changed, the transmitter should specify a reset is needed. If |
CreateInstance |
Creates an instance of a transmitter. tmResult (*CreateInstance)(
const tmStdParms* inStdParms,
tmInstance* ioInstance);
Multiple instances may be created at the same time. Allocate |
DisposeInstance |
Dispose an instance of a transmitter. tmResult (*DisposeInstance)(
const tmStdParms* inStdParms,
tmInstance* ioInstance);
Any |
ActivateDeactivate |
Activate or deactivate a transmitter instance, for example during application suspend or switching between monitors. tmResult (*ActivateDeactivate)(
const tmStdParms* inStdParms,
const tmInstance* inInstance,
PrActivationEvent inActivationEvent,
prBool inAudioActive,
prBool inVideoActive);
Transmitters should manage hardware access with these calls, not Audio and video may be independently activated. |
StartPlaybackClock |
Start a clock for playback. tmResult (*StartPlaybackClock)(
const tmStdParms* inStdParms,
const tmInstance* inInstance,
const tmPlaybackClock* inClock);
This will be sent not only when starting playback, but also for scrubbing. Will only be called if the transmitter returned The provided callback must be called each time the time changes, for example once for each frame in response to Start may be called multiple times without a stop in between to update playback parameters, for example if the speed changes during playback. Invoke the callback immediately during If video latency is specified, up to the latency’s amount of frame marked as |
StopPlaybackClock |
Stop a clock for playback. tmResult (*StopPlaybackClock)(
const tmStdParms* inStdParms,
const tmInstance* inInstance);
|
PushVideo |
Asynchronously pushes a video frame to a transmitter instance. tmResult (*PushVideo)(
const tmStdParms* inStdParms,
const tmInstance* inInstance,
const tmPushVideo* inPushVideo);
Will only be called if the transmitter returned The list of video frames passed to the transmitter will be negotiated based on the properties returned from The transmitter is responsible for disposing of all passed in The instance will be created with the properties of the creating video segments which may differ from the actual frames that will be sent to the transmitter. For example, if a sequence is being played at 1/2 resolution, the instance will be created with the dimensions of the sequence, but the frames rendered and sent to the transmitter will be at 1/2. These properties may change by segment, for example if your transmitter supports multiple pixel formats, different segments may render to different pixel formats. |