Поделиться через


перечисление _MFT_INPUT_STREAM_INFO_FLAGS (mftransform.h)

Описывает входной поток в преобразовании Media Foundation (MFT).

Синтаксис

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
Все входные образцы должны иметь одинаковый размер.
Размер задается в элементе cbSizeструктуры MFT_INPUT_STREAM_INFO . Это значение должно быть указано в MFT. Во время обработки MFT должен проверять размер входных выборок и может удалять образцы с неправильным размером.
MFT_INPUT_STREAM_HOLDS_BUFFERS
Значение: 0x8
MFT может содержать одну или несколько входных выборок после вызова IMFTransform::P rocessOutput . Если этот флаг присутствует, член hnsMaxLatency структуры MFT_INPUT_STREAM_INFO дает максимальную задержку, а член cbMaxLookahead — максимальное количество байтов lookahead.
MFT_INPUT_STREAM_DOES_NOT_ADDREF
Значение: 0x100
MFT не содержит входные образцы после возврата метода IMFTransform::P rocessInput . Он освобождает образец до возврата метода ProcessInput .

Если этот флаг отсутствует, MFT может содержать количество ссылок на образцы, передаваемые в метод ProcessInput . Клиент не должен повторно использовать или удалять буферную память до тех пор, пока MFT не отпустит указатель IMFSample образца.

Если этот флаг отсутствует, это не гарантирует, что MFT содержит количество ссылок на входные образцы. MFT допускает освобождение входных примеров в ProcessInput , даже если MFT не устанавливает этот флаг. Однако установка этого флага может позволить клиенту оптимизировать повторное использование буферов.

MFT не должен устанавливать этот флаг, если он когда-либо удерживает входной образец после возвращения из ProcessInput.
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

См. также раздел

MFT_INPUT_STREAM_INFO

Перечисления Media Foundation

Преобразования Media Foundation