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


Ввод и вывод данных

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

Медиаплеер Windows предоставляет аудио- и видеоданные подключаемым модулям DSP через буфер ввода, выделенный Медиаплеер Windows. Подключаемые модули DSP возвращают обработанные данные в Медиаплеер Windows через выходной буфер, который также выделяется Медиаплеер Windows. Медиаплеер Windows управляет процессом передачи данных между собой и подключаемым модулем DSP, вызывая методы, реализованные подключаемым модулем. Для подключаемого модуля, выступающего в качестве объекта мультимедиа DirectX (DMO), процесс работает следующим образом:

  1. Медиаплеер Windows вызывает IMediaObject::P rocessInput, передавая указатель на объект IMediaBuffer в подключаемый модуль DSP.
  2. Подключаемый модуль DSP сохраняет количество ссылок на объект входного буфера. Подключаемый модуль DSP возвращает соответствующее значение HRESULT об успешном или неудачном выполнении.
  3. Медиаплеер Windows вызывает IMediaObject::P rocessOutput, передавая в подключаемый модуль DSP указатель на массив DMO_OUTPUT_DATA_BUFFER структур (которые содержат буферы вывода).
  4. Подключаемый модуль DSP обрабатывает данные во входном буфере, а затем копирует данные в соответствующий выходной буфер. Подключаемый модуль DSP освобождает количество ссылок для объекта входного буфера при обработке всех данных в буфере. Затем подключаемый модуль DSP возвращает соответствующее значение HRESULT об успешном или неудачном выполнении.
  5. Медиаплеер Windows отображает содержимое в выходном буфере.

Для подключаемого модуля, действующего в качестве преобразования Media Foundation (MFT), процесс работает следующим образом:

  • Медиаплеер Windows вызывает IMFTransform::P rocessInput, передавая указатель на объект интерфейса IMFSample для подключаемого модуля DSP.
    1. Подключаемый модуль DSP сохраняет количество ссылок на интерфейс IMFSample . Подключаемый модуль DSP возвращает соответствующее значение HRESULT об успешном или неудачном выполнении.
    2. Медиаплеер Windows вызывает IMFTransform::P rocessOutput, передавая в подключаемый модуль DSP указатель на массив MFT_OUTPUT_DATA_BUFFER структур (которые содержат буферы вывода).
    3. Подключаемый модуль DSP обрабатывает данные во входном буфере, а затем копирует данные в соответствующий выходной буфер. Подключаемый модуль DSP освобождает количество ссылок для объекта входного буфера при обработке всех данных в буфере. Затем подключаемый модуль DSP возвращает соответствующее значение HRESULT об успешном или неудачном выполнении.
    4. Медиаплеер Windows отображает содержимое в выходном буфере.

Этот процесс повторяется непрерывно, пока подключаемый модуль включен, и Медиаплеер Windows содержит содержимое для отрисовки.

Примечание

Не записывайте код, который записывает данные во входной буфер или считывает данные из выходного буфера. Неправильный доступ к буферам данных может привести к непредвиденным результатам.

 

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