IAMStreamConfig::SetFormat 方法 (strmif.h)
[与此页面关联的功能 DirectShow 是旧版功能。 它已被 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音频/视频捕获所取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能在 Media Foundation 中使用 MediaPlayer、 IMFMediaEngine 和 音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]
方法 SetFormat
在引脚上设置输出格式。
语法
HRESULT SetFormat(
[in] AM_MEDIA_TYPE *pmt
);
参数
[in] pmt
指向指定新格式 的AM_MEDIA_TYPE 结构的指针。
返回值
返回 HRESULT 值。 可能的值包括以下值。
返回代码 | 说明 |
---|---|
|
成功。 |
|
内存不足。 |
|
NULL 指针值。 |
|
此媒体类型无效。 |
|
输入引脚未连接。 |
|
无法设置类型;筛选器未停止。 |
|
无法设置类型;筛选器未停止。 |
注解
此方法指定输出引脚的格式。 如果引脚未连接,它将使用此格式进行下一次连接。 如果引脚已连接,它将尝试使用此格式重新连接。 如果另一个引脚拒绝新类型,方法可能会失败。
如果此方法成功,则对 IPin::EnumMediaTypes 方法的 后续调用将返回新类型,而不会返回其他类型。
在大多数筛选器上,如果筛选器已暂停或正在运行,此方法将失败。 在某些压缩筛选器上,如果筛选器的输入引脚未连接,方法将失败。
使用某些筛选器时, 可以使用 NULL 值 调用此方法,以将引脚重置为其默认格式。
筛选器开发人员:以下说明介绍了如何实现此方法:
如果输出引脚未连接,并且引脚支持指定的媒体类型,则返回S_OK。 存储媒体类型,并在 CBasePin::GetMediaType 方法中将其作为格式编号零提供。 请勿在 CBasePin::CheckMediaType 方法中提供其他格式,并拒绝其他格式。
如果引脚已连接,并且引脚支持媒体类型,请将引脚与该类型重新连接。 如果另一个引脚拒绝新类型,请返回VFW_E_INVALIDMEDIATYPE并还原原始连接。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | strmif.h (包括 Dshow.h) |
Library | Strmiids.lib |