DXVA_SliceInfo 구조체(dxva.h)

DXVA_SliceInfo 구조체는 호스트 디코더에서 가속기로 전송되어 오프 호스트 비트스트림 압축 그림 디코딩을 위해 비트스트림 데이터 조각의 조각 수준 매개 변수를 지정합니다.

구문

typedef struct _DXVA_SliceInfo {
  WORD  wHorizontalPosition;
  WORD  wVerticalPosition;
  DWORD dwSliceBitsInBuffer;
  DWORD dwSliceDataLocation;
  BYTE  bStartCodeBitOffset;
  BYTE  bReservedBits;
  WORD  wMBbitOffset;
  WORD  wNumberMBsInSlice;
  WORD  wQuantizerScaleCode;
  WORD  wBadSliceChopping;
} DXVA_SliceInfo, *LPDXVA_SliceInfo;

멤버

wHorizontalPosition

매크로 블록 단위로 표현된 조각의 첫 번째 매크로 블록의 가로 위치를 지정하고, 0은 그림의 맨 왼쪽 또는 맨 위 매크로블록을 나타냅니다.

wVerticalPosition

매크로 블록 단위로 표현된 조각의 첫 번째 매크로 블록의 세로 위치를 지정합니다. 0은 그림의 맨 왼쪽 또는 맨 위 매크로블록을 나타냅니다.

dwSliceBitsInBuffer

현재 조각에 대한 데이터를 포함하는 해당 비트 스트림 데이터 버퍼의 총 비트 수를 지정합니다. MPEG-1, MPEG-2, MPEG-4의 경우 8의 배수여야 합니다. 또한 이러한 경우 조각 시작 코드가 바이트 정렬되므로 H.263의 조각 구조화된 모드에 있어야 합니다.

dwSliceDataLocation

비트스트림 데이터 버퍼에서 조각의 데이터가 포함된 첫 번째 바이트 위치(예: 조각 시작 코드의 위치)를 지정합니다. 조각의 시작이 해당 비트스트림 데이터 버퍼 내에 없는 경우 0이어야 합니다.

bStartCodeBitOffset

조각에 대한 데이터를 포함하지 않는 dwSliceDataLocation 에서 바이트의 가장 중요한 비트 수를 지정합니다. 이러한 사양의 조각 시작 코드는 바이트 정렬되므로 bStartCodeBitOffset은 MPEG-1, MPEG-2 및 MPEG-4에 대해 0이어야 합니다. bStartCodeBitOffset 은 H.261 및 H.263에 대해 0이 아닐 수 있습니다. 이러한 표준은 GOB(블록 그룹) 시작 코드를 강제로 바이트 정렬하지 않기 때문입니다. 이 멤버는 0부터 7까지의 범위에 있어야 하며 조각의 시작이 해당 비트 스트림 데이터 버퍼 내에 있지 않은 경우 0이어야 합니다. bStartCodeBitOffset에서 현재 조각과 관련이 없는 것으로 표시된 가장 중요한 비트는 바이트 정렬되지 않은 시작 코드의 경우(예: H.263 기준 모드에서) 이전 조각에 대한 데이터를 포함할 수 있습니다.

bReservedBits

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

wMBbitOffset

비트 스트림 버퍼의 매크로 블록 계층 데이터의 첫 번째 비트 이전 조각 머리글 데이터의 비트 수를 지정합니다. 예를 들어 wMBbitOffset 이 83인 경우 조각에 대한 macroblock 계층 데이터는 83비트 조각 헤더 데이터 이후에 시작됩니다. 조각의 시작이 해당 비트스트림 데이터 버퍼 내에 없는 경우 0이어야 합니다.

wNumberMBsInSlice

건너뛴 macroblock을 포함하여 조각에 있는 데이터의 매크로 블록 수를 지정합니다. 그림의 머리글과 H.263의 조각 모드의 하위 모듈을 정렬하는 직사각형 조각 및 임의 조각과 같이 비트스트림의 현재 및 다음 조각의 머리글 및 초기 매크로 블록 데이터에서 이 숫자를 쉽게 확인할 수 없는 경우 0일 수 있습니다. H.261, MPEG-1, MPEG-2, MPEG-4 또는 H.263에서 조각 구조화 모드의 직사각형 조각 또는 임의 조각 하위 모드를 사용하지 않는 경우 0이 아니어야 합니다.

wQuantizerScaleCode

특정 비디오 코딩 사양(H.261, H.262/MPEG-2, H.263, MPEG-1 및 MPEG-4의 경우 1부터 31까지)에 지정된 비트스트림의 조각 수준에서의 분위수 크기 조정 코드입니다.

wBadSliceChopping

해당 비트 스트림 데이터 버퍼에 대한 조각 내의 데이터 위치를 지정합니다. 0이면 조각의 모든 비트가 비트 스트림 데이터 버퍼에 있음을 나타냅니다. 0이 아닌 경우 는 다음과 같이 해당 비트 스트림 데이터 버퍼에서 조각의 비트 부분이 누락된 부분을 나타냅니다.

Description
1 조각의 시작 부분에 대한 비트는 해당 비트 스트림 데이터 버퍼 내에 있으며 조각의 끝에 대한 비트는 그렇지 않습니다(비트스트림 데이터 버퍼가 가득 차 있기 때문).
2 조각의 시작 부분에 대한 비트는 해당 비트 스트림 데이터 버퍼 내에 있지 않지만(이전 비트 스트림 데이터 버퍼가 가득 찼기 때문에) 조각의 끝에 대한 비트는 해당 비트 스트림 데이터 버퍼 내에 있습니다.
3 조각 시작에 대한 비트는 해당 비트 스트림 데이터 버퍼 내에 있지 않으며(이전 비트스트림 데이터 버퍼가 가득 찼기 때문에) 조각의 끝에 대한 비트도 해당 비트 스트림 데이터 버퍼 내에 있지 않습니다(해당 비트 스트림 데이터 버퍼도 가득 차 있기 때문).

[! 참고] wBadSliceChopping 의 0이 아닌 값은 일반적으로 호스트 소프트웨어 디코더에서 피해야 합니다.

설명

오프 호스트 VLD 비트스트림 처리 작업을 안내하기 위해 조각 제어 버퍼가 제공됩니다. 조각 제어 버퍼는 DXVA_ConfigPictureDecodebConfigBitstreamRaw 멤버가 1인 경우에만 전송됩니다. 호스트 소프트웨어 디코더는 비트스트림에서 조각 수준 다시 동기화 지점의 위치를 결정해야 합니다. 조각은 비트스트림 데이터의 다시 동기화 지점을 포함하는 다중 매크로 계층으로 정의됩니다.

H.261 비트스트림에서 GOB는 조각으로 간주됩니다. H.263 비트스트림에서 GOB 시작 코드로 시작하고 추가 GOB 시작 코드를 포함하지 않는 하나 이상의 GOB 시퀀스는 조각으로 간주됩니다. 조각 제어 버퍼는 해당 비트스트림 데이터 버퍼의 내용에 따라 하나 이상의 DXVA_SliceInfo 구조를 포함해야 합니다.

요구 사항

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

추가 정보

DXVA_ConfigPictureDecode