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


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

Определяет флаги для метода IMFTransform::P rocessOutput .

Синтаксис

typedef enum _MFT_OUTPUT_DATA_BUFFER_FLAGS {
  MFT_OUTPUT_DATA_BUFFER_INCOMPLETE = 0x1000000,
  MFT_OUTPUT_DATA_BUFFER_FORMAT_CHANGE = 0x100,
  MFT_OUTPUT_DATA_BUFFER_STREAM_END = 0x200,
  MFT_OUTPUT_DATA_BUFFER_NO_SAMPLE = 0x300
} ;

Константы

 
MFT_OUTPUT_DATA_BUFFER_INCOMPLETE
Значение: 0x1000000
MFT по-прежнему может создавать выходные данные из этого потока, не получая дополнительных входных данных. Вызовите ProcessOutput еще раз, чтобы обработать следующий пакет входных данных.
MFT_OUTPUT_DATA_BUFFER_FORMAT_CHANGE
Значение: 0x100
Формат в этом выходном потоке изменился или для этого потока используется новый предпочтительный формат. Если этот флаг установлен, MFT очищает тип мультимедиа для потока. Метод ProcessOutput возвращает MF_E_TRANSFORM_STREAM_CHANGE и не создает выходные данные для потока. Дальнейшие вызовы IMFTransform::P rocessInput или ProcessOutput завершаются ошибкой, пока клиент не установит новый тип носителя.
MFT_OUTPUT_DATA_BUFFER_STREAM_END
Значение: 0x200
MFT удалил этот поток вывода. Выходной поток должен иметь флаг MFT_OUTPUT_STREAM_REMOVABLE. (См . IMFTransform::GetOutputStreamInfo.)

Когда MFT удаляет выходной поток, MFT возвращает этот код состояния при следующем вызове ProcessOutput после создания последнего выходного примера. Когда MFT возвращает этот код состояния, он не изменяет образец, содержащийся в элементе pSampleструктуры MFT_OUTPUT_DATA_BUFFER , и не выделяет новый пример, если pSample имеет значение NULL.

После возврата этого кода состояния идентификатор потока для этого выходного потока становится недействительным. Клиент больше не должен предоставлять структуру MFT_OUTPUT_DATA_BUFFER для этого потока при вызове ProcessOutput.

Метод ProcessOutput не возвращает MF_E_TRANSFORM_STREAM_CHANGE при завершении потока, если в другом потоке не требуется этот код возврата.
MFT_OUTPUT_DATA_BUFFER_NO_SAMPLE
Значение: 0x300
Для этого потока нет готового примера. Этот флаг может быть установлен, если MFT имеет несколько потоков вывода, которые создают данные в разное время. Он устанавливает этот флаг для каждого потока, который не готов к получению данных. Он не изменяет выходной пример, содержащийся в элементе pSampleструктуры MFT_OUTPUT_DATA_BUFFER , и не выделяет новый пример pSample имеет значение NULL.

Если потоки не готовы к выводу, MFT не устанавливает этот флаг. Вместо этого метод ProcessOutput возвращает MF_E_TRANSFORM_NEED_MORE_INPUT.

Комментарии

Значения в этом перечислении не являются битовыми флагами, поэтому их не следует объединять с побитовой или. Кроме того, вызывающий объект должен проверить наличие этих флагов с помощью оператора равенства, а не битового И:

// Correct.
if (Buffer.dwStatus == MFT_OUTPUT_DATA_BUFFER_STREAM_END)
{
    ...
}

// Incorrect.
if ((Buffer.dwStatus & MFT_OUTPUT_DATA_BUFFER_STREAM_END) != 0)
{
    ...
}

Требования

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

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

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

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