다음을 통해 공유


MFT_OUTPUT_DATA_BUFFER 구조체(mftransform.h)

Media Foundation 변환에 대한 출력 버퍼에 대한 정보를 포함합니다. 이 구조체는 IMFTransform::P rocessOutput 메서드에서 사용됩니다.

구문

typedef struct _MFT_OUTPUT_DATA_BUFFER {
  DWORD         dwStreamID;
  IMFSample     *pSample;
  DWORD         dwStatus;
  IMFCollection *pEvents;
} MFT_OUTPUT_DATA_BUFFER, *PMFT_OUTPUT_DATA_BUFFER;

멤버

dwStreamID

출력 스트림 식별자입니다. ProcessOutput을 호출하기 전에 이 멤버를 유효한 스트림 식별자로 설정합니다.

예외: IMFTransform::GetStreamIDs 메서드가 E_NOTIMPL 반환하는 경우 MFT는 이 멤버를 무시하고 ProcessOutput 메서드에서 pOutputSamples 배열의 인덱스를 스트림 식별자로 사용합니다. 즉, 스트림 0에 대한 배열의 첫 번째 요소, 스트림 1의 경우 두 번째 요소를 사용합니다. 이 경우 호출자가 dwStreamID 를 배열 인덱스와 동일하게 설정하는 것이 좋습니다(필수는 아님).

pSample

IMFSample 인터페이스에 대한 포인터입니다. ProcessOutput을 호출하기 전에 이 멤버를 유효한 IMFSample 포인터 또는 NULL과 동일하게 설정합니다. 자세한 내용은 설명 부분을 참조하십시오.

dwStatus

ProcessOutput을 호출하기 전에 이 멤버를 0으로 설정합니다. 메서드가 반환될 때 MFT는 멤버를 _MFT_OUTPUT_DATA_BUFFER_FLAGS 열거형의 값과 같게 설정할 수 있습니다. 그렇지 않으면 MFT가 이 멤버를 0으로 둡니다.

pEvents

ProcessOutput을 호출하기 전에 이 멤버를 NULL로 설정합니다. 출력에서 MFT는 이 멤버를 유효한 IMFCollection 인터페이스 포인터로 설정할 수 있습니다. 포인터는 0개 이상의 이벤트를 포함하는 수집기를 나타냅니다. 각 이벤트를 얻으려면 IMFCollection::GetElement를 호출하고 IMFMediaEvent 인터페이스에 대해 반환된 IUnknown 포인터를 쿼리합니다. ProcessOutput 메서드가 반환되면 포인터가 NULL이 아닌 경우 호출자는 IMFCollection 포인터를 해제해야 합니다.

설명

선택한 각 출력 스트림에 대해 MFT_OUTPUT_DATA_BUFFER 구조를 제공해야 합니다.

MFT는 출력 샘플에 대해 두 가지 할당 모델을 지원할 수 있습니다.

  • MFT는 출력 샘플을 할당합니다.
  • 클라이언트는 출력 샘플을 할당합니다.
MFT가 지정된 출력 스트림에 대해 지원하는 모델을 찾으려면 IMFTransform::GetOutputStreamInfo를 호출하고 dwFlags 값을 검사.
플래그 할당 모델
MFT_OUTPUT_STREAM_PROVIDES_SAMPLES MFT는 스트림에 대한 출력 샘플을 할당합니다. 이 스트림 에 대해 pSampleNULL 로 설정합니다.
MFT_OUTPUT_STREAM_CAN_PROVIDE_SAMPLES MFT는 두 할당 모델을 모두 지원합니다.
둘 다(기본값) 클라이언트는 스트림에 대한 출력 샘플을 할당해야 합니다.
 

ProcessOutput의 동작은 pSample의 초기 값과 ProcessOutput 메서드의 dwFlags 매개 변수 값에 따라 달라집니다.

  • pSampleNULL이고 dwFlags에 MFT_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER 플래그가 포함된 경우 MFT는 출력 데이터를 삭제합니다.

    제한: 이 출력 스트림에는 MFT_OUTPUT_STREAM_DISCARDABLE 또는 MFT_OUTPUT_STREAM_LAZY_READ 플래그가 있어야 합니다. (출력 스트림에 대한 플래그를 얻으려면 IMFTransform::GetOutputStreamInfo 메서드를 호출합니다.)

  • pSampleNULL이고 dwFlags에 MFT_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER 포함되어 있지 않으면 MFT는 출력 데이터에 대한 샘플을 제공합니다. MFT는 pSample 이 제공하는 샘플을 가리키도록 설정합니다. MFT는 새 샘플을 할당하거나 입력 샘플을 다시 사용할 수 있습니다.

    제한: 이 출력 스트림에는 MFT_OUTPUT_STREAM_PROVIDES_SAMPLES 또는 MFT_OUTPUT_STREAM_CAN_PROVIDE_SAMPLES 플래그가 있어야 합니다.

  • pSampleNULL이 아닌 경우 MFT는 호출자가 제공한 샘플을 사용합니다.

    제한: 이 출력 스트림에는 MFT_OUTPUT_STREAM_PROVIDES_SAMPLES 플래그가 없어야 합니다.

다른 조합이 잘못되어 ProcessOutput 이 E_INVALIDARG 반환합니다.

ProcessOutput에 대한 각 호출은 0개 이상의 이벤트와 출력 스트림당 최대 하나의 샘플을 생성할 수 있습니다.

요구 사항

   
지원되는 최소 클라이언트 Windows Vista [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows Server 2008 [데스크톱 앱 | UWP 앱]
머리글 mftransform.h

참고 항목

IMFTransform::P rocessOutput

미디어 파운데이션 구조

Media Foundation 변환