PDD_VPORTCB_GETBANDWIDTH 콜백 함수(ddrawint.h)
DdVideoPortGetBandwidth 콜백 함수는 지정된 VPE 개체 출력 형식을 기반으로 디바이스 프레임 버퍼 메모리의 대역폭 제한을 보고합니다.
구문
PDD_VPORTCB_GETBANDWIDTH PddVportcbGetbandwidth;
DWORD PddVportcbGetbandwidth(
PDD_GETVPORTBANDWIDTHDATA unnamedParam1
)
{...}
매개 변수
unnamedParam1
드라이버가 대역폭 데이터를 반환하는 데 필요한 정보를 포함하는 DD_GETVPORTBANDWIDTHDATA 구조를 가리킵니다.
반환 값
DdVideoPortGetBandwidth 는 다음 콜백 코드 중 하나를 반환합니다.
설명
DdVideoPortGetBandwidth 는 VPE를 지원하는 DirectDraw 드라이버에서 구현되어야 합니다.
DdVideoPortGetBandwidth 는 지정된 형식에 대한 대역폭 요구 사항을 클라이언트에 알려 형식을 선택하고 제한 사항을 더 잘 이해할 수 있도록 지원합니다. 드라이버에 DDVIDEOPORTDESC 구조의 정보가 필요하기 때문에 VPE 개체를 만든 후에만 드라이버가 정확한 대역폭 정보를 제공할 수 있습니다.
DdVideoPortGetBandwidth 는 일반적으로 지정된 하드웨어 비디오 포트의 대역폭 매개 변수를 가져오기 위해 두 번 호출됩니다. lpGetVideoPortBandwidth에서 DD_GETVPORTBANDWIDTHDATA 구조체의 dwFlags 멤버에 따라 드라이버는 다음을 수행해야 합니다.
-
플래그가 DDVPB_TYPE 때 드라이버는 DD_GETVPORTBANDWIDTHDATA lpBandwidth 멤버가 가리키는 DDVIDEOPORTBANDWIDTH 구조체의 dwCaps 멤버에서 다음 플래그 중 하나를 설정하여 디바이스 유형을 나타내야 합니다.
- DDVPBCAPS_DESTINATION 디바이스가 오버레이 스트레치 팩터 측면에서 대역폭 기능을 설명한다는 것을 나타냅니다. 즉, DdVideoPortGetBandwidth 에 대한 다음 호출에서 드라이버가 반환한 대역폭 정보는 대상 오버레이의 크기를 참조합니다. 이 플래그는 기본 및 오버레이 표면에서 동시에 새로 고치는 하드웨어를 가장 잘 설명합니다. 대상 비디오가 늘어나면 하드웨어에서 오버레이 표면에서 픽셀을 읽는 데 더 많은 시간이 소요되어 필요한 메모리 대역폭이 감소합니다.
- DDVPBCAPS_SOURCE 디바이스가 필요한 원본 오버레이 크기 측면에서 대역폭 기능을 설명한다는 것을 나타냅니다. 즉, DdVideoPortGetBandwidth에 대한 다음 호출에서 반환된 대역폭 정보는 원본 오버레이의 크기를 참조합니다. 이 플래그는 오버레이 데이터를 선 버퍼 또는 대형 FIFO로 프리페치하는 하드웨어를 가장 잘 설명합니다. 이러한 하드웨어에는 추가 대역폭이 필요하지 않지만 원본 오버레이 데이터가 하드웨어에서 지원하는 버퍼/FIFO 크기 내에 완전히 맞아야 합니다.
또한 드라이버는 반환하기 전에 DDVIDEOPORTBANDWIDTH 구조체의 dwSize 멤버를 설정해야 합니다.
-
플래그가 DDVPB_VIDEOPORT 경우 DD_GETVPORTBANDWIDTHDATA 구조의 dwWidth 및 dwHeight 멤버는 하드웨어 비디오 포트가 프레임 버퍼에 원본 오버레이로 쓸 비디오 데이터의 미리 크기 조정 크기를 참조합니다. 드라이버는 디바이스가 DDVIDEOPORTBANDWIDTH 구조체의 각 dwOverlay, dwColorkey, dwYInterpolate 및 dwYInterpAndColorkey 멤버에 1000을 곱한 오버레이를 표시할 수 있는 오버레이 스트레치 팩터를 반환해야 합니다. 예를 들어 값이 2000이면 디바이스에 오버레이를 표시할 때 원본의 지정된 크기의 두 배까지 확장할 대역폭이 있음을 나타냅니다. 값이 1000이면 지정된 데이터 크기에 대해 스트레칭을 수행할 필요가 없음을 나타냅니다. 값이 500이면 디바이스에 오버레이 대상을 절반으로 축소하기에 충분한 대역폭이 있음을 나타냅니다. 드라이버는 dwOverlay에서 유효한 값을 설정해야 하지만 지원하지 않는 다른 세 멤버 중에서 -1을 반환할 수 있습니다.
DDVPB_VIDEOPORT 플래그는 디바이스가 DDVPBCAPS_DESTINATION 플래그로 가장 잘 설명된다고 가정합니다. 그렇지 않은 경우 드라이버는 호출에 실패해야 합니다.
-
DDVPB_OVERLAY 플래그가 설정되면 DD_GETVPORTBANDWIDTHDATA 구조체의 dwWidth 및 dwHeight 멤버는 원본 오버레이 크기를 참조합니다. 드라이버는 DDVIDEOPORTBANDWIDTH 구조체의 각 dwOverlay, dwColorkey, dwYInterpolate 및 dwYInterpAndColorkey 멤버에 오버레이 표시를 지원할 수 있는 1000을 곱한 이 오버레이 크기의 백분율을 반환해야 합니다. 예를 들어 값이 750이면 디바이스가 디바이스를 성공적으로 표시하기 위해 지정된 원본 오버레이를 원래 크기의 75%로 축소해야 했음을 나타냅니다. 값이 1000이면 축소가 필요하지 않음을 나타냅니다. 이 유형의 디바이스에 대한 드라이버는 일반적으로 1000보다 큰 값을 반환하지 않습니다. 드라이버는 dwOverlay에서 유효한 값을 설정해야 하지만 색 키 지정 및/또는 Y축 보간을 지원하지 않는 경우 다른 세 멤버 중에서 0을 반환할 수 있습니다.
DDVPB_OVERLAY 플래그는 디바이스가 DDVPBCAPS_SOURCE 플래그를 사용하여 가장 잘 설명된다고 가정합니다. 그렇지 않은 경우 드라이버는 호출에 실패해야 합니다.
요구 사항
대상 플랫폼 | 데스크톱 |
머리글 | ddrawint.h(Winddi.h 포함) |