다음을 통해 공유


DMO 기본 사항(Microsoft Media Foundation)

이 항목에서는 Windows Media Codecs와 관련된 DDO에 대한 간략한 개요를 제공합니다. DDO에 대한 자세한 내용은 directX 미디어 개체 참조하세요.

DMO는 데이터를 변환하는 COM 개체입니다. 데이터를 전달하면 변환된 데이터가 반환됩니다. 코덱 인코더 DMO의 경우 압축되지 않은 미디어 데이터를 입력하고 DMO는 압축된 미디어 데이터를 제공합니다. DMO를 사용할 때의 주요 이점은 모두 동일한 기본 인터페이스인 IMediaObject구현한다는 것입니다. 이렇게 하면 수행되는 변환 유형에 관계없이 동일한 개체를 사용할 수 있으므로 작업을 간소화할 수 있습니다.

모든 종류의 데이터 변환에 관련된 변수가 있기 때문에 오디오 및 비디오 변환은 다양한 가능한 미디어 구성을 고려해야 합니다. Windows Media 오디오 및 비디오 코덱은 DMO를 사용하여 구성할 수 있어야 하는 다양한 특수 기능도 지원합니다.

일반적으로 디지털 미디어를 압축 및 압축 해제하기 위해 코덱 DDO에 필요한 변수 정보는 다음 세 가지 방법 중 하나로 전달됩니다.

  • 인코더 DMO에 전달하는 압축되지 않은 미디어의 특성과 디코더 DMO에 전달하는 압축된 미디어의 특성을 전달하도록 DMO의 입력 형식을 설정합니다.
  • 인코더 DMO에 의해 전달되는 압축된 미디어의 특성과 디코더 DMO에서 전달되는 압축되지 않은 미디어의 특성을 전달하도록 DMO의 출력 형식을 설정합니다.
  • IPropertyBag 인터페이스의 메서드를 사용하여 코덱 DDO의 다양한 기능을 속성으로 지원하는 다른 설정을 구성합니다. IPropertyBag 모든 코덱 DMO에서 지원하는 표준 COM 인터페이스입니다.

또한 일부 코덱 기능은 코덱 DMO와 관련된 다른 인터페이스를 사용하여 관리됩니다. 이러한 인터페이스는 코덱 개체 섹션의 각 코덱에 대해 나열됩니다.

입력 및 출력 형식은 입력 및 출력 스트림과 관련이 있습니다. 각 스트림은 콘텐츠의 불연속 표현을 나타냅니다. 예를 들어 Windows Media 비디오 인코더 DMO에는 단일 입력 스트림과 두 개의 출력 스트림이 있습니다. 입력 스트림은 압축되지 않은 비디오 샘플을 허용합니다. 두 출력 스트림 중 첫 번째 스트림은 압축된 샘플을 제공합니다. 다른 하나는 압축되지 않은 샘플을 제공합니다. 한 출력 스트림의 개별 샘플은 다른 스트림의 해당 샘플과 동일한 콘텐츠를 나타내지만 각 스트림은 해당 샘플을 다른 형식으로 제공합니다.

각 스트림(입력 또는 출력)은 하나 이상의 미디어 유형을 지원합니다. 미디어 형식 또는 형식은 DMO_MEDIA_TYPE 구조로 설명됩니다. IMediaObject::GetOutputType호출하여 출력 스트림에서 지원하는 형식에 대해 DMO를 쿼리할 수 있습니다. 이 메서드는 해당 스트림에 대한 유효한(경우에 따라 부분적으로 불완전한) 출력 형식을 반환합니다. GetOutputType 반복 호출하고 각 호출에 따라 형식 매개 변수를 증가시켜 출력 스트림에 대해 지원되는 미디어 형식을 열거할 수 있습니다. 전달하는 형식 인덱스가 범위를 벗어나면 메서드는 DMO_E_NO_MORE_ITEMS반환합니다. 입력 형식은 IMediaObject::GetInputType 메서드를 사용하여 동일한 방식으로 열거할 수 있습니다.

DMO에 의해 열거되는 형식은 "기본 설정" 형식일 뿐입니다. 그러나 다른 형식이 지원될 수 있습니다. IMediaObject::SetOutputType호출하여 출력 형식의 유효성을 검사할 수 있습니다. IMediaObject::SetInputType 사용하여 입력 형식의 유효성을 검사합니다. 전달한 DMO_MEDIA_TYPE 구조체가 잘못된 경우 두 메서드 모두 DMO_E_TYPE_NOT_ACCEPTED 반환합니다. 일부 DDO에서는 입력 형식을 열거하기 전에 출력 형식을 설정해야 합니다. Windows Media 오디오 및 비디오 코덱 DMO에는 모두 상호 종속된 유효성 검사가 있는 입력 및 출력이 있습니다. 즉, 설정한 출력 형식은 입력 형식에 대한 유효성 검사 조건을 설정합니다. 설정할 때 유효한 입력 및 출력 형식을 변경하는 몇 가지 속성도 있습니다. 이러한 이유로 형식을 열거하기 전에 DMO에서 원하는 모든 속성을 설정해야 합니다.

DMO에 대한 출력 및 입력 형식을 설정한 경우 샘플 처리를 시작할 수 있습니다. 각 입력 샘플은 IMediaObject::P rocessInput호출을 사용하여 코덱에 전달되며, IMediaObject::P rocessOutput 호출할 때 각 출력 샘플은 코덱에 의해 전달됩니다.

코덱 DDO 작업