MFT_MESSAGE_COMMAND_DRAIN

저장된 모든 데이터를 드레이닝하도록 MFT(Media Foundation 변환)를 요청합니다.

메시지 매개 변수

없음

설명

이 메시지를 보내려면 IMFTransform::P rocessMessage를 호출합니다.

이 메시지를 보낸 후에는 MFT가 IMFTransform::P rocessInput에 대한 이전 호출의 모든 데이터를 처리할 때까지 지정된 입력 스트림이 입력을 수락하지 않습니다.

드레이닝 프로세스는 동기 MFT와 비동기 MFT 간에 약간 다릅니다.

동기 MFT

  1. 클라이언트가 이 메시지를 보낸 후 ProcessOutput이 오류 코드 MF_E_TRANSFORM_NEED_MORE_INPUT 반환할 때까지 루프에서 IMFTransform::P rocessOutput을 호출합니다.
  2. MFT에 처리할 데이터가 있는 한 ProcessInput 에 대한 추가 호출이 실패합니다. MFT는 저장된 모든 데이터를 사용할 때까지 출력을 계속 생성합니다. MFT는 전체 출력 샘플로 처리할 수 없는 모든 데이터를 삭제합니다. (예를 들어 부분 비디오 프레임을 삭제해야 합니다.)

비동기 MFT

  1. MFT는 처리할 데이터가 더 이상 없을 때까지 METransformHaveOutput 이벤트를 계속 보냅니다. 이 시간 동안 METransformNeedInput 이벤트를 보내지 않습니다.
  2. MFT가 마지막 METransformHaveOutput 이벤트를 보낸 후 METransformDrainComplete 이벤트를 보냅니다.
  3. 드레이닝이 완료되면 MFT는 클라이언트로부터 MFT_MESSAGE_NOTIFY_START_OF_STREAM 메시지를 받을 때까지 다른 METransformNeedInput 이벤트를 보내지 않습니다.

클라이언트가 MFT를 드레이닝한 후 클라이언트는 더 많은 입력 데이터를 보낼 수 있습니다. 드레이닝 작업 후 첫 번째 샘플에는 불연속성 특성(MFSampleExtension_Discontinuity 특성)이 있어야 합니다.

참고

이 설명서의 이전 버전에서는 ulParam 이벤트 매개 변수가 _MFT_DRAIN_TYPE 열거형의 멤버라고 명시했습니다. 정답이 아닙니다. ulParam에는 스트림 식별자가 포함되어 있습니다.

 

구현

비동기 MFT는 드레이닝된 후 항상 METransformDrainComplete 를 반환해야 합니다.

동기 MFT는 이 메시지를 무시하고 다음 조건이 충족되면 S_OK 반환할 수 있습니다.

  • MFT는 한 번에 둘 이상의 입력 샘플을 저장하지 않습니다.
  • 각 입력 샘플은 단일 출력 샘플을 생성합니다.

그렇지 않으면 동기 MFT가 이 메시지를 구현해야 합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트
Windows Vista [데스크톱 앱만 해당]
지원되는 최소 서버
Windows Server 2008 [데스크톱 앱만 해당]
헤더
Mftransform.h

추가 정보

MFT_MESSAGE_TYPE

비동기 MFT