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


Сегменты конвертов

[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать в новом коде MediaPlayer, IMFMediaEngine и аудио/видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, в котором используются устаревшие API, чтобы по возможности использовать новые API.]

Кривая параметра состоит из одного или нескольких сегментов конверта, определенных с помощью структуры MP_ENVELOPE_SEGMENT . Эта структура содержит следующие сведения:

  • Время начала и окончания.
  • Начальная и конечная значения.
  • Тип кривой (линейная, квадратная и т. д.).
  • Необязательные флаги, описанные в кратком разделе.

Клиент добавляет сегменты конверта в параметр путем вызова метода IMediaParams::AddEnvelope и передачи массива MP_ENVELOPE_SEGMENT структур. Перед вызовом метода клиент должен отсортировать сегменты по возрастанию. При обработке данных DMO можно представить, что параметр перемещается по каждому сегменту конверта, как автомобиль, едет по серии холмов. Метод IMediaParams::GetParam возвращает последнее значение.

Между двумя смежными сегментами может быть разрыв. Во время пробелов параметр сохраняет свое предыдущее значение следующим образом:

  • Перед первым сегментом значение является нейтральным.
  • Между сегментами значение является конечным значением предыдущего сегмента.
  • После последнего сегмента значение остается в конечном значении этого сегмента.
  • Если клиент сбрасывает DMO, значение возвращается к нейтральному значению.

Вы можете изменить сегмент, установив один из следующих флагов:

  • MPF_ENVLP_BEGIN_CURRENTVAL. DMO использует последнее значение параметра в качестве начального значения сегмента. Это может быть нейтральное значение или конечное значение из предыдущего сегмента. DMO игнорирует элемент valStartструктуры MP_ENVELOPE_SEGMENT .
  • MPF_ENVLP_BEGIN_NEUTRALVAL. DMO использует нейтральное значение параметра в качестве начального значения для сегмента. Он игнорирует valStart.

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

Параметры мультимедиа