我正在尝试列举Logitech相机的视频捕获格式。我正在使用this。
我收到了以下条目
MF_MT_FRAME_SIZE 640 x 480 MF_MT_AVG_BITRATE 6619136 MF_MT_COMPRESSED 1 MF_MT_H264_MAX_MB_PER_SEC 245,0,245,0,0,0,0,0,0,0 MF_MT_MAJOR_TYPE MFMediaType_Video MF_MT_H264_SUPPORTED_USAGES 3 MF_MT_H264_SUPPORTED_RATE_CONTROL_MODES 15 MF_MT_AM_FORMAT_TYPE {2017BE05-6629-4248-AAED-7E1A47BC9B9C} MF_MT_H264_SUPPORTED_SYNC_FRAME_TYPES 2 MF_MT_MPEG2_LEVEL 40 MF_MT_H264_SIMULCAST_SUPPORT 0 MF_MT_MPEG2_PROFILE 256 MF_MT_FIXED_SIZE_SAMPLES 0 MF_MT_H264_CAPABILITIES 33 MF_MT_FRAME_RATE 30 x 1 MF_MT_PIXEL_ASPECT_RATIO 1 x 1 MF_MT_H264_SUPPORTED_SLICE_MODES 14 MF_MT_ALL_SAMPLES_INDEPENDENT 0 MF_MT_FRAME_RATE_RANGE_MIN 30 x 1 MF_MT_INTERLACE_MODE 2 MF_MT_FRAME_RATE_RANGE_MAX 30 x 1 MF_MT_H264_RESOLUTION_SCALING 3 MF_MT_H264_MAX_CODEC_CONFIG_DELAY 1 MF_MT_SUBTYPE MFVideoFormat_H264_ES MF_MT_H264_SVC_CAPABILITIES 1
注意:我已经修改了Media Type Debugging Code中的函数,如下所示。当我运行程序时,我得到了cElement = 10并且我已经将pElemet放入for循环以获取此值MF_MT_H264_MAX_MB_PER_SEC 245,0,245,0,0,0,0,0,0 ,0
case VT_VECTOR | VT_UI1:
{
//DBGMSG(L"<<byte array Value>>");
// Item count for the array.
UINT cElement = var.caub.cElems/sizeof(UINT);
// Array pointer.
UINT* pElement = (UINT*)(var.caub.pElems);
for( int i = 0; i < cElement;i++)
DBGMSG(L"%d,", pElement[i]);
}
我无法弄清楚这些价值意味着什么
MSDN解释了MF_MT_H264_MAX_MB_PER_SEC属性的值:
数据类型UINT32 []存储为UINT8 []
因此,字节数组是预期的格式。
该属性的值是UINT32值的数组,它对应于UVC 1.5 H.264视频格式描述符中的以下字段。
你有:
dwMaxMBperSecOneResolutionNoScalability
指定允许不可扩展的高级视频编码(AVC)流的最大宏块处理速率,当所有层具有相同的分辨率时,在所有层上求和。
16056565
dwMaxMBperSecTwoResolutionsNoScalability
指定允许不可伸缩的AVC流的最大宏块处理速率,当所有层由两个不同的分辨率组成时,在所有层上求和。
0
媒体类型GUID“2017be05-6629-4248-aaed-7e1a47bc9b9c”表示FORMAT_UVCH264Video然后您可以将pbFormat结构转换为KS_H264VIDEOINFO *