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


Сведения о параметрах

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

Метод IMediaParamInfo::GetParamInfo возвращает MP_PARAMINFO структуру, описывающую параметр. Эта структура содержит следующие сведения:

  • Элемент mpType указывает тип данных значения параметра. Для повышения эффективности все параметры реализуются в виде 32-разрядных значений с плавающей запятой. Перечисление MP_TYPE определяет, следует ли интерпретировать значение как целое число, значение с плавающей запятой, логическое значение или перечисление (целочисленный ряд).
  • Элемент mopCaps указывает, какие кривые поддерживает этот параметр. Если тип данных является логическим или перечислением, единственная кривая, которую может поддерживать параметр, — "Jump".
  • Члены mpdMinValue и mpdMaxValue определяют минимальное и максимальное значения для этого параметра. Все кривые для этого параметра должны находиться в этом диапазоне.
  • Элемент mpdNeutralValue является значением параметра по умолчанию.
  • Элемент szLabel — это имя параметра, а член szUnitText — имя единицы измерения для параметра. Примерами могут быть "Volume" и "Decibels", "Frequency" и "kHz". Обе строки являются английскими и никогда не локализуются. DMO может предоставлять локализованные версии с помощью метода IMediaParamInfo::GetParamText .

Сведения для каждого параметра остаются фиксированными на протяжении всего времени существования объекта DMO. Таким образом, клиент может запросить эти сведения один раз, а затем кэшировать их.

Форматы времени

Клиент должен установить метку времени для входных данных, чтобы объект DMO смог вычислить соответствующие значения параметров. По умолчанию метки времени представляют собой единицы в 100 наносекунд, которые также называются эталонным временем. Однако эта единица времени удобна не для всех приложений, поэтому DMO может поддерживать другие форматы времени. Форматы времени определяются с помощью GUID.

GUID Описание
GUID_TIME_REFERENCE Время ссылки
GUID_TIME_MUSIC Части за квартал (PPQN)
GUID_TIME_SAMPLES Выборок в секунду

 

Третьим сторонам рекомендуется при необходимости определять собственные форматы времени. Однако все МДО должны поддерживать время ссылки. Это обеспечивает стандартный базовый план, который может использовать каждый. Чтобы определить, сколько форматов времени поддерживает DMO, вызовите метод IMediaParamInfo::GetNumTimeFormats . Чтобы перечислить поддерживаемые форматы, вызовите метод IMediaParamInfo::GetSupportedTimeFormat .

Чтобы задать формат времени, вызовите метод IMediaParams::SetTimeFormat. Этот метод задает GUID формата времени и данные времени, которые являются числом единиц на такт часов. Например, если формат времени — выборка в секунду, а данные времени — 32, то значение метки времени, равное 10, соответствует 320 выборки.

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