跳转到内容

tmModule 函数

tmModule 函数

对于任何不支持的调用,请填写 0。线程安全性是按模块定义的,同一时间只有一个线程会进入模块。

成员描述
Startup初始化一个发射器,填写基本的插件信息,分配内存以保存用户设置和其他数据。
tmResult (*Startup)(
tmStdParms* ioStdParms,
tmPluginInfo* outPluginInfo);
- 可以返回 tmResult_ContinueIterate 以支持同一模块中的多个传输插件。
- ioPrivatePluginDataioSerializedPluginDataioSerializedPluginDataSize 可以在 Startup 中写入。
Shutdown终止一个发射器。
tmResult (*Shutdown)(
tmStdParms* ioStdParms);
如果之前在 Startup 中分配了 ioPrivatePluginData,请在此处释放。
QueryAudioMode描述发射器支持的音频模式,一次一个。
tmResult (*QueryAudioMode)(
const tmStdParms* inStdParms,
const tmInstance* inInstance,
csSDK_int32 inQueryIterationIndex,
tmAudioMode* outAudioMode);
注意,目前只支持一种音频模式。您可以使用 Audio Suite 在音频格式之间进行转换。
QueryVideoMode描述发射器支持的视频模式,一次一个。
tmResult (*QueryVideoMode)(
const tmStdParms* inStdParms,
const tmInstance* inInstance,
csSDK_int32 inQueryIterationIndex,
tmVideoMode* outVideoMode);
稍后在 PushVideo 中发送的视频将是此处指定的格式之一。
SetupDialog显示您自己的模态设置对话框。
tmResult (*SetupDialog)(
tmStdParms* ioStdParms,
prParentWnd inParent);
只有在插件返回 outHasSetup 时才会调用。
将任何设置保存到 ioSerializedPluginData,如果需要,请更新 ioSerializedPluginDataSize
在此调用之后将调用 NeedsReset,以允许您的发射器有机会重置所有打开的插件并使用新设置重新启动。
NeedsReset将定期在模块的第一个插件上调用,以允许在状态更改时重建。
tmResult (*NeedsReset)(
const tmStdParms* inStdParms,
prBool* outResetModule);
如果传入的设置与创建时的设置差异较大,或者硬件本身的设置发生了变化,发射器应指定需要重置。
如果 outResetModule 设置为 true,所有打开的插件将被关闭并重新启动。
CreateInstance创建一个发射器的实例。
tmResult (*CreateInstance)(
const tmStdParms* inStdParms,
tmInstance* ioInstance);
如果不由播放器驱动,inPlayIDinTimelineID 可能为 0。
可以同时创建多个实例。
分配 ioPrivateInstanceData
DisposeInstance释放一个发射器的实例。
tmResult (*DisposeInstance)(
const tmStdParms* inStdParms,
tmInstance* ioInstance);
应释放任何 ioPrivateInstanceData
ActivateDeactivate激活或停用一个发射器实例,例如在应用程序挂起或切换显示器时。
tmResult (*ActivateDeactivate)(
const tmStdParms* inStdParms,
const tmInstance* inInstance,
PrActivationEvent inActivationEvent,
prBool inAudioActive,
prBool inVideoActive);
发射器应通过这些调用来管理硬件访问,而不是通过 Startup/Shutdown,因为同一设备的多个插件可以同时处于活动状态。
音频和视频可以独立激活。
StartPlaybackClock启动播放时钟。
tmResult (*StartPlaybackClock)(
const tmStdParms* inStdParms,
const tmInstance* inInstance,
const tmPlaybackClock* inClock);
这不仅会在开始播放时发送,还会在擦洗时发送。
只有在发射器返回 outHasClock 时才会调用。
每次时间变化时都必须调用提供的回调,例如在响应 PushVideo 的每一帧时调用一次。
可以在没有停止的情况下多次调用 Start 以更新播放参数,例如在播放期间速度发生变化时。
StartPlaybackClock 期间立即调用回调,并使用负数进行预卷,但不要使用此方法来等待帧。
如果指定了视频延迟,则在调用 StartPlaybackClock 之前,最多会发送标记为 playmode_Playing 的延迟帧数。
StopPlaybackClock停止播放时钟。
tmResult (*StopPlaybackClock)(
const tmStdParms* inStdParms,
const tmInstance* inInstance);
PushVideo异步将视频帧推送到发射器实例。
tmResult (*PushVideo)(
const tmStdParms* inStdParms,
const tmInstance* inInstance,
const tmPushVideo* inPushVideo);
只有在发射器返回 outHasVideo 时才会调用。
传递给发射器的视频帧列表将根据 QueryVideoMode 返回的属性进行协商。
发射器负责释放所有传入的 PPixes
实例将使用创建视频段的属性创建,这些属性可能与实际发送到发射器的帧不同。
例如,如果以 1/2 分辨率播放序列,实例将以序列的尺寸创建,但渲染并发送到发射器的帧将以 1/2 分辨率发送。
这些属性可能会因段而异,例如,如果您的发射器支持多种像素格式,不同的段可能会渲染为不同的像素格式。
StartPushAudio异步将音频样本推送到发射器实例。
tmResult (*StartPushAudio)(
const tmStdParms* inStdParms,
const tmInstance* inInstance,
PrTime inStartTime,
PrTime inOutTime,
prBool inLoop,
prBool inScrubbing,
csSDK_int32* outSamplesPerFrame);
初始化设备以进行后续的 PushAudio() 调用。只有在发射器返回 outPushAudioAvailable 时才会调用。
设备将启用“次要”模式,其中来自“主要”或“时钟”设备的音频被推送到次要设备;对于远程设备非常有用。
StartPlaybackClock() 不同,StartPushAudio() 只调用一次,直到调用 StopPushAudio()
PushAudio异步将音频样本推送到发射器实例。注意:即使同时调用另一个 API,也可能调用 PushAudio()
tmResult (*PushAudio)(
const tmStdParms* inStdParms,
const tmInstance* inInstance,
const tmPushAudio* inPushAudio);
StopPushAudio当通过 PushAudio() 的播放结束时调用 StopPushAudio()
tmResult (*StopPushAudio)(
const tmStdParms* inStdParms,
const tmInstance* inInstance);
SetStreamingStateChangedCallback设置主机回调以通知流状态更改,即当插件由于主机连接或启用更改而变为活动或非活动状态时。
tmResult (*SetStreamingStateChangedCallback)(
const tmStdParms* inStdParms,
void* inContext,
tmStreamingStateChangedCallback inCallback);
EnableStreaming启用/禁用向连接的客户端流式传输,而无需加载或卸载插件。
tmResult (*EnableStreaming)(
const tmStdParms* inStdParms,
prBool inEnabled);
IsStreamingEnabled返回是否启用了流式传输。
tmResult (*IsStreamingEnabled)(
const tmStdParms* inStdParms,
prBool* outEnabled);
IsStreamingActive返回插件是否正在主动流式传输,即流式传输已启用并且插件有活动连接。
tmResult (*IsStreamingActive)(
const tmStdParms* inStdParms,
prBool* outActive);
Shutdown终止一个发射器。
tmResult (*Shutdown)(
tmStdParms* ioStdParms);
如果之前在 Startup 中分配了 ioPrivatePluginData,请在此处释放。