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_OUTPUT_STREAM_PROVIDES_SAMPLES | MFT는 스트림에 대한 출력 샘플을 할당합니다. 이 스트림 에 대해 pSample 을 NULL 로 설정합니다. |
MFT_OUTPUT_STREAM_CAN_PROVIDE_SAMPLES | MFT는 두 할당 모델을 모두 지원합니다. |
둘 다(기본값) | 클라이언트는 스트림에 대한 출력 샘플을 할당해야 합니다. |
ProcessOutput의 동작은 pSample의 초기 값과 ProcessOutput 메서드의 dwFlags 매개 변수 값에 따라 달라집니다.
-
pSample이 NULL이고 dwFlags에 MFT_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER 플래그가 포함된 경우 MFT는 출력 데이터를 삭제합니다.
제한: 이 출력 스트림에는 MFT_OUTPUT_STREAM_DISCARDABLE 또는 MFT_OUTPUT_STREAM_LAZY_READ 플래그가 있어야 합니다. (출력 스트림에 대한 플래그를 얻으려면 IMFTransform::GetOutputStreamInfo 메서드를 호출합니다.)
-
pSample이 NULL이고 dwFlags에 MFT_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER 포함되어 있지 않으면 MFT는 출력 데이터에 대한 샘플을 제공합니다. MFT는 pSample 이 제공하는 샘플을 가리키도록 설정합니다. MFT는 새 샘플을 할당하거나 입력 샘플을 다시 사용할 수 있습니다.
제한: 이 출력 스트림에는 MFT_OUTPUT_STREAM_PROVIDES_SAMPLES 또는 MFT_OUTPUT_STREAM_CAN_PROVIDE_SAMPLES 플래그가 있어야 합니다.
-
pSample이 NULL이 아닌 경우 MFT는 호출자가 제공한 샘플을 사용합니다.
제한: 이 출력 스트림에는 MFT_OUTPUT_STREAM_PROVIDES_SAMPLES 플래그가 없어야 합니다.
ProcessOutput에 대한 각 호출은 0개 이상의 이벤트와 출력 스트림당 최대 하나의 샘플을 생성할 수 있습니다.
요구 사항
지원되는 최소 클라이언트 | Windows Vista [데스크톱 앱 | UWP 앱] |
지원되는 최소 서버 | Windows Server 2008 [데스크톱 앱 | UWP 앱] |
머리글 | mftransform.h |