DXVAHDDDI_STREAM_DATA 구조체(d3dumddi.h)
DXVAHDDDI_STREAM_DATA 구조체는 처리되는 입력 스트림을 설명합니다.
구문
typedef struct _DXVAHDDDI_STREAM_DATA {
[in] BOOL Enable;
[in] UINT OutputIndex;
[in] UINT InputFrameOrField;
[in] UINT PastFrames;
[in] UINT FutureFrames;
[in] DXVAHDDDI_SURFACE *pPastSurfaces;
[in] DXVAHDDDI_SURFACE InputSurface;
[in] DXVAHDDDI_SURFACE *pFutureSurfaces;
} DXVAHDDDI_STREAM_DATA;
멤버
[in] Enable
입력 스트림을 사용할 수 있는지 여부를 지정하는 부울 값입니다. 런타임에서 사용하도록 설정하는 입력 스트림 수는 드라이버가 DXVAHDDDI_VPDEVCAPS 구조체의 MaxStreamStates 멤버에서 설정하는 수보다 많을 수 없습니다.
[in] OutputIndex
구성된 출력 프레임의 0부터 시작하는 순환 프레임 인덱스 번호입니다.
[in] InputFrameOrField
처리되는 입력 프레임 또는 필드의 0부터 시작하는 프레임 번호입니다.
[in] PastFrames
과거 참조 프레임의 수입니다. 이 숫자는 드라이버가 DXVAHDDDI_VPCAPS 구조체의 PastFrames 멤버에서 설정하는 수보다 작지 않아야 합니다.
[in] FutureFrames
이후 참조 프레임의 수입니다. 이 숫자는 드라이버가 DXVAHDDDI_VPCAPS 구조체의 FutureFrames 멤버에서 설정하는 숫자보다 작지 않아야 합니다.
[in] pPastSurfaces
과거 참조 표면을 설명하는 DXVAHDDDI_SURFACE 구조체의 배열입니다.
[in] InputSurface
입력 화면을 설명하는 DXVAHDDDI_SURFACE 구조체입니다.
[in] pFutureSurfaces
향후 참조 표면을 설명하는 DXVAHDDDI_SURFACE 구조체의 배열입니다.
설명
드라이버는 pPastSurfaces, InputSurface 및 pFutureSurfaces 멤버가 풀 형식에서 지정하는 표면을 할당해야 하며, 드라이버가 DXVAHDDDI_VPDEVCAPS 구조체의 InputPool 멤버에서 설정하고 다음 표면 유형 중 하나를 사용하여 지정해야 합니다. 그렇지 않으면 드라이버의 VideoProcessBltHD 함수가 오류를 반환합니다.
- DXVAHD_SURFACE_TYPE_VIDEO_INPUT 또는 DXVAHD_SURFACE_TYPE_VIDEO_INPUT_PRIVATE 형식으로 만든 비디오 화면입니다.
- DXVA2_VideoDecodeRenderTarget 형식으로 만들어진 디코딩 렌더링 대상 표면입니다.
- 오프 스크린 일반 표면.
-
일반 및 절반 속도로 프로그레시브 형식:
OutputIndex = 0, 0,...
-
2/1 사용자 지정 속도의 점진적 형식(이중 프레임 속도 변환, OutputFrames=2):
OutputIndex = 0, 1, 0, 1,...
-
표준 속도로 인터레이스된 형식:
OutputIndex = 0, 1, 0, 1,... (0: 첫 번째 필드, 1: 두 번째 필드)
-
절반 속도로 인터레이스된 형식:
OutputIndex = 0, 0,... (예를 들어 첫 번째 필드와 두 번째 필드는 하나의 프레임에 혼합됩니다.)
-
4/5 사용자 지정 속도로 인터레이스됨(3:2 역 텔레신, OutputFrames=4):
OutputIndex = 0, 1, 2, 3, 0, 1, 2, 3,... (0:A, 1:B, 2:C, 3:D 필름 프레임)
-
일반 속도로 프로그레시브 형식 및 인터레이스 형식:
InputFrameOrField = 0, 1, 2,...
-
점진적 형식 및 인터레이스 형식(절반 속도):
InputFrameOrField = 0, 2, 4,...
-
4/5 사용자 지정 속도로 인터레이스된 형식(3:2 역 텔레신, OutputFrames=4 및 InputFrameOrField=10):
InputFrameOrField = 0, 0, 0, 0, 0, 10, 10, 10, 20, 20, 20,...
-
4/15 사용자 지정 속도로 인터레이스된 형식(8:7 역 텔레신, OutputFrames=2 및 InputFrameOrField=15):
InputFrameOrField = 0, 0, 15, 15, 30, 30,...
그러나 드라이버가 정상 속도와 절반 속도( DXVAHDDDI_OUTPUT_RATE 열거형의 값) 사이를 전환하는 경우 드라이버는 다시 설정할 필요가 없습니다.
다음 프로세스 시간에 OutputIndex 및 InputFrameOrField 멤버가 모두 변경되지 않은 상태로 유지되면 드라이버는 스트림 처리에서 프레임이 변경되지 않았다고 결정합니다(예: 일시 중지됨). 따라서 드라이버는 캐시된 데이터를 사용하여 프레임을 최적화할 수 있습니다.
드라이버는 참조 프레임이 적게 제공되기 때문에 덜 집약적인 비디오 처리 방법으로 대체해야 합니다. 참조 샘플이 제공되지 않으면 드라이버가 Bob 인터레이스 해제로 대체되어야 합니다.
애플리케이션은 드라이버가 요청하는 참조 프레임보다 과거 및 이후 참조 프레임을 덜 제공할 수 있습니다. 예를 들어 애플리케이션은 다음 조건에서 더 적은 참조 프레임을 제공할 수 있습니다.
- 프레임 시퀀스의 시작 또는 끝에 있습니다.
- 프로그레시브와 인터레이스 간 전환.
- 일반 또는 절반 속도 점진적 스트림입니다.
- 고품질의 인터레이스 해제가 필요하지 않은 하위 비디오 스트림
- 프레임 드롭에서 복구하고 프레임 속도를 유지하기 위해 참조 프레임을 제한합니다.
- 입력에서 프레임 삭제(예: 디코더의 프레임 삭제).
pPastSurfaces [] = {..., T-3, T-2, T-1}
InputSurface = T
pFutureSurfaces [] = {T+1, T+2, T+3,...}
입력 및 참조 프레임은 OutputIndex 및 InputFrameOrField 멤버 증가로 현재 위치를 통해 향후 위치에서 과거 위치로 위치를 변경합니다. 예를 들어 입력 화면은 드라이버가 다음 비디오 처리를 수행할 때 OutputIndex 및 InputFrameOrField 증가로 변경됩니다.
-
일반 속도의 프로그레시브 형식:
OutputIndex = 0, 0, 0,...
InputFrameOrField = 0, 1, 2,...
InputSurface = T, T+1, T+2,...
-
표준 속도로 인터레이스된 형식:
OutputIndex = 0, 1, 0, 1, 0, 1,...
InputFrameOrField = 0, 1, 2, 3, 4, 5,...
InputSurface = T, T, T+1, T+1, T+2, T+2,...
-
절반 속도로 인터레이스된 형식:
OutputIndex = 0, 0, 0,...
InputFrameOrField = 0, 2, 4,...
InputSurface = T, T+1, T+2,...
-
4/5 사용자 지정 속도로 인터레이스된 형식(3:2 역 텔레신, OutputFrames=4 및 InputFrameOrField=10):
OutputIndex = 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3,...
InputFrameOrField = 0, 0, 0, 0, 0, 10, 10, 10, 20, 20, 20,...
InputSurface = T, T, T, T, T+5, T+5, T+5, T+5, T+10, T+10, T+10, T+10,...
-
4/15 사용자 지정 속도로 인터레이스된 형식(8:7 역 텔레신, OutputFrames=2 및 InputFrameOrField=15):
OutputIndex = 0, 1, 0, 1, 0, 1,...
InputFrameOrField = 0, 0, 15, 15, 30, 30,...
InputSurface = T, T, T+7, T+7, T+15, T+15,... (T+7 프레임에는 15번째 필드가 포함되어 있습니다.)
-[60i -> 60p]
DRV: VPGuid[0] requests 1 past and 2 future reference frames.
APP: Creates VPGuid[0] video processor and set output rate to normal.
APP: Decodes frame 0(A0:A1), 1(A0:B1), 2(B0:C1), 3(C0:C1), 4(D0:D1), ...
:
-APP: VPBltHD(frame x, 0, 1, 2), InputFrameOrField=0, OutputIndex=0
DRV: Bob [0(A0)+0(A1)] = A'
-APP: VPBltHD(frame x, 0, 1, 2), InputFrameOrField=1, OutputIndex=1
DRV: Weave [0(A1)+1(A0)] = A
-APP: VPBltHD(frame 0, 1, 2, 3), InputFrameOrField=2, OutputIndex=0
DRV: Weave [1(A0)+0(A1)] = A
-APP: VPBltHD(frame 0, 1, 2, 3), InputFrameOrField=3, OutputIndex=1
DRV: Weave [1(B1)+2(B0)] = B
-APP: VPBltHD(frame 1, 2, 3, 4), InputFrameOrField=4, OutputIndex=0
DRV: Weave [2(B0)+1(B1)] = B
-APP: VPBltHD(frame 1, 2, 3, 4), InputFrameOrField=5, OutputIndex=1
DRV: Weave [2(C1)+3(C0)] = C
-APP: VPBltHD(frame 2, 3, 4, 5), InputFrameOrField=6, OutputIndex=0
DRV: Weave [3(C0)+3(C1)] = C
-APP: VPBltHD(frame 2, 3, 4, 5), InputFrameOrField=7, OutputIndex=1
DRV: Weave [3(C1)+3(C0)] = C
-APP: VPBltHD(frame 3, 4, 5, 6), InputFrameOrField=8, OutputIndex=0
DRV: Weave [4(D0)+4(D1)] = D
-APP: VPBltHD(frame 3, 4, 5, 6), InputFrameOrField=9, OutputIndex=1
DRV: Weave [4(D1)+4(D0)] = D
:
-[60i -> 24p]
DRV: VPGuid[1] requests 4 future reference frames.
DRV: Exports CustomRate=4/5, OutputFrames=4, InputInterlaced=TRUE, InputFramesOrFields=10.
APP: Creates VPGuid[1] video processor and set output rate to 4/5 custom rate.
-APP: VPBltHD(frame 0, 1, 2, 3, 4), InputFrameOrField=0, OutputIndex=0
DRV: Bob [0(A0)+0(A1)] = A' (playback or speed mode) or Weave [0(A0)+0(A1)] = A (quality mode)
-APP: VPBltHD(frame 0, 1, 2, 3, 4), InputFrameOrField=0, OutputIndex=1
DRV: Weave [1(B1)+2(B0)] = B
-APP: VPBltHD(frame 0, 1, 2, 3, 4), InputFrameOrField=0, OutputIndex=2
DRV: Weave [3(C0)+3(C1)] = C
-APP: VPBltHD(frame 0, 1, 2, 3, 4), InputFrameOrField=0, OutputIndex=3
DRV: Weave [4(D0)+4(D1)] = D
-APP: VPBltHD(frame 5, 6, 7, 8, 9), InputFrameOrField=10, OutputIndex=0
DRV: Weave [0(A0)+0(A1)] = A
:
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | DXVAHDDDI_STREAM_DATA Windows 7 운영 체제부터 지원됩니다. |
머리글 | d3dumddi.h(D3dumddi.h 포함) |
추가 정보
DXVAHDDDI_STREAM_STATE_FRAME_FORMAT_DATA