C++ 如何从AM#U媒体#U类型c+中获取媒体子类型的名称+;
我正在使用directshow从我的网络摄像头抓取帧。在配置网络摄像头的过程中(当我设置分辨率、fps等时),我可以从cam中选择多个选项。(其中47人) 目前,我使用一个for循环,它遍历cam的所有可用设置,我只在控制台中打印值。但是我没有很好的方法来打印媒体子类型的值 有没有好的方法可以打印媒体子类型的实际名称 现在我这样测试它:C++ 如何从AM#U媒体#U类型c+中获取媒体子类型的名称+;,c++,winapi,video,directshow,fourcc,C++,Winapi,Video,Directshow,Fourcc,我正在使用directshow从我的网络摄像头抓取帧。在配置网络摄像头的过程中(当我设置分辨率、fps等时),我可以从cam中选择多个选项。(其中47人) 目前,我使用一个for循环,它遍历cam的所有可用设置,我只在控制台中打印值。但是我没有很好的方法来打印媒体子类型的值 有没有好的方法可以打印媒体子类型的实际名称 现在我这样测试它: if(mT->subtype == MEDIASUBTYPE_MJPG){ printf(" MEDIASUBTYPE_MJPG "); } e
if(mT->subtype == MEDIASUBTYPE_MJPG){
printf(" MEDIASUBTYPE_MJPG ");
} else {
printf(" ----- ");
}
(mT=AM\U媒体类型)
这不是一个好办法。我想使用打印子类型实际名称的东西
谢谢 媒体子类型只是一个
GUID
标识符,没有名字。如果不与您知道的值进行直接比较,就无法将其转换为用户友好的字符串
这里只有一个例外,它是从四字符代码(FourCC)映射的标识符。请参阅中的MSDN中有关这些的详细信息,您可能希望执行以下操作:
if(memcmp(&mT->subtype.Data2, &MEDIASUBTYPE_MJPG.Data2, sizeof (GUID) - offsetof(GUID, Data2)) == 0)
{
// NOTE: This is FourCC!
CHAR pszValue[5];
*((UINT32*) pszValue) = mT->subtype.Data1;
pszValue[4] = 0;
_tprintf(_T("Media Subtype is FourCC %hs\n"), pszValue);
} else
// ...
媒体子类型只是一个
GUID
标识符,没有名字。如果不与您知道的值进行直接比较,就无法将其转换为用户友好的字符串
这里只有一个例外,它是从四字符代码(FourCC)映射的标识符。请参阅中的MSDN中有关这些的详细信息,您可能希望执行以下操作:
if(memcmp(&mT->subtype.Data2, &MEDIASUBTYPE_MJPG.Data2, sizeof (GUID) - offsetof(GUID, Data2)) == 0)
{
// NOTE: This is FourCC!
CHAR pszValue[5];
*((UINT32*) pszValue) = mT->subtype.Data1;
pszValue[4] = 0;
_tprintf(_T("Media Subtype is FourCC %hs\n"), pszValue);
} else
// ...