Share via


미디어 유형 정보(Microsoft Media Foundation)

미디어 형식은 미디어 스트림의 형식을 설명합니다. 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는 VIDEOINFOHEADERVIDEOINFOHEADER2 구조를 정의합니다. 특성은 서로 독립적으로 설정되므로 이 문제가 발생하지 않습니다.

미디어 유형 특성

미디어 유형