DXVAHD_STREAM_DATA 구조체(dxvahd.h)

IDXVAHD_VideoProcessor::VideoProcessBltHD 메서드에 대한 스트림별 데이터를 포함합니다.

구문

typedef struct _DXVAHD_STREAM_DATA {
  BOOL              Enable;
  UINT              OutputIndex;
  UINT              InputFrameOrField;
  UINT              PastFrames;
  UINT              FutureFrames;
  IDirect3DSurface9 **ppPastSurfaces;
  IDirect3DSurface9 *pInputSurface;
  IDirect3DSurface9 **ppFutureSurfaces;
} DXVAHD_STREAM_DATA;

멤버

Enable

이 입력 스트림을 사용할 수 있는지 여부를 지정합니다. 값이 TRUE이면 VideoProcessBltHD 메서드가 이 스트림을 출력 화면으로 표시합니다. 그렇지 않으면 스트림이 Blitt되지 않습니다. 한 번에 사용하도록 설정할 수 있는 최대 스트림 수는 DXVAHD_VPDEVCAPS 구조체의 MaxInputStreams 멤버에 제공됩니다.

OutputIndex

출력 프레임의 인덱스 번호(0부터 시작)입니다. 설명 부분을 참조하세요.

InputFrameOrField

입력 프레임 또는 필드의 인덱스 번호(0부터 시작)입니다. 설명 부분을 참조하세요.

PastFrames

과거 참조 프레임의 수입니다. 이 값은 DXVAHD_VPCAPS 구조체의 PastFrames 멤버 값보다 작거나 같아야 합니다.

FutureFrames

이후 참조 프레임의 수입니다. 이 값은 DXVAHD_VPCAPS 구조체의 FutureFrames 멤버 값보다 작거나 같아야 합니다.

ppPastSurfaces

호출자가 할당한 IDirect3DSurface9 포인터 배열에 대한 포인터입니다. 이 배열에는 비디오 처리 작업에 대한 과거 참조 프레임이 포함되어 있습니다. 배열의 요소 수는 PastFrames 멤버의 값과 같습니다.

pInputSurface

현재 입력 프레임을 포함하는 Microsoft Direct3D 표면의 IDirect3DSurface9 인터페이스에 대한 포인터입니다.

ppFutureSurfaces

호출자가 할당한 IDirect3DSurface9 포인터 배열에 대한 포인터입니다. 이 배열에는 비디오 처리 작업에 대한 향후 참조 프레임이 포함되어 있습니다. 배열의 요소 수는 FutureFrames 멤버의 값과 같습니다.

설명

입력 표면

Direct3D 표면은 DXVAHD_VPDEVCAPS 구조체의 InputPool 멤버에 의해 지정된 메모리 풀에 할당되어야 합니다. 다음 표면 유형을 사용할 수 있습니다. 과거 및 이후 참조 프레임은 배열에 이전부터 최신까지 임시 순서로 배치해야 합니다. 예를 들어 T 가 현재 입력 프레임인 경우 배열은 다음과 같이 정렬됩니다.
  • ppPastSurfaces: { ..., T-3, T-2, T-1 }
  • ppInputSurface: T
  • ppFutureSurfaces: { T+1, T+2, T+3, ... }
DXVAHD_VPCAPS 구조체는 최상의 탈자화 품질을 얻는 데 필요한 참조 프레임 수를 지정합니다. 애플리케이션이 더 적은 참조 프레임을 제공하는 경우 디바이스는 더 간단한 디인터레이싱 알고리즘으로 대체됩니다. 참조 프레임이 제공되지 않으면 디바이스에서 bob 디인터레이싱을 사용할 수 있습니다. 다음은 애플리케이션이 참조 프레임을 더 적게 제공할 수 있는 몇 가지 경우입니다.
  • 비디오 시퀀스의 시작 또는 끝에서
  • 점진적 입력
  • 프로그레시브 및 인터레이스 입력 간 전환 중
  • 높은 탈인터레이싱 품질이 필요하지 않은 하위 스트림의 경우
  • 프레임을 삭제하는 동안

입력 및 출력 인덱스

OutputIndexInputFrameOrField 멤버는 입력 프레임 또는 필드와 출력 프레임의 상관 관계를 지정하는 데 사용됩니다. OutputIndex 멤버의 값은 순환이며 각 주기 후에 0으로 다시 설정됩니다.

다음은 몇 가지 예제 패턴입니다.

  • 일반 속도로 프로그레시브 비디오. 각 입력 프레임은 하나의 출력 프레임을 생성합니다.
    • 출력 인덱스: 0, 0, 0, 0, ...
    • 입력 인덱스: 0, 1, 2, 3, ...
  • 표준 속도로 인터레이스된 비디오입니다. 각 인터레이스 프레임(두 필드)은 두 개의 출력 프레임을 생성합니다.
    • 출력 인덱스: 0, 1, 0, 1, ...
    • 입력 인덱스: 0, 1, 2, 3, ...
  • 2/1 출력 속도의 점진적 비디오입니다. 각 입력 프레임은 하나의 출력 프레임을 생성합니다.
    • 출력 인덱스: 0, 1, 0, 1, ...
    • 입력 인덱스: 0, 1, 2, 3, ...
  • 1/2 출력 속도로 인터레이스된 비디오입니다. 인터레이스된 각 프레임은 하나의 출력 프레임을 생성합니다. (두 필드가 혼합되어 하나의 프레임을 만듭니다.)
    • 출력 인덱스: 0, 0, 0, 0, ...
    • 입력 인덱스: 0, 2, 4, 6, ...

요구 사항

   
지원되는 최소 클라이언트 Windows 7 [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2008 R2 [데스크톱 앱만 해당]
머리글 dxvahd.h

추가 정보

DXVA-HD

Direct3D 비디오 구조

Media Foundation 구조