此手动测试运行跨以下 API 的测试用例:IDXVAHD_VideoProcessor::SetVideoProcessBltState、IDXVAHD_VideoProcessor::GetVideoProcessBltState、IDXVAHD_VideoProcessor::SetVideoProcessStreamState、IDXVAHD_VideoProcessor::GetVideoProcessStreamState 和 IDXVAHD_VideoProcessor::VideoProcessBltHD。
有关所有测试用例的详细信息,请参阅下面的“支持信息”一节。 屏幕上显示了大部分测试用例,而一个实用工具对要比较的帧进行后处理。 大部分测试用例强制要求软件处理的帧和硬件处理的帧之间的峰值信噪比 (PSNR) > 20.0f。 对于某些测试用例,由于软件实现中缺少对某些筛选器和功能的支持,该阈值会降低。
大多数情况下,此测试只显示一个类似于滚动信息区的窗口,该窗口会递增通过计数和失败计数,并显示正在循环访问的测试用例变量。
测试详细信息
规范 |
|
平台 |
|
支持的版本 |
|
预计运行时间(以分钟为单位) | 2 |
类别 | 兼容性 |
超时(以分钟为单位) | 120 |
需要重启 | false |
需要特殊配置 | false |
类型 | automatic |
其他文档
此功能区域中的测试可能会有其他文档,包括先决条件、设置和故障排除信息,这些内容可在以下主题中找到:
运行测试
在运行测试之前,请按照如下测试要求中所述完成测试设置:图形适配器或芯片组测试先决条件。
此外,此测试需要以下软件:
支持 D3D9Caps.Caps3 D3DCAPS3_DXVAHD 的显示驱动程序。 具体而言:
D3D9 支持公开 D3DCAPS3_DXVAHD。
所需的输出格式:D3DFMT_X8R8G8B8、D3DFMT_A8R8G8B8。
所需的输入格式:支持 D3DFMT_X8R8G8B8、D3DFMT_A8R8G8B8、D3DFMT_YUY2、D3DFMT_AYUV 和任何解码呈现器目标。
dxvahdsw.dll。
故障排除
有关 HLK 测试失败的常规故障排除,请参阅排查 Windows HLK 测试失败问题。
有关故障排除信息,请参阅排查 Device.Graphics 测试问题。
大多数情况下,此测试只显示一个类似于滚动信息区的窗口,该窗口会递增通过计数和失败计数,并显示正在循环访问的测试用例变量。
此测试将返回 Pass 或 Fail。 如果驱动程序未公开 D3DCAPS3_DXVAHD,则测试可能会返回 SKIP。 可以根据流状态支持和支持的反转电视电影能力、筛选器能力、功能能力以及格式跳过其他测试用例。 要查看测试详细信息,请查看 DTM Studio 中的测试日志。
更多信息
在每次调用 SetVideoProcessBltState 后,调用相应的 GetVideoProcessBltState。 该调用可确保正确报告,然后处理帧并呈现与参考帧的比较以确保准确性。 对于给定 BltState 的每个完整循环,将循环大多数 BltState,然后针对每个有效的 StreamState 再次循环。 但是,某些排列不是必需的。
验证传递给 SetVideoProcessBltState 和 GetVideoProcessBltState 的无效数据类型是否返回 E_INVALIDARG。
DXVAHD_BLT_STATE_TARGET_RECT_DATA
验证将数据限制为小于输出曲面的矩形是否导致正确缩放。
验证大于输出曲面的矩形是否导致帧扩展。
验证已设置目标矩形数据并将 Enable 标记为 false 时,是否使用整个区域。
使用目标矩形数据处理一个帧,并将 Enable 标记为 false。 然后使用已收缩、扩展或移动的目标矩形数据处理另一个帧,并将 Enable 标记为 true。 验证曲面是否相应地缩放或移动。
验证默认值(未设置任何数据)是否导致使用整个曲面。
DXVAHD_BLT_STATE_BACKGROUND_COLOR_DATA
验证默认值是否为“黑色 RGB”。
如果 YCbCr 设置为 true,则验证是否真实显示背景的正确颜色范围。
验证“橙色 RGB (255,165,0)”、默认黑色值以及 RGB 和 YcbCr 的 alpha 值
使用 DXVAHD_BLT_STATE_OUTPUT_COLOR_SPACE_DATA
- 验证以下事项:是否使用 YCbCr 的背景色并且 ColorSpaceData 为完整 RGB_Range,是否忽略全范围 RGB 并且按指定的矩阵和 xvYCC 设置使用正确的有限范围。
使用 DXVAHD_BLT_STATE_ALPHA_FILL
- 验证跨不同的背景色使用 DXVAHD_ALPHA_FILL_MODE_BACKGROUND 时给定背景色的 alpha 值。
DXVAHD_BLT_STATE_OUTPUT_COLOR_SPACE_DATA
验证“默认用法”、RGB_Range、YCbCr_Matrix 和 YCbCr_xvYCC 是否全部设置为 0。
验证限制 RGB_Range 能否成功将颜色范围限制为 16..235。
验证 BT.709 是否相应地正确增加了亮度和色度。
xvYCC 成功扩展了颜色范围。 此验证是一个特殊用例,因为参考视频处理器不支持除 XRGB 以外的任何输出曲面。 此验证很难,稍后会介绍相关过程。
验证 DXVAHD_VPDEVCAPS.DeviceCaps 是否不具有 DXVAHD_DEVICE_CAPS_xvYCC。 验证 YCbCr_xvYCC 是否不会调整任何设置,并且确实被忽略。
容差最初是灵活的,但像素精度的起始百分比为 90%。
DXVAHD_BLT_STATE_ALPHA_FILL_DATA
验证不是 Alpha 格式的输出曲面是否保持不变。
验证 Alpha 格式的输出曲面是否成功将 alpha 值应用于颜色。
验证默认模式是否正确地调整背景的 Alpha 值。
测试非 Alpha 格式的输入曲面和 Alpha 格式的输出曲面。 以灵活的精度(最初以 90% 的准确性)再次验证 alpha 值的正确性。
DXVAHD_BLT_STATE_CONSTRICTION_DATA
由于引用驱动程序中缺少对 M2 压缩过程的支持,因此必须在直接一对一比较之外对测试用例进行验证,以确保下采样大小有效。
验证是否正确下采样到输出曲面。
如果大小大于目标,请验证压缩是否限制为目标矩形的大小。
尝试将大小设置为 0,* 和 *, 0,并验证返回值是否为 E_INVALIDARG。
如果 DXVAHD_VPDEVCAPS.FeatureCaps 未公开 DXVAHD_FEATURE_CAPS_CONSTRICTION,则验证尝试设置压缩时是否返回错误 E_INVALIDARG。
验证默认值是否表示“已禁用”。 如果标记为“已禁用”并且指定了大小,则会忽略大小值。
DXVAHD_BLT_STATE_PRIVATE_DATA
传递无效的 Guid、DataSize 和 pData。 验证驱动程序能够相应地处理无效输入。
Null pData 会检索专用 blt 状态的正确大小。
验证传递给 SetVideoProcessStreamState 和 GetVideoProcessStreamState 的无效数据类型是否返回 E_INVALIDARG。
DXVAHD_STREAM_STATE_D3DFORMAT_DATA
验证 GetVideoProcessorInputFormats 报告的所有受支持的格式。
验证 GetVideoProcessorInputFormats 中不支持的格式。
验证默认 D3DFORMAT 是否为 D3DFMT_UNKNOWN。
DXVAHD_STREAM_STATE_FRAME_FORMAT_DATA
验证默认值是否为“Progressive”。
验证逐行扫描和隔行扫描格式是否相应地显示。
如果 DXVAHD_INPUT_FORMAT_CAPS_RGB_INTERLACED 报告为不受 DXVAHD_VPDEVCAPS.InputFormatCaps 支持,请验证使用 DXVAHD_FRAME_FORMAT_INTERLACED_* 时是否默认为使用 Progressive。
DXVAHD_STREAM_STATE_INPUT_COLOR_SPACE_DATA
验证默认值。
验证限制 RGB_Range 能否成功将颜色范围限制为 16..235。
如果 DXVAHD_VPDEVCAPS.InputFormatCaps 不支持 DXVAHD_INPUT_FORMAT_CAPS_RGB_LIMITED_RANGE,请验证当 RGB_Range 为 1 时它是否会被忽略并且使用全范围。
- 无法通过与引用进行一对一比较来进行有限范围验证。 对白色和黑色的某些宽松验证也许可以验证是否已相应地限制颜色范围。
验证 BT.709 是否正确增加了亮度和色度采样。
xvYCC 成功扩展了颜色范围。
验证 DXVAHD_VPDEVCAPS.DeviceCaps 是否报告为不支持 xvYCC。
如果可能,并且指定了处理,则验证颜色转换性能是否已提高。
验证 DXVAHD_VPDEVCAPS.DeviceCaps 是否不具有 DXVAHD_DEVICE_CAPS_xvYCC。 验证 YCbCr_xvYCC 是否不会调整任何设置,并且确实被忽略。
DXVAHD_STREAM_STATE_OUTPUT_RATE_DATA
测试并验证默认值(具体来说,发生了内插)。
测试 NormalRate 和 HalfRate,并验证 NormalRate 是否为 2:1(隔行扫描与逐行扫描之比),HalfRate 是否为 1:1(隔行扫描与逐行扫描之比)。
验证所有自定义比率(如果 GetVideoProcessorCustomRates 公开了任何自定义比率)。
指定反转电视电影比率
- 参考视频处理器中不提供 ITELECINE 支持,因此无法进行直接比较。 要进行验证,将生成一个电视电影帧并将其传递到引用。 然后,将处理非电视电影帧,并将其与电视电影帧提供的帧相比较。
测试不支持的自定义比率,包括内插和重复。
以 NormalRate 和 HalfRate 测试不支持的自定义比率。 验证是否返回错误 E_INVALIDARG。
验证是否未成功设置受支持的自定义比率,除非指定了 DXVAHD_OUTPUT_RATE_CUSTOM。
DXVAHD_STREAM_STATE_SOURCE_RECT_DATA
验证将数据限制为小于输入曲面的矩形是否导致正确缩放。
验证大于输入曲面的矩形是否导致剪裁区域变为透明。
验证已设置源矩形数据并将 Enable 标记为 false 时,是否使用整个区域。
使用源矩形数据处理一个帧并将 Enable 标记为 false 后,使用源矩形数据处理第二个帧并将 Enable 标记为 true,验证曲面是否可见并根据矩形大小缩放到输入曲面。
验证默认值(未设置任何数据)是否导致使用整个曲面。
DXVAHD_STREAM_STATE_DESTINATION_RECT_DATA
验证将数据限制为小于输出曲面的矩形是否导致正确缩放。
验证大于输出曲面的矩形是否导致剪裁区域被剪裁。
验证已设置目标矩形数据并将 Enable 标记为 false 时,是否使用整个区域。
使用目标矩形数据处理一个帧并将 Enable 标记为 false 后,使用目标矩形数据处理第二个帧并将 Enable 标记为 true,验证输出曲面是否可见并根据矩形大小缩放到输出曲面。
验证默认值(未设置任何数据)是否导致使用整个曲面。
DXVAHD_STREAM_STATE_ALPHA_DATA
所有 Alpha 测试用例都需要多个视频流,因此将这些测试用例乘以 2。
验证默认值 alpha 是否已禁用。
验证低、中和高范围 alpha 混合,并验证透明度。
验证超出范围的浮点 alpha 值在处理过程中是否失败。
像素精度的容差级别为 10%。 精度应大于或等于 90%。
DXVAHD_STREAM_STATE_PALETTE_DATA
如果未设置调色板项,则验证 Null 值是否返回零。
在设置了特定数量的调色板项后,验证 Null 值是否返回预期数量的调色板项。
测试 4 位和 8 位托盘化 fourCC 格式。
设置调色板项的 ARGB 和 AYUV 混合数组,并验证是否成功。
验证与 alpha 混合一起使用时是否正确进行混合。
像素精度的容差级别为 10%。 精度应大于或等于 90%。
DXVAHD_STREAM_STATE_CLEAR_RECT_DATA
如果 DXVAHD_VPDEVCAPS. FeatureCaps 未公开 DXVAHD_FEATURE_CAPS_CLEAR_RECT,请验证尝试使用 ClearRects 时是否返回错误 E_INVALIDARG。
验证“默认清除矩形状态”是否已禁用并且不可见。
验证当 CLEAR_RECT 超出范围时目标矩形是否不可见。
验证当 CLEAR_RECT 超出范围时是否成功剪裁目标矩形。
DXVAHD_STREAM_STATE_LUMA_KEY_DATA
如果 DXVAHD_VPDEVCAPS. FeatureCaps 未公开 DXVAHD_FEATURE_CAPS_LUMA_KEY,请验证是否返回错误 E_INVALIDARG。
当使用 RGB 输入流,并且 DXVAHD_VPDEVCAPS. FeatureCaps 未公开 DXVAHD_FEATURE_CAPS_RGB_LUMA_KEY 时,请验证是否未忽略任何亮度。
验证 Enable 是否设置为 false,并验证亮度是否已被忽略。
验证超出范围的下限值和上限值是否导致设置状态期间失败 (E_INVALIDARG)。
验证默认值是否为“已禁用亮度”,并验证下限值/上限值是否为 0。
像素精度的容差级别为 10%。 精度应大于或等于 90%。
DXVAHD_STREAM_STATE_FILTER_DATA
验证默认值(Disabled 和 DXVAHD_FILTER_RANGE_DATA.Default)。
验证当设置为 Enabled 且级别为 Default 时,提供的流是否与启用筛选器时相同。
验证级别是否低于或大于所报告的 GetVideoProcessorFilterRange。 如果大于该值,则会失败并显示 E_INVALIDARG。
像素精度的容差级别为 10%。 精度应大于或等于 90%。
DXVAHD_STREAM_STATE_PRIVATE_DATA
传递无效的 Guid、DataSize 和 pData。 验证驱动程序能够相应地处理无效输入。
Null pData 会检索专用 blt 状态的正确大小。
验证以下曲面类型的 VideoProcessBltHD 到 pOutputSurface 是否成功。
使用的默认曲面将为交换链。
DXVAHD_SURFACE_TYPE_VIDEO_OUTPUT
RENDERTARGET
覆盖层交换链。
所有其他类型的交换链。
标准支持的输出和输入曲面像素格式,以及报告为受给定设备支持的输出和输入曲面格式。
在处理帧 0 之前,验证 OutputFrame 值为 1 或更大是否会导致 E_INVALIDARG。
在不更改任何流数据的情况下,连续两次验证处理 OutputFrame 0 是否会导致帧暂停。
在更改流数据的情况下,连续两次验证处理 OutputFrame 0 是否仍会导致提供缓存数据(帧暂停)。
验证最大流数、中间流数和最小流数的处理是否成功。
验证大于或小于 pStreams 数的流计数是否会导致 E_INVALIDARG。
验证流计数为零是否会导致 E_INVALIDARG。
DXVAHD_STREAM_DATA:正常速率/半速逐行扫描、2/1 速率逐行扫描、正常速率隔行扫描、半速隔行扫描、4/5 速率隔行扫描
启用一个流,并验证提供的内容。
两个流,启用主流并禁用子流。 验证提供的内容。
两个流,启用主流和子流。 验证提供的内容。
三个流,启用两个用于组成主流的流,并禁用第三个流(用作子流)。 验证提供的内容。
三个流,启用两个用于组成主流的流的其中一个,禁用另一个流,并禁用第三个流(用作子流)。 验证提供的内容。
三个流,启用两个用于组成主流的流,并启用第三个流(用作子流)。 验证提供的内容。
三个流,启用两个用于组成主流的流的其中一个,禁用另一个流,并启用第三个流(用作子流)。 验证提供的内容。
PastFrames 和 FutureFrames 超出范围。
PastFrames 和 FutureFrames 无效,根据给定的 PastSurfaces 和 FutureSurfaces。
PastSurfaces 和 FutureSurfaces 为 Null,具有非零 PastFrames 和 FutureFrames。
DXVAHD_SURFACE_TYPE_VIDEO_INPUT、DXVAHD_SURFACE_TYPE_VIDEO_INPUT_PRIVATE、解码呈现器目标以及跨 ppPastSurfaces、pInputSurfaces 和 ppFutureSurfaces 的离屏普通曲面的所有排列。
验证不受支持的曲面类型的 ppPastSurfaces、pInputSurfaces 和 ppFutureSurfaces 是否返回 E_INVALIDARG。
验证分配给类型不是 DXVAHD_VPDEVCAPS.InputPool 的内存池的曲面是否返回 E_INVALIDARG。
命令语法
命令选项 | 说明 |
---|---|
DXVAHDVideoProcessing VideoProcessing |
如果未使用任何选项,则测试将枚举除某些极端无效参数测试用例以外的所有测试用例。 |
TestPriority:[0, 1, 2] |
默认情况下以优先级 1 进行测试,但优先级 2 将测试每个排列,包括极端无效参数测试用例。 0 用于 BVT 级别。 |
SoftwareOnly |
仅测试视频处理器的软件实现。 这主要用于驱动程序支持测试用例之前的初始测试。 |
SaveAllFrames |
此测试将无效帧的硬编码保存计数设置为 100,如果你希望保存所有无效帧,则使用此标志。 适用于较高帧计数会导致测试用例失败的情况。 |
LogLevel:[0, 1, 2] |
此测试能够记录非常详细的日志。 默认情况下,级别设置为 0,但级别 1 将为每个测试用例收集更多日志记录信息,包括许多流状态/blt 状态集。 级别 2 将收集所有调整后的流状态和 blt 状态,以及任何配置信息。 |
文件列表
文件 | 位置 |
---|---|
DXVAHDVideoProcessing.exe |
[testbinroot]\nttest\windowstest\graphics\d3d\func\ |
Dxvahdsw.dll |
[osbinroot]\nttest\windowstest\graphics\dxva\ |
参数
参数名称 | 参数说明 |
---|---|
LLU_NetAccessOnly | 用于网络访问的 LLU |
ConfigDisplayCommandLine | ConfigDisplay 的自定义命令行。 默认值:徽标 |
MODIFIEDCMDLINE | 测试可执行文件的其他命令行参数 |