IMFTransform::GetOutputAvailableType 메서드(mftransform.h)

이 MFT(Media Foundation 변환)에서 출력 스트림에 사용할 수 있는 미디어 형식을 가져옵니다.

구문

HRESULT GetOutputAvailableType(
  [in]  DWORD        dwOutputStreamID,
  [in]  DWORD        dwTypeIndex,
  [out] IMFMediaType **ppType
);

매개 변수

[in] dwOutputStreamID

출력 스트림 식별자입니다. 스트림 식별자 목록을 얻으려면 IMFTransform::GetStreamIDs를 호출합니다.

[in] dwTypeIndex

검색할 미디어 형식의 인덱스입니다. 미디어 형식은 0에서 인덱싱되고 대략적인 기본 설정 순서로 반환됩니다.

[out] ppType

IMFMediaType 인터페이스에 대한 포인터를 받습니다. 호출자는 인터페이스를 해제해야 합니다.

반환 값

이 메서드는 HRESULT를 반환합니다. 가능한 값에는 다음 표에 있는 값이 포함되지만, 이에 국한되는 것은 아닙니다.

반환 코드 Description
S_OK
메서드가 성공했습니다.
E_NOTIMPL
MFT에는 사용 가능한 출력 형식 목록이 없습니다.
MF_E_INVALIDSTREAMNUMBER
잘못된 스트림 식별자입니다.
MF_E_NO_MORE_TYPES
dwTypeIndex 매개 변수가 범위를 벗어났습니다.
MF_E_TRANSFORM_TYPE_NOT_SET
출력 형식을 설정하기 전에 입력 형식을 설정해야 합니다.

설명

MFT는 각 출력 스트림에 사용 가능한 미디어 형식 목록을 정의하고 기본 설정으로 정렬합니다. 이 메서드는 출력 스트림에 사용 가능한 미디어 형식을 열거합니다. 사용 가능한 형식을 열거하려면 메서드가 MF_E_NO_MORE_TYPES 반환할 때까지 dwTypeIndex를 증분합니다.

한 스트림에서 미디어 형식을 설정하면 다른 스트림에 사용 가능한 형식을 변경하거나 기본 설정 순서를 변경할 수 있습니다. 그러나 MFT는 사용 가능한 형식 목록을 동적으로 업데이트할 필요가 없습니다. 특정 입력 형식을 설정할 수 있는지 여부를 테스트하는 유일한 방법은 IMFTransform::SetOutputType을 호출하는 것입니다.

경우에 따라 MFT는 하나 이상의 입력 형식이 설정될 때까지 출력 형식 목록을 반환할 수 없습니다. 이 경우 메서드는 MF_E_TRANSFORM_TYPE_NOT_SET 반환합니다.

이 메서드를 구현하려면 MFT가 필요하지 않습니다. 그러나 지원되는 형식이 간단하고 MFTGetInfo 함수를 통해 검색할 수 없는 한 대부분의 MFT는 이 메서드를 구현해야 합니다.

이 메서드는 부분 미디어 형식을 반환할 수 있습니다. 부분 미디어 형식에는 형식에 대한 불완전한 설명이 포함되어 있으며 호출자에게 힌트를 제공하는 데 사용됩니다. 예를 들어 부분 형식에는 주 형식 및 하위 형식 GUID만 포함될 수 있습니다. 그러나 클라이언트가 MFT에서 입력 형식을 설정한 후 MFT는 일반적으로 추가 수정 없이 사용할 수 있는 하나 이상의 전체 출력 형식을 반환해야 합니다. 자세한 내용은 전체 및 부분 미디어 형식을 참조하세요.

일부 MFT는 MFT가 첫 번째 입력 샘플을 받을 때까지 출력 형식의 정확한 목록을 제공할 수 없습니다. 예를 들어 MFT는 형식을 추론하기 위해 첫 번째 패킷 헤더를 읽어야 할 수 있습니다. MFT는 다음과 같이 이 상황을 처리해야 합니다.

  1. MFT는 입력을 받기 전에 생성할 수 있는 하나 이상의 출력 형식 목록을 제공합니다. 예를 들어 MPEG-2 디코더는 MPEG-2 기본 프로필/기본 수준을 설명하는 미디어 형식을 반환할 수 있습니다.
  2. 클라이언트는 이러한 형식 중 하나(일반적으로 첫 번째) 중 하나를 선택하고 출력 스트림에서 설정합니다.
  3. 클라이언트는 IMFTransform::P rocessInput을 호출하여 첫 번째 입력 샘플을 제공합니다.
  4. 출력 형식이 입력 데이터를 준수하지 않는 경우 변환은 ProcessOutput 메서드의 형식 변경 신호를 보냅니다. 형식 변경에 대한 자세한 내용은 IMFTransform::P rocessOutput을 참조하세요.
  5. 는 GetOutputAvailableType을 다시 호출합니다. 이 시점에서 메서드는 입력 데이터를 반영하는 업데이트된 형식 목록을 반환해야 합니다.
  6. 클라이언트는 이 목록에서 새 출력 형식을 선택하고 SetOutputType을 호출합니다.
mftransform.h를 포함하기 전에 MFT_UNIQUE_METHOD_NAMES 정의된 경우 이 메서드의 이름은 MFTGetOutputAvailableType으로 바뀝니다. 하이브리드 DMO/MFT 개체 만들기를 참조하세요.

구현 정보

MFT가 미디어 형식을 내부적으로 저장하는 경우 MFT는 원래 형식에 대한 포인터가 아닌 미디어 형식의 복제본을 반환해야 합니다. 그렇지 않으면 호출자가 형식을 수정하고 MFT의 내부 상태를 변경할 수 있습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows Server 2008 [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 mftransform.h
라이브러리 Mfuuid.lib

추가 정보

IMFTransform

Media Foundation 변환