DXVA 고화질 비디오 처리 - VideoProcessing
이 수동 테스트는 IDXVAHD_VideoProcessor::SetVideoProcessBltState, IDXVAHD_VideoProcessor::GetVideoProcessBltState, IDXVAHD_VideoProcessor::SetVideoProcessStreamState, IDXVAHD_VideoProcessor::GetVideoProcessStreamState 및 IDXVAHD_VideoProcessor::VideoProcessBltHD에서 테스트 사례를 실행합니다.
모든 테스트 사례에 대한 자세한 내용은 아래의 “지원 정보” 섹션을 참조하세요. 유틸리티가 비교를 위해 프레임을 사후 처리하는 동안 대부분의 테스트 사례가 화면에 표시됩니다. 대부분의 테스트 사례는 소프트웨어 및 하드웨어 처리 프레임 사이에 > 20.0f PSNR을 적용합니다. 일부 테스트 사례의 경우 소프트웨어 구현에서 일부 필터 및 기능을 지원하지 않아 임계값이 낮아집니다.
대부분의 경우 테스트는 통과 실패 횟수를 증가시키고 반복되는 테스트 사례 변수를 보여 주는 시세표와 같은 창만 표시합니다.
테스트 세부 정보
사양 |
|
플랫폼 |
|
지원되는 릴리스 |
|
예상 실행 시간(분) | 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 Testing 문제 해결을 참조하세요.
대부분의 경우 이 테스트는 통과 실패 횟수를 증가시키고 반복되는 테스트 사례 변수를 보여 주는 시세표와 같은 창만 표시합니다.
이 테스트는 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
Default가 RGB Black인지 확인합니다.
YCbCr이 true로 설정된 경우 배경에 대한 올바른 색 범위가 실제로 표시되는지 확인합니다.
RGB 및 YcbCr 모두에 대해 알파 값을 사용하여 기본 검은색과 함께 RGB Orange(255,165, 0)를 확인합니다.
DXVAHD_BLT_STATE_OUTPUT_COLOR_SPACE_DATA 사용
- 배경색 YCbCr이 사용되고 ColorSpaceData가 Full RGB_Range인 경우 Full 범위 RGB가 무시되고 지정된 행렬 및 xvYCC 설정에 따라 올바른 제한된 범위가 사용되는지 확인합니다.
DXVAHD_BLT_STATE_ALPHA_FILL 사용
- 다른 배경색에서 DXVAHD_ALPHA_FILL_MODE_BACKGROUND가 사용되는 경우 지정된 배경색의 알파 값을 확인합니다.
DXVAHD_BLT_STATE_OUTPUT_COLOR_SPACE_DATA
Default Usage, RGB_Range, YCbCr_Matrix 및 YCbCr_xvYCC가 모두 0으로 설정되어 있는지 확인합니다.
Limiting 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 형식의 출력 화면이 알파 값을 색에 성공적으로 적용하는지 확인합니다.
기본 모드가 Background Alpha 값을 올바르게 조정하는지 확인합니다.
Alpha 형식의 출력 화면을 사용하여 NonAlpha 형식의 입력 화면을 테스트합니다. 처음에는 90%의 정확도로 다시 유연한 정밀도로 알파 정확성의 유효성을 검사합니다.
DXVAHD_BLT_STATE_CONSTRICTION_DATA
M2 수축 과정에 대한 참조 드라이버의 지원이 부족하기 때문에 테스트 사례는 유효한 다운 샘플링된 크기에 대한 직접 1:1 비교 이외의 방식을 통해 유효성을 검사해야 합니다.
출력 화면에 대한 올바른 다운 샘플링을 확인합니다.
크기가 대상보다 큰 경우 수축이 대상 직사각형의 크기로 제한되는지 확인합니다.
크기를 0,*로 설정해 봅니다. *,0은 반환 값 E_INVALIDARG의 유효성을 검사합니다.
DXVAHD_VPDEVCAPS.FeatureCaps가 DXVAHD_FEATURE_CAPS_CONSTRICTION을 노출하지 않을 경우 Constriction을 설정하려고 하면 오류 E_INVALIDARG가 반환되는지 확인합니다.
Default Value가 disabled를 표시하는지 확인합니다. disabled가 플래그로 지정되고 크기가 지정된 경우 크기 값은 무시됩니다.
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
Default Value가 Progressive인지 확인합니다.
그에 따라 Progressive 및 Interlaced 형식이 표시되는지 확인합니다.
DXVAHD_INPUT_FORMAT_CAPS_RGB_INTERLACED가 DXVAHD_VPDEVCAPS.InputFormatCaps에서 지원되는 것으로 보고되지 않는 경우 DXVAHD_FRAME_FORMAT_INTERLACED_*를 사용할 경우 기본적으로 Progressive가 사용될지 확인합니다.
DXVAHD_STREAM_STATE_INPUT_COLOR_SPACE_DATA
기본값을 확인합니다.
Limiting RGB_Range가 색 범위를 16..235로 제한하는지 확인합니다.
DXVAHD_VPDEVCAPS.InputFormatCaps가 DXVAHD_INPUT_FORMAT_CAPS_RGB_LIMITED_RANGE에 대한 지원을 보고하지 않을 경우 RGB_Range가 1일 때 무시되고 FullRange가 사용되는지 확인합니다.
- 제한된 범위 유효성 검사는 참조와의 1: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가 노출되는 경우 모든 CustomRates를 확인합니다.
인버스 텔레사인 속도를 지정합니다.
- ITELECINE 지원은 참조 비디오 프로세서에서 사용할 수 없으므로 직접 비교는 불가능합니다. 유효성 검사를 위해 텔레사인 프레임이 생성되어 참조에 전달됩니다. 그런 다음, 텔레사인 이외 프레임이 처리되고 텔레사인 프레임에서 제공하는 프레임과 비교됩니다.
보간되고 반복되는 지원되지 않는 CustomRate를 테스트합니다.
NormalRate 및 HalfRate 둘 다에서 지원되지 않는 CustomRate를 테스트합니다. 오류 E_INVALIDARG가 반환되는지 확인합니다.
DXVAHD_OUTPUT_RATE_CUSTOM이 지정하지 않으면 지원되는 CustomRate가 성공적으로 설정되지 않는지 확인합니다.
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
모든 알파 테스트 사례에는 둘 이상의 비디오 스트림이 필요하므로 이러한 테스트 사례에 2를 곱합니다.
기본값 알파가 disabled인지 확인합니다.
Low, Mid 및 High 범위 알파 혼합을 확인하고 투명도를 확인합니다.
처리 중에 범위를 벗어난 부동 알파 값이 실패하는지 확인합니다.
픽셀 정밀도의 허용 오차 수준은 10%입니다. 정밀도는 90% 정확도보다 크거나 같아야 합니다.
DXVAHD_STREAM_STATE_PALETTE_DATA
색상표 항목이 설정되지 않은 상태에서 Null 값이 0을 반환하는지 확인합니다.
특정 개수의 색상표 항목이 설정된 상태에서 Null 값이 예상되는 색상표 항목 수를 반환하는지 확인합니다.
4비트 및 8비트 색상표에 지정된 fourCC 형식을 모두 테스트합니다.
ARGB 및 AYUV 혼합 색상표 항목 배열을 모두 설정하여 성공하는지 검증합니다.
알파 혼합과 함께 사용할 때 올바른 혼합이 발생하는지 확인합니다.
픽셀 정밀도의 허용 오차 수준은 10%입니다. 정밀도는 90% 정확도보다 크거나 같아야 합니다.
DXVAHD_STREAM_STATE_CLEAR_RECT_DATA
DXVAHD_VPDEVCAPS. FeatureCaps가 DXVAHD_FEATURE_CAPS_CLEAR_RECT를 노출하지 않으면 ClearRects를 사용하려고 할 때 오류 E_INVALIDARG가 반환되는지 확인합니다.
Default CLEAR RECT 상태가 disabled이고 표시되지 않는지 확인합니다.
destrect 외부의 CLEAR_RECT가 표시되지 않는지 확인합니다.
destrect 외부의 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로 설정되어 있는지 확인합니다. 이 경우 광도는 무시됩니다.
하위 및 상위에 대해 범위를 벗어난 값을 지정하면 Set 상태(E_INVALIDARG) 동안 오류가 발생합니다.
기본값이 Luma disabled이고 Lower/Upper 값이 0인지 확인합니다.
픽셀 정밀도의 허용 오차 수준은 10%입니다. 정밀도는 90% 정확도보다 크거나 같아야 합니다.
DXVAHD_STREAM_STATE_FILTER_DATA
기본값(Disabled 및 DXVAHD_FILTER_RANGE_DATA.Default)을 확인합니다.
Enabled 및 Level이 Detault일 때 표시된 스트림이 필터를 사용하도록 설정할 때와 동일한지 확인합니다.
GetVideoProcessorFilterRange보다 작거나 큰 Level이 보고되었는지 확인합니다. Level이 보다 크면 E_INVALIDARG를 나타내며 실패합니다.
픽셀 정밀도의 허용 오차 수준은 10%입니다. 정밀도는 90% 정확도보다 크거나 같아야 합니다.
DXVAHD_STREAM_STATE_PRIVATE_DATA
잘못된 Guid, DataSize 및 pData를 전달합니다. 드라이버가 적절하게 처리하는지 검증합니다.
Null pData는 프라이빗 blt 상태의 올바른 크기를 검색합니다.
VideoProcessBltHD를 아래 화면 형식의 pOutputSurface로 설정할 경우 성공하는지 확인합니다.
사용되는 기본 화면은 스왑 체인입니다.
DXVAHD_SURFACE_TYPE_VIDEO_OUTPUT
RENDERTARGET
오버레이 스왑 체인입니다.
다른 모든 형식의 스왑 체인입니다.
표준 지원 출력 및 입력 화면 픽셀 형식뿐만 아니라 지정된 디바이스에 대해 지원되는 것으로 보고된 출력 및 입력 화면 형식입니다.
프레임 0이 처리되기 전에 1 이상의 OutputFrame 값을 사용할 경우 E_INVALIDARG가 표시되는지 확인합니다.
스트림 데이터 변경 없이 OutputFrame 0을 한 행에 두 번 처리할 경우 프레임이 일시 중지되는지 검증합니다.
스트림 데이터가 변경된 상태에서 OutputFrame 0을 두 번 처리해도 캐시된 데이터가 계속 표시되는지(일시 중지된 프레임) 검증합니다.
최대, 중간 및 최소 스트림 수의 처리가 성공했는지 확인합니다.
StreamCount가 pStream 수보다 크거나 같을 경우 E_INVALIDARG가 표시되는지 확인합니다.
StreamCount가 0이면 E_INVALIDARG가 표시되는지 확인합니다.
DXVAHD_STREAM_DATA: 프로그레시브 정상/절반 속도, 2/1 속도에서 프로그레시브, 정상 속도에서 인터레이스, 1/2 속도에서 인터레이스, 4/5 속도에서 인터레이스
하나의 스트림을 사용하도록 설정하여 제공된 콘텐츠를 확인합니다.
두 개의 스트림: 기본 스트림을 사용하도록 설정하고 하위 스트림을 사용하지 않도록 설정 제공된 콘텐츠를 확인합니다.
두 개의 스트림: 기본 스트림 및 하위 스트림을 사용하도록 설정 제공된 콘텐츠를 확인합니다.
세 개의 스트림: 기본 스트림을 구성하는 데 사용되는 두 개의 스트림을 모두 사용하도록 설정, 하위 스트림을 사용하지 않도록 설정하여 세 번째 스트림으로 지정 제공된 콘텐츠를 확인합니다.
세 개의 스트림: 기본 스트림을 구성하는 데 사용되는 두 개의 스트림 중 하나는 사용, 다른 하나는 사용하지 않도록 설정, 하위 스트림을 사용하지 않도록 설정하여 세 번째 스트림으로 지정 제공된 콘텐츠를 확인합니다.
세 개의 스트림: 기본 스트림을 구성하는 데 사용되는 두 개의 스트림을 모두 사용하도록 설정, 하위 스트림도 사용하도록 설정하여 세 번째 스트림으로 지정 제공된 콘텐츠를 확인합니다.
세 개의 스트림: 기본 스트림을 구성하는 데 사용되는 두 개의 스트림 중 하나는 사용, 다른 하나는 사용하지 않도록 설정, 하위 스트림을 사용하도록 설정하여 세 번째 스트림으로 지정 제공된 콘텐츠를 확인합니다.
범위를 벗어난 PastFrame 및 FutureFrames입니다.
지정된 PastSurfaces 및 FutureSurfaces에 따라 잘못된 PastFrame 및 FutureFrames입니다.
Null PastSurfaces 및 FutureSurfaces, FutureFrames가 있는 0이 아닌 PastFrames 포함
DXVAHD_SURFACE_TYPE_VIDEO_INPUT, DXVAHD_SURFACE_TYPE_VIDEO_INPUT_PRIVATE, Decode RenderTarget 및 ppPastSurfaces, pInputSurfaces, ppFutureSurfaces의 화면 밖 평면 화면
지원되지 않는 SurfaceType의 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 | NET 액세스를 위한 LLU |
ConfigDisplayCommandLine | ConfigDisplay용 사용자 지정 명령줄 기본값: 로고 |
MODIFIEDCMDLINE | 테스트 실행 파일에 대한 추가 명령줄 인수 |