DXVA_BufferDescription 구조체(dxva.h)

DXVA_BufferDescription 구조체는 호스트 디코더에서 가속기로 전송되어 현재 호스트에서 가속기로 전달되는 버퍼에 대한 정보를 액셀러레이터에 제공합니다.

구문

typedef struct _DXVA_BufferDescription {
  DWORD dwTypeIndex;
  DWORD dwBufferIndex;
  DWORD dwDataOffset;
  DWORD dwDataSize;
  DWORD dwFirstMBaddress;
  DWORD dwNumMBsInBuffer;
  DWORD dwWidth;
  DWORD dwHeight;
  DWORD dwStride;
  DWORD dwReservedBits;
} DXVA_BufferDescription, *LPDXVA_BufferDescription;

멤버

dwTypeIndex

가속기로 전달되는 버퍼 유형을 식별합니다. 다음 표에는 숫자 식별자 및 연결된 버퍼 유형이 나열되어 있습니다.

버퍼 유형
1 그림 디코딩 매개 변수 버퍼.
2 Macroblock 컨트롤 명령 버퍼 (잔차 블록 데이터 버퍼와 밀접하게 관련되고 1:1 대응).
3 잔차 블록 데이터 버퍼. 자세한 내용은 매크로 블록 지향 그림 디코딩을 참조하세요.
4 필터 컨트롤 명령 버퍼를 디버킹합니다(필터의 효과에 대한 제한 여부에 관계없이).
5 역수량화 매트릭스 버퍼(오프 호스트 VLD 처리에만 사용됨)
6 조각 제어 버퍼(비트스트림 데이터 버퍼와 긴밀하게 연결되고 1:1 대응).
7 비트 스트림 데이터 버퍼.
8 AYUV 알파 혼합 샘플 버퍼.
9 IA44/AI44 알파 혼합 표면 버퍼.
10 DPXD 알파 혼합 표면 버퍼.
11 데이터 버퍼를 강조 표시합니다.
12 DCCMD 데이터 버퍼.
13 알파 혼합 조합 버퍼.
14 그림 리샘플링 컨트롤 버퍼.
15 결과 그림의 매크로블록을 호스트로 다시 읽는 명령이 포함된 읽기-뒤로 명령 버퍼입니다.

dwBufferIndex

동일한 버퍼 설명 목록에 전달된 동일한 형식의 버퍼 내에 있는 버퍼의 시퀀스 번호를 지정합니다.

dwDataOffset

버퍼 시작부터 관련 데이터의 오프셋을 바이트 단위로 지정합니다. 이 멤버의 사용은 현재 값 0으로 제한됩니다.

dwDataSize

버퍼의 관련 데이터 양을 바이트 단위로 지정합니다. 버퍼의 마지막 콘텐츠 바이트 위치는 dwDataOffsetdwDataSize - 1입니다.

dwFirstMBaddress

가속기로 전달된 버퍼에서 첫 번째 macroblock의 macroblock 주소를 지정합니다. 매크로 블록 주소는 래스터 검사 순서로 지정됩니다. 주소는 DXVA_PictureParameters 멤버에 의해 결정됩니다. 매크로 블록 주소의 예는 다음과 같습니다.

매크로 블록 주소
왼쪽 위 0
오른쪽 위 wPicWidthInMBminus1
왼쪽 아래 wPicHeightInMBminus1 x(wPicWidthInMBminus1+1)
오른쪽 아래 (wPicHeightInMBminus1+1) x (wPicWidthInMBminus1+1)-1

데이터 버퍼가 그림 디코딩 매개 변수, 역수량화 행렬, 조각 제어, 비트스트림 데이터, AYUV, IA44/AI44, DPXD, 강조 표시 및 DCCMD 형식 중 하나이면 이 멤버는 0이어야 합니다.

데이터 버퍼가 잔차 블록 데이터 버퍼인 경우 dwFirstMBaddress 는 해당 macroblock 컨트롤 명령 버퍼와 동일한 값을 가져야 합니다. 자세한 내용은 매크로 블록 지향 그림 디코딩을 참조하세요.

dwNumMBsInBuffer

버퍼에 있는 데이터의 매크로 블록 수를 지정합니다. 이 개수에는 건너뛴 매크로 블록이 포함됩니다. 데이터 버퍼가 그림 디코딩 매개 변수, 역수량화 행렬, AYUV, IA44/AI44, DPXD, 강조 표시 또는 DCCMD 형식 중 하나이면 0이어야 합니다.

dwNumMBsInBuffer 값은 다음 표와 같이 사용되는 데이터 버퍼의 형식에 따라 달라집니다.

버퍼 유형 dwNumMBsInBuffer 값
Macroblock 컨트롤 명령 매크로 블록 컨트롤 명령 버퍼의 매크로 블록 컨트롤 명령 수에 추가된 MBskipsFollowing에 대한 모든 값의 합계와 같아야 합니다.
잔차 블록 해당 macroblock 컨트롤 명령 버퍼의 값과 같아야 합니다.
조각 제어 명령 조각 제어 버퍼에 있는 DXVA_SliceInfo 구조체의 wNumberMBsInSlice 멤버 값과 같아야 합니다.
Bitstream 해당 조각 제어 명령 버퍼의 값과 같아야 합니다.

dwWidth

버퍼의 데이터 너비를 AYUV(데이터는 32비트 단위로 지정됨), IA44/AI44(데이터는 8비트 단위로 지정됨) 또는 DPXD(데이터는 2비트 단위로 지정됨)의 비트 단위 수로 지정합니다. 데이터 버퍼가 이전 형식에 속하지 않는 경우 이 멤버는 0이어야 합니다.

dwHeight

버퍼의 데이터 높이를 AYUV(데이터는 32비트 단위로 지정됨), IA44/AI44(데이터는 8비트 단위로 지정됨) 또는 DPXD(데이터는 2비트 단위로 지정됨)의 데이터 형식에 대한 비트 단위 수로 지정합니다. 데이터 버퍼가 이전 형식에 속하지 않는 경우 이 멤버는 0이어야 합니다.

dwStride

버퍼의 데이터 보폭을 AYUV(데이터는 32비트 단위로 지정됨), IA44/AI44(데이터는 8비트 단위로 지정됨) 또는 DPXD(데이터는 2비트 단위로 지정됨)의 데이터 형식에 대한 비트 단위 수로 지정합니다. 적용 가능한 버퍼 형식에 대한 보폭은 가속기에서 수행하는 버퍼 할당 설정에서 결정됩니다. 데이터 버퍼가 이전 형식에 속하지 않는 경우 이 멤버는 0이어야 합니다.

dwReservedBits

압축 및 맞춤에 사용되는 예약된 비트입니다. 0이어야 합니다.

설명

DXVA_BufferDescription 구조의 배열을 버퍼 설명 목록이라고 합니다. 버퍼 집합이 호스트 디코더에서 하드웨어 가속기로 전송되면 버퍼 설명 목록이 전송되어 버퍼를 설명합니다. 버퍼 설명 목록에는 이 집합의 각 버퍼에 대해 하나의 DXVA_BufferDescription 구조가 포함되어 있습니다. 버퍼 설명 목록은 첫 번째 형식의 첫 번째 버퍼에 대한 DXVA_BufferDescription 구조체와 같은 형식의 다음 버퍼에 대한 DXVA_BufferDescription 구조로 시작합니다. 그런 다음 버퍼 설명 목록은 다음 형식의 첫 번째 버퍼에 대한 DXVA_BufferDescription 구조로 계속됩니다.

요구 사항

요구 사항
헤더 dxva.h(Dxva.h 포함)

추가 정보

DXVA_PictureParameters

DXVA_SliceInfo