미디어 유형 미디어 스트림의 형식을 설명합니다. Microsoft Media Foundation에서 미디어 형식은 IMFMediaType 인터페이스로 표시됩니다. 이 인터페이스는 IMFAttributes 인터페이스를 상속합니다. 미디어 형식의 세부 정보는 특성으로 지정됩니다.
새 미디어 형식을 만들려면 MFCreateMediaType 함수를 호출합니다. 이 함수는 IMFMediaType 인터페이스에 대한 포인터를 반환합니다. 미디어 형식에는 처음에는 특성이 없습니다. 형식의 세부 정보를 설정하려면 관련 특성을 설정합니다.
미디어 형식 특성 목록은 미디어 형식 특성참조하세요.
주 형식 및 하위 형식
모든 미디어 형식에 대한 두 가지 중요한 정보는 주 형식과 하위 형식입니다.
- 주요 형식 미디어 스트림에서 데이터의 전체 범주를 정의하는 GUID입니다. 주요 유형은 비디오 및 오디오를 포함합니다. 주 형식을 지정하려면 MF_MT_MAJOR_TYPE 특성을 설정합니다. IMFMediaType::GetMajorType 메서드는 이 특성의 값을 반환합니다.
- 하위 형식 형식을 추가로 정의합니다. 예를 들어 비디오 주 형식 내에는 RGB-24, RGB-32, YUY2 등에 대한 하위 형식이 있습니다. 오디오 내에는 PCM 오디오, IEEE 부동 소수점 오디오 등이 있습니다. 하위 형식은 주 형식보다 더 많은 정보를 제공하지만 형식에 대한 모든 정보를 정의하지는 않습니다. 예를 들어 비디오 하위 형식은 이미지 크기 또는 프레임 속도를 정의하지 않습니다. 하위 형식을 지정하려면 MF_MT_SUBTYPE 특성을 설정합니다.
모든 미디어 형식에는 주 형식 GUID와 하위 형식 GUID가 있어야 합니다. 주 형식 및 하위 형식 GUID 목록은 미디어 형식 GUID 참조하세요.
특성이 있는 이유
특성은 DirectShow 및 Windows Media Format SDK와 같은 이전 기술에서 사용된 형식 구조에 비해 몇 가지 이점이 있습니다.
"모르겠음" 또는 "상관없음" 값을 나타내는 것이 더 쉽습니다. 예를 들어 비디오 변환을 작성하는 경우 비디오 원본에서 가져올 때까지는 비디오 프레임의 크기가 아니라 변환이 지원하는 RGB 및 YUV 형식을 미리 알 수 있습니다. 마찬가지로 비디오 기본 색상과 같은 특정 세부 정보는 신경 쓰지 않을 수 있습니다. 형식 구조체에서는 모든 멤버가 반드시 일부 값으로 채워져야 합니다. 따라서 0을 사용하여 알 수 없거나 기본값을 나타내는 것이 일반적입니다. 다른 구성 요소가 0을 합법적인 값으로 처리하는 경우 이 연습으로 인해 오류가 발생할 수 있습니다. 특성을 사용하면 알 수 없거나 구성 요소와 관련이 없는 특성을 생략하기만 하면 됩니다.
시간이 지남에 따라 요구 사항이 변경됨에 따라 구조의 끝에 추가 데이터를 추가하여 형식 구조가 확장되었습니다. 예를 들어 WAVEFORMATEXTENSIBLEWAVEFORMATEX 구조를 확장합니다. 구성 요소가 구조체 포인터를 다른 구조체 형식으로 캐스팅해야 하기 때문에 이 방법은 오류가 발생하기 쉽습니다. 특성을 안전하게 확장할 수 있습니다.
상호 호환되지 않는 형식 구조가 정의되었습니다. 예를 들어 DirectShow는 VIDEOINFOHEADER 및 VIDEOINFOHEADER2 구조를 정의합니다. 특성은 서로 독립적으로 설정되므로 이 문제가 발생하지 않습니다.
관련 항목