IAMStreamConfig::GetStreamCaps 方法 (strmif.h)

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

GetStreamCaps 方法检索一组格式功能。

语法

HRESULT GetStreamCaps(
  [in]  int           iIndex,
  [out] AM_MEDIA_TYPE **ppmt,
  [out] BYTE          *pSCC
);

参数

[in] iIndex

指定要检索的格式功能,从零开始编制索引。 若要确定引脚支持的功能数,请调用 IAMStreamConfig::GetNumberOfCapabilities 方法。

[out] ppmt

指向 AM_MEDIA_TYPE 结构的指针的地址。 方法分配结构并使用媒体类型填充它。

[out] pSCC

指向调用方分配的字节数组的指针。 对于视频,请使用 VIDEO_STREAM_CONFIG_CAPS 结构 (请参阅备注) 。 对于音频,请使用 AUDIO_STREAM_CONFIG_CAPS 结构。 若要确定数组的所需大小,请调用 GetNumberOfCapabilities 方法。 大小在 piSize 参数中返回。

返回值

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

返回代码 说明
S_FALSE
指定的索引过高。
S_OK
成功。
E_INVALIDARG
索引无效。
E_OUTOFMEMORY
内存不足。
E_POINTER
NULL 指针值。
VFW_E_NOT_CONNECTED
输入引脚未连接。

注解

此方法返回两条信息:

注意 已弃用 VIDEO_STREAM_CONFIG_CAPS 结构来配置视频设备。 尽管调用方必须分配缓冲区,但在方法返回后,它应忽略内容。 捕获设备将通过 pmt 参数返回其支持的格式。
 
若要配置输出引脚以使其使用此格式,请调用 IAMStreamConfig::SetFormat 方法并传入 pmt 的值。

在调用 SetFormat 之前,可以使用 pSCC 中的信息修改 pmt 中的 AM_MEDIA_TYPE 结构。 例如,音频引脚可能会在 pmt 参数中返回 44 kHz、16 位立体声的默认媒体类型。 根据 AUDIO_STREAM_CONFIG_CAPS 结构中返回的值,可以在调用 SetFormat 之前将此格式更改为 8 位单声道。

方法为 pmt 参数中返回的 AM_MEDIA_TYPE 结构分配内存。 调用方必须释放内存,包括格式块。 可以在基类库中使用 DeleteMediaType 帮助程序函数。 调用方必须为 pSCC 参数分配内存。

在某些压缩筛选器上,如果筛选器的输入引脚未连接,此方法将失败。

筛选器开发人员:有关实现此方法的详细信息,请参阅 公开捕获和压缩格式

示例

以下示例检索视频输出引脚上第一个受支持的格式, (索引为零) ,然后在引脚上设置此格式。

C++
int iCount, iSize;BYTE *pSCC = NULL;AM_MEDIA_TYPE *pmt;

hr = pConfig-GetNumberOfCapabilities> (&iCount,&iSize) ;

pSCC = new BYTE[iSize];如果 (pSCC == NULL) { // TODO:内存不足错误。 }

// Get the first format. hr = pConfig->GetStreamCaps(0, &pmt, pSCC)); if (hr == S_OK) { // TODO: Examine the format. If it's not suitable for some // reason, call GetStreamCaps with the next index value (up // to iCount). Otherwise, set the format: hr = pConfig->SetFormat(pmt); if (FAILED(hr)) { // TODO: Error handling. } DeleteMediaType(pmt); } delete [] pSCC;

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 strmif.h (包括 Dshow.h)
Library Strmiids.lib

另请参阅

错误和成功代码

IAMStreamConfig 接口