Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何从AM#U媒体#U类型c+中获取媒体子类型的名称+;_C++_Winapi_Video_Directshow_Fourcc - Fatal编程技术网

C++ 如何从AM#U媒体#U类型c+中获取媒体子类型的名称+;

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

我正在使用directshow从我的网络摄像头抓取帧。在配置网络摄像头的过程中(当我设置分辨率、fps等时),我可以从cam中选择多个选项。(其中47人)

目前,我使用一个for循环,它遍历cam的所有可用设置,我只在控制台中打印值。但是我没有很好的方法来打印媒体子类型的值

有没有好的方法可以打印媒体子类型的实际名称

现在我这样测试它:

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
// ...