IAMStreamConfig::SetFormat 方法 (strmif.h)

[与此页面关联的功能 DirectShow 是旧版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音频/视频捕获所取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能在 Media Foundation 中使用 MediaPlayerIMFMediaEngine音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

方法 SetFormat 在引脚上设置输出格式。

语法

HRESULT SetFormat(
  [in] AM_MEDIA_TYPE *pmt
);

参数

[in] pmt

指向指定新格式 的AM_MEDIA_TYPE 结构的指针。

返回值

返回 HRESULT 值。 可能的值包括以下值。

返回代码 说明
S_OK
成功。
E_OUTOFMEMORY
内存不足。
E_POINTER
NULL 指针值。
VFW_E_INVALIDMEDIATYPE
此媒体类型无效。
VFW_E_NOT_CONNECTED
输入引脚未连接。
VFW_E_NOT_STOPPED
无法设置类型;筛选器未停止。
VFW_E_WRONG_STATE
无法设置类型;筛选器未停止。

注解

此方法指定输出引脚的格式。 如果引脚未连接,它将使用此格式进行下一次连接。 如果引脚已连接,它将尝试使用此格式重新连接。 如果另一个引脚拒绝新类型,方法可能会失败。

如果此方法成功,则对 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

另请参阅

错误和成功代码

IAMStreamConfig 接口