Сегменты конверта
[Функция, связанная с этой страницей, 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.
Эти флаги можно рассматривать как захват начальной точки сегмента и перемещение его вверх или вниз, а конечное значение остается фиксированным. Сегмент будет "растянуть" соответственно.
Связанные разделы