gpt4 book ai didi

c++ - Media Foundation 使用 PROPVARIANT 结构设置视频捕获帧率

转载 作者:行者123 更新时间:2023-11-27 22:57:48 25 4
gpt4 key购买 nike

我正在编写一个媒体基础应用程序,我需要在其中设置视频设备的捕获帧速率。我写的函数是这样的:

bool SetRequestedFrameRate(const size_t requestedFramesPerSecond);

我在这里传递一个用户定义的整数作为帧速率参数。我正在关注 https://msdn.microsoft.com/en-us/library/windows/desktop/ff485859(v=vs.85).aspx 上的代码片段:

PROPVARIANT var;
if (SUCCEEDED(pType->GetItem(MF_MT_FRAME_RATE_RANGE_MAX, &var)))
{
hr = pType->SetItem(MF_MT_FRAME_RATE, var);

PropVariantClear(&var);

if (FAILED(hr))
{
goto done;
}

hr = pHandler->SetCurrentMediaType(pType);
}

显然它使用 PROVARIANT 结构来保存帧速率数据。但是如何从我的“const size_t requestedFramesPerSecond”参数构造一个 PROVARIANT 结构?如果我已经有一个保存帧速率的 PROVARIANT,我如何从中检索实际帧速率整数?另外,COM 是否提供了一种方法来比较表示帧速率的两个 PROVARIANT 结构?

请帮忙,谢谢!

最佳答案

正如 Roman 指出的那样,您可以避免处理 PROPVARIANT结构,通过使用实用函数访问 IMFAttributes店铺。然而,正如 #7 在 page you referenced 上指出的那样:

  1. Query the media type for the MF_MT_FRAME_RATE_RANGE_MAX and MF_MT_FRAME_RATE_RANGE_MIN attributes. This values give the range of supported frame rates. The device might support other frame rates within this range.

枚举捕获设备的 native 媒体类型,并简单地选择(选择一个)并将媒体类型重用到set the current media type .否则,您会对与捕获设备的功能不匹配的失败调用感到沮丧。我稍微讨论了帧速率并展示了如何枚举 native 媒体类型 here .祝你好运。

关于c++ - Media Foundation 使用 PROPVARIANT 结构设置视频捕获帧率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30899390/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com