DirectShow DirectShow 레퍼런스 DirectShow 구조체 BITMAPINFOHEADER   [목차열람] [주소복사] [슬롯비우기]
BITMAPINFOHEADER 구조체
 
Microsoft DirectX 9.0

BITMAPINFOHEADER 구조체

BITMAPINFOHEADER 구조체에는, DIB (장치에 의존하지 않는 비트 맵)의 넓이 및 컬러 포맷에 관한 정보를 저장 한다.

   이 구조체의 더 자세한 정보는, Microsoft® Platform SDK 를 참조할것. 이 엔트리는, 퀵 레퍼런스로서 DirectShow 문서에 포함되어 있다.

구문

typedef struct tagBITMAPINFOHEADER {
    DWORD  biSize;
    LONG   biWidth;
    LONG   biHeight;
    WORD   biPlanes;
    WORD   biBitCount;
    DWORD  biCompression;
    DWORD  biSizeImage;
    LONG   biXPelsPerMeter;
    LONG   biYPelsPerMeter;
    DWORD  biClrUsed;
    DWORD  biClrImportant;
} BITMAPINFOHEADER;

멤버

biSize

구조체가 필요로 하는 바이트수를 지정한다. 구조체가 컬러 테이블이나 컬러 마스크의 뒤에 계속되는 경우, 그 컬러 테이블이나 컬러 마스크의 사이즈는 이 값에는 포함되지 않는다. 주의를 참조할것.

biWidth

비트 맵의 폭을 지정한다.

디코더 및 비디오 소스는 biWidth 가 이미지의 폭이 되는 것 같은 포맷을 제시할 필요가 있다. 비디오 렌더러가 DirectDraw 를 사용하고 있는 경우,biWidth 가 표면의 보폭과 동일해져,VIDEOINFOHEADER 구조체 또는 VIDEOINFOHEADER2 구조체의 rcTarget 멤버가 이미지의 폭을 나타내도록(듯이) 포맷을 변경한다. 다음으로 변경한 포맷을 IPin::QueryAccept 를 사용해 제시한다.

RGB 포맷 및 2 의 거듭제곱의 YUV 포맷으로, 비디오 렌더러가 보폭을 지정하지 않는 경우, 폭을 제일 가까운 DWORD 경계에 말아 보폭을 요구한다.

biHeight

비트 맵의 높이를 지정한다 (픽셀 단위).

biPlanes

타겟 장치에 대한 면의 수를 지정한다. 이것은 반드시 1 으로 설정한다.

biBitCount

1 픽셀 근처의 비트수를 지정한다.

biCompression

비트 맵이 압축되고 있는 경우, 이 멤버는 압축을 지정하는 FOURCC 이다. 비압축 포맷의 경우, 지정 가능한 값은 다음과 같다.

설명
BI_RGB 비압축 RGB.
BI_BITFIELDS 컬러 마스크가 지정된 비압축 RGB. 16 bpp 및 32 bpp 의 비트 맵에 대해서 유효하다.

더 자세한 정보는, 「주의」를 참조할것.

biSizeImage

이미지의 사이즈를 지정한다 (바이트 단위). 비압축 RGB 비트 맵의 경우는, 0 으로 설정할 수 있다.

biXPelsPerMeter

비트 맵의 타겟 장치의 수평 해상도를 1 미터 당의 픽셀 단위로 지정한다.

biYPelsPerMeter

비트 맵의 타겟 장치의 수직 해상도를 1 미터 당의 픽셀 단위로 지정한다.

biClrUsed

컬러 테이블내의 컬러 인덱스 가운데, 비트 맵내에서 실제로 사용하는 인덱스의 수를 지정한다.

biClrImportant

비트 맵을 표시하기 위해서 중요라고 보여지는 컬러 인덱스수를 지정한다. 이 값이 제로의 경우는, 모든 색이 중요라고 보여진다.

주의

비트 맵이 8 bpp 이하의 경우,BITMAPINFOHEADER 의 직후에 있는 비트 맵은 컬러 테이블을 사용한다. 컬러 테이블은,RGBQUAD 값의 배열로 구성되어 있다. 배열의 사이즈는 biClrUsed 멤버로 지정한다. biClrUsed 가 0 의 경우, 배열에는 소정의 비트 깊이에 대응하는 색의 최대수, 즉 2 의 biBitCount 거듭제곱 (2^biBitCount) 색을 저장 한다.

biCompression 가 BI_BITFIELDS 와 동일한 경우, 비트 맵은 3 개의 DWORD 컬러 마스크 (각각 적, 초록, 파랑)를 사용해 픽셀의 바이트 레이아웃을 지정한다. 각 마스크의 1 비트가 픽셀내의 그 색에 대응하는 비트를 나타내고 있다.

16 bpp 비트 맵으로 biCompression 가 BI_RGB 와 동일한 경우, 포맷은 RGB 555 이다. biCompression 가 BI_BITFIELDS 와 동일한 경우, 포맷은 RGB 555 또는 RGB 565 이다. AM_MEDIA_TYPE 구조체의 서브 타입 GUID 를 사용해 특정의 RGB 타입을 조사한다.

압축 타입 또는 YUV 타입에서는, FOURCC 값은 little endian순서의 DWORD 형으로 지정한다. 예를 들어, YUYV 의 경우는 'VYUY', 즉 0x56595559 가 된다. 더 자세한 정보는, 「FOURCC 코드」를 참조할것.

BITMAPINFOHEADER 가 컬러 테이블 또는 일련의 컬러 마스크의 뒤에 계속되는 경우는,BITMAPINFO 구조체를 사용해 컬러 마스크의 컬러 테이블을 참조할 수 있다. BITMAPINFO 구조체는 다음과 같이 정의된다.

typedef struct tagBITMAPINFO {
    BITMAPINFOHEADER bmiHeader;
    RGBQUAD          bmiColors[1];
} BITMAPINFO;

BITMAPINFOHEADERBITMAPINFO 에 캐스트 하면,bmiHeader 멤버는 BITMAPINFOHEADER 를 참조해,bmiColors 멤버는 컬러 테이블의 최초의 엔트리, 또는 최초의 컬러 마스크를 참조한다.

비트 맵이 컬러 테이블 또는 컬러 마스크를 사용할 때는, 포맷 구조체 전체의 사이즈 (BITMAPINFOHEADER 에 색정보를 더한 사이즈)는 sizeof(BITMAPINFOHEADER)와도 sizeof(BITMAPINFO)와도 동일하게 안 되는 점에 주의 해야 한다. 각 인스턴스의 실제의 사이즈를 계산하는 것.

참조

↑TOP