DirectShow 보유 CODEC 의 조작 FOURCC 코드   [목차열람] [주소복사] [슬롯비우기]
FOURCC 코드
 
Microsoft DirectX 9.0

FOURCC 코드

많은 디지털 미디어 포맷에는,FOURCC 코드를 할당할 수 있다. FOURCC 코드는 32 비트 부호 없음 정수로, 4 개의 ASCII 문자를 연결해 생성 된다. 예를 들어, YUY2 비디오의 FOURCC 코드는 'YUY2'이다. 압축 비디오 포맷 및 비 RGB 비디오 포맷 (YUV 등)에서는,BITMAPINFOHEADER 구조체의 biCompression 멤버를 FOURCC 코드로 설정할 필요가 있다.

소스 코드에서의 FOURCC 값의 선언을 용이하게 하기 위해서, 다양한 C/C++ 매크로가 존재한다. 예를 들어,MAKEFOURCC 매크로는 Mmsystem.h 로 선언되어FCC 매크로는 Aviriff.h 로 선언된다. 이러한 매크로는 다음과 같이 사용한다.

DWORD fccYUY2 = MAKEFOURCC('Y', 'U', 'Y', '2');
DWORD fccYUY2 = FCC('YUY2');

FOURCC 코드는, 단지 문자의 순서를 반대로 해, 캐릭터 라인 리터럴로서 직접 선언할 수도 있다. 이하에 예를 나타낸다.

DWORD fccYUY2 = '2YUY';  // FOURCC 'YUY2'를 선언한다.

순서를 반대로 할 필요가 있는 것은, Microsoft Windows operating system가 little endian 아키텍처를 사용하고 있기 때문이다. 'Y' = 0 x59, 'U' = 0 x55, 및 '2' = 0x32 이므로, '2YUY'는 0x32595559 가 된다.

FOURCC 코드로부터 서브 타입 GUID 에의 변환

2*32 GUID 의 범위가 FOURCC 를 나타내기 위해서(때문에) 예약되고 있다. 이러한 GUID 는 모두 다음과 같은 형식이다.

XXXXXXXX-0000-0010-8000-00AA00389B71 

여기서, XXXXXXXX 는 FOURCC 코드이다. 따라서, YUY2 의 서브 타입 GUID 는 다음과 같이 된다.

32595559-0000-0010-8000-00AA00389B71 

이러한 GUID 의 상당수는 헤더 파일 Uuids.h 로 이미 정의되고 있다. 예를 들어, YUY2 서브 타입은 MEDIASUBTYPE_YUY2 로서 정의되고 있다. DirectShow base class 라이브러리에서는,FOURCCMap 헬퍼-클래스도 제공하고 있다. 이 헬퍼-클래스를 사용해,FOURCC 코드를 GUID 값으로 변환할 수 있다. FOURCCMap 생성자은, 입력 파라미터로서 FOURCC 코드를 취한다. 이것으로,FOURCCMap 개체를 대응하는 GUID 에 캐스트 할 수 있다.

FOURCCMap fccMap(FCC('YUY2'));
GUID g1 = (GUID) fccMap;

// 등가인 코드 :
GUID g2 = (GUID) FOURCCMap(FCC('YUY2'));

새로운 FOURCC 의 등록 방법

새로운 FOURCC 코드를 등록하는 경우는,mmreg@Microsoft.com 까지 전자 메일로 FOURCC 와 포맷의 설명을 연락하는 것. 조직 ID, 전자메일 주소, 및 담당자명도 기재 해 주었으면 한다. 현재 등록되어 있는 FOURCC 의 일람에 대해서는, Microsoft Corporation 의 hwdev Web 사이트를 참조할것.

참조

↑TOP