直方图Header 结构 (mfapi.h)
直方图Header 结构描述了MF_CAPTURE_METADATA_HISTOGRAM的 Blob 格式。
语法
typedef struct tagHistogramHeader {
ULONG Size;
ULONG Bins;
ULONG FourCC;
ULONG ChannelMasks;
HistogramGrid Grid;
} HistogramHeader;
成员
Size
此标头的大小 + (HistogramDataHeader + 直方图数据后) * 可用通道数。
Bins
直方图中的箱数。
FourCC
从中收集直方图的颜色空间
ChannelMasks
收集直方图的颜色通道的掩码。
Grid
从中收集直方图的网格。
注解
捕获预览帧时 ,MF_CAPTURE_METADATA_HISTOGRAM 属性包含直方图。
对于 ChannelMasks 字段,以下位掩码指示直方图中的可用通道:
#define MF_HISTOGRAM_CHANNEL_Y 0x00000001
#define MF_HISTOGRAM_CHANNEL_R 0x00000002
#define MF_HISTOGRAM_CHANNEL_G 0x00000004
#define MF_HISTOGRAM_CHANNEL_B 0x00000008
#define MF_HISTOGRAM_CHANNEL_Cb 0x00000010
#define MF_HISTOGRAM_CHANNEL_Cr 0x00000020
每个 blob 可以包含从同一帧的不同区域或不同颜色空间收集的多个直方图。 blob 中的每个直方图都由其自己的 直方图Header 标识。 每个直方图都有自己的区域和关联的传感器输出大小。 对于全帧直方图,该区域将与 HistogramGrid 中指定的传感器输出大小匹配。
所有可用通道的直方图数据都分组在一个直方图下。 每个通道的直方图数据由数据上方的 HistogramDataHeader 标识。 ChannelMask 指示有多少通道以及哪些通道具有直方图数据,即上面定义的受支持 MF_HISTOGRAM_CHANNEL_ 位掩码的按位 OR。 ChannelMask 指示数据用于哪个通道,该通道由任何一个 MF_HISTOGRAM_CHANNEL_ 位掩码标识。
直方图数据是 ULONG 数组,每个条目表示一组音调值下按箱分类的像素数。 数组中的数据应从 bin 0 开始到 bin N-1,其中 N 是直方图中的箱数,例如 ,HistogramBlobHeader.Bins。
对于Windows 10,如果支持KSPROPERTY_CAMERACONTROL_EXTENDED_HISTOGRAM,则必须至少提供具有 Y 通道的全帧直方图,该直方图应是直方图 blob 中的第一个直方图。 请注意, HistogramBlobHeader、 HistogramHeader、 HistogramDataHeader 和直方图数据仅描述 MF_CAPTURE_METADATA_HISTOGRAM 属性的 Blob 格式。 直方图的元数据项结构 (KSCAMERA_METADATA_ITEMHEADER + 所有直方图元数据有效负载) 由驱动程序决定,并且必须对齐 8 字节。
要求
标头 | mfapi.h |