_MFT_INPUT_STREAM_INFO_FLAGS 열거형(mftransform.h)
MFT(Media Foundation 변환)의 입력 스트림에 대해 설명합니다.
Syntax
typedef enum _MFT_INPUT_STREAM_INFO_FLAGS {
MFT_INPUT_STREAM_WHOLE_SAMPLES = 0x1,
MFT_INPUT_STREAM_SINGLE_SAMPLE_PER_BUFFER = 0x2,
MFT_INPUT_STREAM_FIXED_SAMPLE_SIZE = 0x4,
MFT_INPUT_STREAM_HOLDS_BUFFERS = 0x8,
MFT_INPUT_STREAM_DOES_NOT_ADDREF = 0x100,
MFT_INPUT_STREAM_REMOVABLE = 0x200,
MFT_INPUT_STREAM_OPTIONAL = 0x400,
MFT_INPUT_STREAM_PROCESSES_IN_PLACE = 0x800
} ;
상수
MFT_INPUT_STREAM_WHOLE_SAMPLES 값: 0x1 입력 데이터의 각 미디어 샘플(IMFSample 인터페이스)에는 완전하고 끊어지지 않은 데이터 단위가 포함되어야 합니다. 데이터 단위의 정의는 미디어 유형에 따라 달라집니다. 압축되지 않은 비디오의 경우 비디오 프레임; 압축된 데이터, 압축된 패킷의 경우 압축되지 않은 오디오의 경우 단일 오디오 프레임입니다. 압축되지 않은 오디오 형식의 경우 이 플래그는 항상 암시됩니다. 플래그를 설정하는 것은 유효하지만 필수는 아닙니다. 압축되지 않은 오디오 프레임은 두 개 이상의 미디어 샘플에 걸쳐서는 안 됩니다. |
MFT_INPUT_STREAM_SINGLE_SAMPLE_PER_BUFFER 값: 0x2 클라이언트가 입력으로 제공하는 각 미디어 샘플에는 MFT_INPUT_STREAM_WHOLE_SAMPLES 플래그에 정의된 대로 정확히 하나의 데이터 단위가 포함되어야 합니다. 이 플래그가 있는 경우 MFT_INPUT_STREAM_WHOLE_SAMPLES 플래그도 있어야 합니다. 압축되지 않은 오디오를 처리하는 MFT는 이 플래그를 설정하면 안 됩니다. MFT는 효율성을 위해 단일 오디오 프레임 이상을 포함하는 버퍼를 허용해야 합니다. |
MFT_INPUT_STREAM_FIXED_SAMPLE_SIZE 값: 0x4 모든 입력 샘플의 크기는 같아야 합니다. 크기는 MFT_INPUT_STREAM_INFO 구조체의 cbSize 멤버에 지정됩니다. MFT는 이 값을 제공해야 합니다. 처리하는 동안 MFT는 입력 샘플의 크기를 확인해야 하며 크기가 잘못된 샘플을 삭제할 수 있습니다. |
MFT_INPUT_STREAM_HOLDS_BUFFERS 값: 0x8 MFT는 IMFTransform::P rocessOutput 이 호출된 후 하나 이상의 입력 샘플을 보유할 수 있습니다. 이 플래그가 있는 경우 MFT_INPUT_STREAM_INFO 구조체의 hnsMaxLatency 멤버는 최대 대기 시간을 제공하고 cbMaxLookahead 멤버는 최대 바이트 수의 lookahead를 제공합니다. |
MFT_INPUT_STREAM_DOES_NOT_ADDREF 값: 0x100 MFT는 IMFTransform::P rocessInput 메서드가 반환된 후에 입력 샘플을 보유하지 않습니다. ProcessInput 메서드가 반환되기 전에 샘플을 해제합니다. 이 플래그가 없는 경우 MFT는 ProcessInput 메서드에 전달되는 샘플에 대한 참조 횟수를 보유할 수 있습니다. MFT가 샘플의 IMFSample 포인터를 해제할 때까지 클라이언트는 버퍼 메모리를 다시 사용하거나 삭제해서는 안 됩니다. 이 플래그가 없는 경우 MFT가 입력 샘플에 대한 참조 횟수를 보유한다고 보장하지는 않습니다. MFT가 이 플래그를 설정하지 않은 경우에도 MFT가 ProcessInput 에서 입력 샘플을 해제하는 것이 유효합니다. 그러나 이 플래그를 설정하면 클라이언트가 버퍼를 다시 사용하는 방법을 최적화할 수 있습니다. ProcessInput에서 반환된 후 입력 샘플을 보유하는 경우 MFT에서 이 플래그를 설정하면 안 됩니다. |
MFT_INPUT_STREAM_REMOVABLE 값: 0x200 이 입력 스트림은 IMFTransform::D eleteInputStream을 호출하여 제거할 수 있습니다. |
MFT_INPUT_STREAM_OPTIONAL 값: 0x400 이 입력 스트림은 선택 사항입니다. 변환은 이 스트림에서 입력을 받지 않고 출력을 생성할 수 있습니다. 호출자는 미디어 형식을 설정하지 않거나 NULL 미디어 형식을 설정하여 스트림을 선택 취소할 수 있습니다. 변환의 모든 입력 스트림은 선택 사항이 될 수 있지만 출력을 생성하려면 하나 이상의 입력을 선택해야 합니다. |
MFT_INPUT_STREAM_PROCESSES_IN_PLACE 값: 0x800 MFT는 현재 위치 처리를 수행할 수 있습니다. 이 모드에서 MFT는 입력 버퍼를 직접 수정합니다. 클라이언트가 ProcessOutput을 호출하면 이 스트림에 전달된 동일한 샘플이 일치하는 스트림 식별자가 있는 출력 스트림에 반환됩니다. 이 플래그는 MFT가 입력 버퍼에 유지되므로 이 플래그를 MFT_INPUT_STREAM_DOES_NOT_ADDREF 플래그와 결합할 수 없음을 의미합니다. 이 플래그가 있는 경우 MFT는 이 입력 스트림에 해당하는 출력 스트림에 대한 MFT_OUTPUT_STREAM_PROVIDES_SAMPLES 또는 MFT_OUTPUT_STREAM_CAN_PROVIDE_SAMPLES 플래그를 설정해야 합니다. ( IMFTransform::GetOutputStreamInfo 참조). |
설명
클라이언트가 변환에서 미디어 형식을 설정하기 전에 정확한 플래그는 MFT_INPUT_STREAM_REMOVABLE 및 MFT_INPUT_STREAM_OPTIONAL 플래그뿐입니다. 다른 모든 플래그의 경우 클라이언트는 먼저 선택 사항이 아닌 모든 스트림에서 미디어 형식을 설정해야 합니다.
기본 처리 모델에서 MFT는 ProcessInput에서 수신하는 샘플에 대한 참조 수를 보유합니다. ProcessInput 내에서 샘플을 즉시 처리하지 않습니다. ProcessOutput이 호출되면 MFT는 출력 데이터를 생성한 다음 입력 샘플을 삭제합니다. 이 모델의 다음과 같은 변형이 정의됩니다.
- MFT가 ProcessInput 과 ProcessOutput 간의 입력 샘플을 보유하지 않는 경우 MFT_INPUT_STREAM_DOES_NOT_ADDREF 설정할 수 있습니다.
- MFT가 ProcessOutput에 대한 다음 호출 이외의 일부 입력 샘플을 보유하는 경우 MFT_INPUT_STREAM_HOLDS_BUFFERS 설정할 수 있습니다.
요구 사항
지원되는 최소 클라이언트 | Windows Vista [데스크톱 앱 | UWP 앱] |
지원되는 최소 서버 | Windows Server 2008 [데스크톱 앱 | UWP 앱] |
머리글 | mftransform.h |