Обновление существующих подключаемых модулей DSP

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

Подключаемые модули DSP, созданные до выпуска пакета SDK для Медиаплеер Windows 11, могут работать неправильно с Медиаплеер Windows 11, работающих в Windows Vista. Чтобы пользователи, которые запускают Медиаплеер Windows 11 в Windows Vista, могли использовать ваши подключаемые модули, необходимо внести некоторые изменения в код подключаемого модуля DSP, перекомпилировать проект и распространить обновленный подключаемый модуль среди клиентов.

Проекты, созданные с помощью последней версии мастера подключаемого модуля Медиаплеер Windows, будут содержать необходимые обновления. См. Обновления мастера подключаемых модулей DSP для Медиаплеер Windows 11. (Рекомендуется запустить мастер, чтобы создать новый пример проекта, а затем использовать средство, например Windiff.exe, которое поставляется вместе с Visual Studio, чтобы проверить различия между примером кода и рабочим кодом.)

Существует три main изменения, которые необходимо внести во все существующие подключаемые модули DSP:

  • Изменение способа регистрации подключаемого модуля. Возможно, существующий подключаемый модуль регистрирует потоковую модель как "Apartment". Медиаплеер Windows 11, работающих в Windows Vista, требует, чтобы подключаемые модули DSP регистрируют модель потоков как "Оба". Это можно исправить, изменив значение модели потоков в файле projectname.rgs следующим образом:

    val ThreadingModel = s 'Both'
    
    

    Примечание

    При указании модели потоков в качестве "Оба" удаляется любая сериализация, которая предоставляет com для вызовов пользовательских интерфейсов. Если вы выполняете вызовы пользовательских интерфейсов из нескольких потоков, эту сериализацию необходимо предоставить самостоятельно.

     

    Медиаплеер Windows 11 обеспечивает правильную сериализацию вызовов интерфейсов DMO.

    1. Добавьте вызовы IWMPMediaPluginRegistrar::WMPRegisterPlayerPlugin и IWMPMediaPluginRegistrar::WMPUnRegisterPlayerPlugin с новым типом подключаемого модуля: WMP_PLUGINTYPE_DSP_OUTOFPROC в DllRegisterServer и DllUnregisterServer в файле projectnamedll.cpp. Дополнительные сведения см. на страницах справочника по этим методам.
    2. Создайте и распространяйте библиотеку DLL прокси-сервера или заглушки, чтобы включить маршалинг COM любого пользовательского интерфейса, реализованного в классе подключаемого модуля или созданного им. Настраиваемый интерфейс — это любой собственный интерфейс, который вы определяете и реализуете для использования объектом подключаемого модуля. Сюда входит пользовательский интерфейс, используемый страницей свойств, если он указан, но также может включать интерфейсы, которые подключаются к подключаемым модулям пользовательского интерфейса, например. Пример пользовательского интерфейса, созданного мастером подключаемых модулей, — Iprojectname. Примеры интерфейсов, которые не являются пользовательскими интерфейсами, включают IMediaObject и IWMPPluginEnable.

Если подключаемый модуль DSP обрабатывает звук, необходимо также добавить поддержку следующих новых аудиоформатов:

  • WAVE_FORMAT_IEEE_FLOAT
  • WAVE_FORMAT_EXTENSIBLE с KSDATAFORMAT_SUBTYPE_IEEE_FLOAT подчиненного формата.

Если подключаемый модуль DSP обрабатывает видео, необходимо добавить поддержку видеоформата NV12.

Пример обработки этих типов форматов см. в примере подключаемого модуля DSP для аудио или видео, создаваемого мастером.

Сведения о проекте прокси-сервера или заглушки

Возможно, самый простой способ создать проект dll прокси-сервера или заглушки для подключаемого модуля DSP — запустить мастер подключаемых модулей DSP. При этом будет создан пример проекта прокси-сервера или заглушки, который можно изменить для работы с существующим кодом. Вам потребуется внести следующие изменения:

  1. Удалите из кода все существующие определения для пользовательских интерфейсов. Например, мастер подключаемых модулей DSP из пакета SDK для Медиаплеер Windows 10 создал определение интерфейса Iprojectname в файле projectname.h с помощью интерфейса ключевое слово.
  2. Определите пользовательские интерфейсы в IDL-файле проекта прокси-сервера или заглушки.
  3. Создайте проект прокси-сервера или заглушки перед проектом main. Вы можете настроить visual Studio для автоматического выполнения этого действия, если оба проекта являются частью одного решения.
  4. Компилятор MIDL создаст новый файл заголовка с именем в формате имя проекта_h.h. Этот заголовок необходимо включить в проект main (в файле имя_проекта.h). Он содержит определения для пользовательских интерфейсов.

Распространение обновленного подключаемого модуля

Обновленный подключаемый модуль можно установить на компьютерах пользователей точно так же, как и раньше. Однако теперь необходимо также распространить и зарегистрировать библиотеку DLL прокси-сервера или заглушки.

Общие сведения о подключаемом модуле DSP