目前我正在使用 DirectShow.NET ,Microsoft 的 DirectShow (C++) 的非官方 .NET“端口”。
两者都是IAMAnalogVideoDecoder和 IAMTVTuner声明方法 get_AvailableVideoFormats
。官方文档中是这样定义方法的:
HRESULT get_AvailableTVFormats(
[out] long *lAnalogVideoStandard
);
我不清楚这个参数是指向单个 AnalogVideoStandard
的指针,还是一个枚举。不幸的是,我对 C++ 经验不足,无法完全理解这些文档。由于方法名称,我希望它是一个枚举,但它是吗?
我问这个的原因是因为在 .NET 库中,这个参数不是枚举,只是一个值。我觉得这很奇怪,因为我希望在这里获得多种“可用视频格式”。
顺便说一下,AnalogVideoStandard
是一个枚举。
最佳答案
It's not clear to me if this parameter is a pointer to a single AnalogVideoStandard, or a enumeration.
两者都不是1:
Pointer to a variable that receives a bitwise OR of zero or more flags from the AnalogVideoStandard enumeration.
它是一个指向代表零个或多个 AnalogVideoStandard
的值的指针。
This answer应该解释其余的。您应该可以申请 this answer到您的 .NET 代码。
1 从技术上讲,它可以是 C# 中的 枚举值,因为 enum
类型可以应用 FlagsAttribute
它们,但在 C++ 中没有等效项,您只是 |
值,没有特别的宣传。
关于c++ - 这个 C++ [out] 参数是指向枚举的指针,还是只是一个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14601382/