IAMStreamConfig::GetStreamCaps 方法 (strmif.h)
[与此页面关联的功能 DirectShow 是旧版功能。 它已被 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音频/视频捕获所取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能在 Media Foundation 中使用 MediaPlayer、 IMFMediaEngine 和 音频/视频捕获 ,而不是 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 值。 可能的值包括以下值。
返回代码 | 说明 |
---|---|
|
指定的索引过高。 |
|
成功。 |
|
索引无效。 |
|
内存不足。 |
|
NULL 指针值。 |
|
输入引脚未连接。 |
注解
此方法返回两条信息:
- pmt 参数接收一个填充AM_MEDIA_TYPE结构,该结构描述一种支持的输出格式。
- pSCC 参数接收包含其他格式信息的结构。 对于视频, pSCC 接收 VIDEO_STREAM_CONFIG_CAPS 结构。 对于音频,它接收 AUDIO_STREAM_CONFIG_CAPS 结构。
在调用 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; |
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | strmif.h (包括 Dshow.h) |
Library | Strmiids.lib |