Перечисление _MFT_OUTPUT_STREAM_INFO_FLAGS (mftransform.h)

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

Синтаксис

typedef enum _MFT_OUTPUT_STREAM_INFO_FLAGS {
  MFT_OUTPUT_STREAM_WHOLE_SAMPLES = 0x1,
  MFT_OUTPUT_STREAM_SINGLE_SAMPLE_PER_BUFFER = 0x2,
  MFT_OUTPUT_STREAM_FIXED_SAMPLE_SIZE = 0x4,
  MFT_OUTPUT_STREAM_DISCARDABLE = 0x8,
  MFT_OUTPUT_STREAM_OPTIONAL = 0x10,
  MFT_OUTPUT_STREAM_PROVIDES_SAMPLES = 0x100,
  MFT_OUTPUT_STREAM_CAN_PROVIDE_SAMPLES = 0x200,
  MFT_OUTPUT_STREAM_LAZY_READ = 0x400,
  MFT_OUTPUT_STREAM_REMOVABLE = 0x800
} ;

Константы

 
MFT_OUTPUT_STREAM_WHOLE_SAMPLES
Значение: 0x1
Каждый образец носителя (интерфейс IMFSample ) выходных данных из MFT содержит полные, необрезованные единицы данных. Определение единицы данных зависит от типа носителя: для несжатого видео — видеокадр; для сжатых данных — сжатый пакет; для несжатого звука — один звуковой кадр.

Для несжатых аудиоформатов этот флаг всегда подразумевается. (Задать флаг допустимо, но не обязательно.) Несжатый аудиокадр никогда не должен охватывать несколько примеров мультимедиа.
MFT_OUTPUT_STREAM_SINGLE_SAMPLE_PER_BUFFER
Значение: 0x2
Каждый выходной пример содержит ровно одну единицу данных, как определено для флага MFT_OUTPUT_STREAM_WHOLE_SAMPLES.

Если этот флаг присутствует, также должен присутствовать флаг MFT_OUTPUT_STREAM_WHOLE_SAMPLES.

MFT, который выводит несжатый звук, не должен устанавливать этот флаг. Для повышения эффективности он должен выводить несколько аудиокадров одновременно.
MFT_OUTPUT_STREAM_FIXED_SAMPLE_SIZE
Значение: 0x4
Все выходные примеры имеют одинаковый размер.
MFT_OUTPUT_STREAM_DISCARDABLE
Значение: 0x8
По запросу клиента MFT может удалить выходные данные из этого потока вывода. Чтобы отменить выходные данные, установите флаг MFT_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER в методе IMFTransform::P rocessOutput .
MFT_OUTPUT_STREAM_OPTIONAL
Значение: 0x10
Этот поток вывода является необязательным. Клиент может отменить выбор потока, не задав тип носителя или задав тип мультимедиа NULL . При отмене выбора необязательного потока выходные данные не создаются.
MFT_OUTPUT_STREAM_PROVIDES_SAMPLES
Значение: 0x100
MFT предоставляет выходные примеры для этого потока, выделяя их внутренним образом или работая непосредственно с входными примерами. MFT не может использовать выходные примеры, предоставленные клиентом для этого потока.

Если этот флаг не задан, MFT должен задать для cbSize ненулевое значение в структуре MFT_OUTPUT_STREAM_INFO , чтобы клиент мог выделить правильный размер буфера. Дополнительные сведения см. в разделе IMFTransform::GetOutputStreamInfo. Этот флаг нельзя объединить с флагом MFT_OUTPUT_STREAM_CAN_PROVIDE_SAMPLES.
MFT_OUTPUT_STREAM_CAN_PROVIDE_SAMPLES
Значение: 0x200
MFT может предоставлять выходные примеры для этого потока или использовать примеры, выделенные клиентом. Этот флаг нельзя сочетать с флагом MFT_OUTPUT_STREAM_PROVIDES_SAMPLES.

Если MFT не устанавливает этот флаг или флаг MFT_OUTPUT_STREAM_PROVIDES_SAMPLES, клиент должен выделить примеры для этого потока вывода. MFT не будет предоставлять собственные примеры.
MFT_OUTPUT_STREAM_LAZY_READ
Значение: 0x400
MFT не требует, чтобы клиент обрабатывал выходные данные для этого потока. Если клиент продолжает отправлять входные данные, не получая выходные данные из этого потока, MFT просто отменяет предыдущие входные данные.
MFT_OUTPUT_STREAM_REMOVABLE
Значение: 0x800
MFT может удалить этот выходной поток во время потоковой передачи. Этот флаг обычно применяется к демультиплексерам, где входные данные содержат несколько потоков, которые могут запускаться и останавливаться во время потоковой передачи. Дополнительные сведения см. в разделе IMFTransform::P rocessOutput.

Комментарии

Прежде чем клиент установит типы носителей на MFT, единственным флагом, гарантированной точностью, является флаг MFT_OUTPUT_STREAM_OPTIONAL. Для всех остальных флагов клиент должен сначала задать тип носителя для каждого потока, не являющегося необязательным.

Флаги MFT_OUTPUT_STREAM_DISCARDABLE и MFT_OUTPUT_STREAM_LAZY_READ определяют различные реакции на то, как MFT может удалять выходные данные.

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

Требования

   
Минимальная версия клиента Windows Vista [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2008 [классические приложения | Приложения UWP]
Верхняя часть mftransform.h

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

MFT_OUTPUT_STREAM_INFO

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

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