CDynamicOutputPin.StartUsingOutputPin 方法
[与此页面关联的功能 DirectShow 是一项旧功能。 它已被 MediaPlayer、 IMFMediaEngine 和 媒体基金会中的音频/视频捕获取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]
方法 StartUsingOutputPin
获取流式处理操作的引脚访问权限。
语法
virtual HRESULT StartUsingOutputPin();
参数
此方法没有任何参数。
返回值
返回 HRESULT 值。 可能的值包括下表中显示的值。
返回代码 | 说明 |
---|---|
|
成功。 |
|
意外错误。 |
|
筛选器已停止,或者引脚已开始刷新。 |
备注
在调用将数据传送到连接的输入引脚或更改连接媒体类型的任何方法之前,调用此方法。 例如,此规则适用于以下方法:
- CDynamicOutputPin::ChangeOutputFormat
- CDynamicOutputPin::ChangeMediaType
- CDynamicOutputPin::D ynamicReconnect
- CBaseOutputPin::D eliver
- CBaseOutputPin::D eliverEndOfStream
- CBaseOutputPin::D eliverNewSegment
- IMemInputPin::Receive
- IMemInputPin::ReceiveMultiple
- IPin::EndOfStream
- IPin::NewSegment
然后,调用 CDynamicOutputPin::StopUsingOutputPin 方法以释放对引脚的访问权限。
如果引脚被阻止, StartUsingOutputPin
则等待引脚解除阻止。 如果在方法等待时筛选器停止,该方法将立即返回VFW_E_STATE_CHANGED。 引脚维护在没有对 StopUsingOutputPin 进行相应调用的情况下已调用的次数的计数StartUsingOutputPin
。 如果另一个线程尝试阻止该引脚,而此计数不为零,则引脚将其阻塞状态设置为“挂起”。在对 StopUsingOutputPin 的最终调用中,所有流式处理操作完成后,引脚将受阻。
调用此方法时,不要保留 CDynamicOutputPin::m_BlockStateLock 关键部分。 否则,如果引脚被阻止,它永远无法解除阻止,从而导致死锁。
要求
要求 | 值 |
---|---|
标头 |
|
库 |
|