Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Media Foundation (MF) - это основанный на COM конвейер мультимедийной инфраструктуры и инфраструктурная платформа для цифровых мультимедиа в Windows Vista , Windows 7 , Windows 8 , Windows 8.1 и Windows 10 . Это предполагаемая замена Microsoft DirectShow , Windows Media SDK , DirectX Media Objects (DMO) и всех других так называемых «устаревших» мультимедийных API, таких как Audio Compression Manager (ACM) и Video for Windows (VfW) . Существующий DirectShowТехнология предназначена для постепенной замены Media Foundation, начиная с нескольких функций. Некоторое время будут сосуществовать Media Foundation и DirectShow. Media Foundation будет недоступен для предыдущих версий Windows, включая Windows XP .

Первый выпуск, представленный в Windows Vista , ориентирован на качество воспроизведения аудио и видео, контент высокой четкости (например, HDTV ), защиту контента и более унифицированный подход к управлению доступом к цифровым данным для управления цифровыми правами (DRM) и его совместимость. Он интегрирует DXVA 2.0 для разгрузки большей части конвейера обработки видео на оборудование для повышения производительности. Видео обрабатываются в цветовом пространстве, в котором они были закодированы, и передаются аппаратному обеспечению, которое составляет изображение в его собственном цветовом пространстве. Это предотвращает промежуточные преобразования цветового пространства для повышения производительности. MF включает новое средство визуализации видео, называемое Enhanced Video Renderer.(EVR), который является следующей итерацией VMR 7 и 9 . EVR лучше поддерживает синхронизацию воспроизведения и синхронизацию. Он использует службу планировщика классов мультимедиа (MMCSS), новую службу, которая отдает приоритет обработке мультимедиа в реальном времени, чтобы зарезервировать ресурсы, необходимые для воспроизведения, без разрывов и сбоев.

Второй выпуск, включенный в Windows 7, представляет расширенную поддержку медиаформатов и DXVA HD для ускорения HD-контента при использовании драйверов WDDM 1.1. [1]

Архитектура [ править ]

Архитектура Media Foundation

Архитектура МФА делятся на слой управления , серединный слой и слой платформы . Базовый уровень инкапсулирует большую часть функциональности Media Foundation. Он состоит из конвейера медиа-основания, который состоит из трех компонентов: Media Source , Media Sink и Media Foundation Transforms (MFT). Источник мультимедиа - это объект, который действует как источник мультимедийных данных, сжатых или несжатых. Он может инкапсулировать различные источники данных, такие как файл, сетевой сервер или даже видеокамеру, со специфическими для источника функциями, абстрагированными общим интерфейсом . Исходный объект может использовать исходный преобразовательобъект, который создает медиа-источник из URI , файла или байтового потока. Поддержка нестандартных протоколов может быть добавлена ​​путем создания для них преобразователя исходного кода. Исходный объект также может использовать объект секвенсора для использования последовательности источников (список воспроизведения ) или для объединения нескольких источников в один логический источник. Медиа-приемник - это получатель обработанных мультимедийных данных. Приемник мультимедиа может быть приемником рендерера , который отображает контент на устройстве вывода, или приемником архива., который сохраняет содержимое в системе постоянного хранения, например в файле. Приемник рендерера принимает несжатые данные в качестве входных данных, тогда как приемник архива может принимать как сжатые, так и несжатые данные, в зависимости от типа вывода. Данные от медиаисточников до приемников обрабатываются MFT; MFT - это определенные функции, которые преобразуют данные в другую форму. MFT могут включать мультиплексоры и демультиплексоры, кодеки или эффекты DSP, такие как реверберация . На базовом уровне используются такие службы, как доступ к файлам и работа в сети, а также синхронизация часов для определения времени рендеринга мультимедиа. Это часть уровня платформы, который предоставляет службы, необходимые для доступа к потокам байтов источника и приемника, тактовым часам представления и объектной модели, которая позволяет компонентам базового уровня функционировать асинхронно и обычно реализуется как службы ОС. Пауза, остановка, ускоренная перемотка вперед, назад или сжатие по времени могут быть достигнуты путем управления часами презентации.

Однако компоненты конвейера среды передачи не подключены; скорее они просто представлены как дискретные компоненты. Приложение, работающее на уровне управления , должно выбрать, какие типы источников, преобразования и приемники необходимы для конкретной задачи обработки видео, и установить «соединения» между компонентами ( топология) для завершения конвейера потока данных. Например, для воспроизведения сжатого аудио / видео файла конвейер будет состоять из объекта источника файла, демультиплексора для определенного формата контейнера файла для разделения аудио- и видеопотоков, кодеков для распаковки аудио- и видеопотоков, процессоров DSP. для аудио и видео эффектов и, наконец, рендерера EVR, по очереди. Или для приложения видеозахвата видеокамера будет действовать как видео- и аудиоисточники, на которых MFT кодека будут сжимать данные и передавать их в мультиплексор, который объединяет потоки в контейнер; и, наконец, приемник файла или сетевой приемник запишет его в файл или потокпо сети. Приложение также должно координировать поток данных между компонентами конвейера. Уровень управления должен «извлекать» (запрашивать) образцы из одного компонента конвейера и передавать их следующему компоненту, чтобы обеспечить поток данных в конвейере. В этом отличие от модели «проталкивания» DirectShow, в которой компонент конвейера передает данные следующему компоненту. Media Foundation обеспечивает защиту контента, размещая конвейер в защищенной среде выполнения, называемой Protected Media Path.. Компоненты уровня управления требуются для распространения данных по конвейеру со скоростью, с которой визуализация синхронизируется с часами представления. Скорость (или время) рендеринга встраивается как часть мультимедийного потока в виде метаданных. Исходные объекты извлекают метаданные и передают их. Метаданные бывают двух типов: закодированные метаданные , которые представляют собой информацию о скорости передачи данных и времени представления, и описательные метаданные , такие как название и имена авторов. Закодированные метаданные передаются объекту, который управляет сеансом конвейера, а описательные метаданные предоставляются приложению для использования, если оно того пожелает.

Media Foundation предоставляет объект Media Session, который можно использовать для настройки топологий и облегчения потока данных без явного выполнения этого приложением. Он существует на уровне управления и предоставляет объект загрузчика топологии . Приложение указывает требуемую топологию конвейера загрузчику, который затем создает необходимые соединения между компонентами. Объект медиа-сеанса управляет синхронизацией с часами презентации. Он создает объект часов презентации и передает ссылку на него в приемник. Затем он использует события таймера от часов для распространения данных по конвейеру. Он также изменяет состояние часов для обработки запросов на приостановку, остановку или возобновление от приложения.

Практические архитектуры MF [ править ]

Теоретически существует только одна архитектура Media Foundation, и это модель Media Session, Pipeline, Media Source, Transform и Media Sink. Однако эта архитектура может быть сложной в настройке, и существуют значительные возможности для легких, относительно простых в настройке компонентов MF, предназначенных для обработки медиаданных для простых точечных решений. Таким образом, практические соображения вызвали необходимость реализации изменений в фундаментальной конструкции конвейера, и были разработаны такие компоненты, как Source Reader и Sink Writer, которые работают вне модели конвейера. В некоторых источниках [2] архитектура Media Foundation разбита на три общих класса.

  • Архитектура конвейера
  • Архитектура читателя-писателя
  • Гибриды между конвейерной архитектурой и архитектурой читателя-писателя

Архитектура конвейера отличается использованием отдельного объекта Media Session и конвейера. Медиа-данные передаются из одного или нескольких источников мультимедиа в один или несколько приемников мультимедиа и, необязательно, проходят через ноль или несколько преобразований мультимедиа. Медиа-сеанс управляет потоком мультимедийных данных через конвейер, и этот конвейер может иметь несколько разветвлений и ответвлений. Приложение MF может получить доступ к мультимедийным данным при переходе от источника мультимедиа к приемнику мультимедиа, реализовав настраиваемый компонент преобразования мультимедиа и вставив его в соответствующее место в конвейере.

Архитектура Reader-Writer использует компонент, называемый Source Reader, для предоставления мультимедийных данных и компонент Sink Writer для их использования. Source Reader действительно содержит тип внутреннего конвейера, но он недоступен для приложения. Исходное устройство чтения не является источником мультимедиа, а устройство записи приемника не является приемником мультимедиа и не может быть напрямую включено в конвейер или управляться сеансом мультимедиа. Как правило, мультимедийные данные передаются от устройства чтения источника к устройству записи приемника действиями приложения. Приложение либо принимает пакеты мультимедийных данных (называемых образцами мультимедиа) из Source Reader и передает их непосредственно в Sink Writer, либо оно настраивает функцию обратного вызова в Source Reader, которая выполняет ту же операцию. Фактически, поскольку он управляет передачей данных,само приложение выполняет ту же роль, что и медиа-сеанс в приложении с архитектурой конвейера. Поскольку приложение MF управляет передачей образцов мультимедиа между устройством чтения источника и записывающим устройством, оно всегда будет иметь доступ к необработанным мультимедийным данным. Компоненты Source Reader и Sink Writer действительно имеют ограниченные возможности по автоматической загрузке Media Transforms, чтобы помочь с преобразованием формата мультимедийных данных, однако это делается внутренне, и приложение мало контролирует это.Компоненты Source Reader и Sink Writer действительно имеют ограниченные возможности по автоматической загрузке Media Transforms, чтобы помочь с преобразованием формата мультимедийных данных, однако это делается внутренне, и приложение мало контролирует это.Компоненты Source Reader и Sink Writer действительно имеют ограниченные возможности по автоматической загрузке Media Transforms, чтобы помочь с преобразованием формата мультимедийных данных, однако это делается внутренне, и приложение мало контролирует это.

Source Reader и Sink Writer обеспечивают простоту использования, а конвейерная архитектура предлагает чрезвычайно сложный контроль над потоком мультимедийных данных. Однако многие компоненты, доступные для конвейера (например, Enhanced Video Renderer), просто не могут быть легко использованы в архитектурном приложении Reader-Writer. Поскольку структура образца мультимедиа, созданного программой чтения исходного кода, идентична тому, что выводится источником мультимедиа, можно настроить конвейерную архитектуру, в которой образцы мультимедиа перехватываются, когда они проходят через конвейер, а копия передается в Медиа-раковина. Это известно как гибридная архитектура и позволяет иметь приложение, которое использует преимущества сложных возможностей обработки сеанса мультимедиа и конвейера, используя при этом простоту использования Sink Writer.Sink Writer не является частью конвейера и не взаимодействует с медиа-сеансом. Фактически, мультимедийные данные обрабатываются специальным приемником мультимедиа, который называется приемником захвата образцов, который потребляет мультимедийные данные и передает копию устройству записи приемника. Также возможно реализовать гибридную архитектуру с настраиваемым преобразованием мультимедиа, которое копирует образцы мультимедиа и передает их в Sink Writer, когда они проходят через конвейер. В обоих случаях специальный компонент в конвейере эффективно действует как простое приложение Reader-Writer и питает Sink Writer. Как правило, гибридные архитектуры используют конвейер и модуль записи приемника. Теоретически можно реализовать механизм, в котором средство чтения исходного кода могло бы каким-то образом вводить образцы мультимедиа в конвейер, но, в отличие от приемника захвата образцов, такого стандартного компонента не существует.Медиа-данные обрабатываются специальным медиа-приемником, называемым приемником захвата образцов, который потребляет мультимедийные данные и передает копию записывающему устройству приемника. Также возможно реализовать гибридную архитектуру с настраиваемым преобразованием мультимедиа, которое копирует образцы мультимедиа и передает их в Sink Writer, когда они проходят через конвейер. В обоих случаях специальный компонент в конвейере эффективно действует как простое приложение Reader-Writer и питает Sink Writer. Как правило, гибридные архитектуры используют конвейер и модуль записи приемника. Теоретически можно реализовать механизм, в котором средство чтения исходного кода могло бы каким-то образом вводить образцы мультимедиа в конвейер, но, в отличие от приемника захвата образцов, такого стандартного компонента не существует.Медиа-данные обрабатываются специальным медиа-приемником, называемым приемником захвата образцов, который потребляет мультимедийные данные и передает копию записывающему устройству приемника. Также возможно реализовать гибридную архитектуру с настраиваемым преобразованием мультимедиа, которое копирует образцы мультимедиа и передает их в Sink Writer, когда они проходят через конвейер. В обоих случаях специальный компонент в конвейере эффективно действует как простое приложение Reader-Writer и питает Sink Writer. Как правило, гибридные архитектуры используют конвейер и модуль записи приемника. Теоретически можно реализовать механизм, в котором средство чтения исходного кода могло бы каким-то образом вводить образцы мультимедиа в конвейер, но, в отличие от приемника захвата образцов, такого стандартного компонента не существует.Также возможно реализовать гибридную архитектуру с настраиваемым преобразованием мультимедиа, которое копирует образцы мультимедиа и передает их в Sink Writer, когда они проходят через конвейер. В обоих случаях специальный компонент в конвейере эффективно действует как простое приложение Reader-Writer и питает Sink Writer. Как правило, гибридные архитектуры используют конвейер и модуль записи приемника. Теоретически можно реализовать механизм, в котором средство чтения исходного кода могло бы каким-то образом вводить образцы мультимедиа в конвейер, но, в отличие от приемника захвата образцов, такого стандартного компонента не существует.Также возможно реализовать гибридную архитектуру с настраиваемым преобразованием мультимедиа, которое копирует образцы мультимедиа и передает их в Sink Writer, когда они проходят через конвейер. В обоих случаях специальный компонент в конвейере эффективно действует как простое приложение Reader-Writer и питает Sink Writer. Как правило, гибридные архитектуры используют конвейер и модуль записи приемника. Теоретически можно реализовать механизм, в котором средство чтения исходного кода могло бы каким-то образом вводить образцы мультимедиа в конвейер, но, в отличие от приемника захвата образцов, такого стандартного компонента не существует.Теоретически можно реализовать механизм, в котором средство чтения исходного кода могло бы каким-то образом вводить образцы мультимедиа в конвейер, но, в отличие от приемника захвата образцов, такого стандартного компонента не существует.Теоретически можно реализовать механизм, в котором средство чтения исходного кода могло бы каким-то образом вводить образцы мультимедиа в конвейер, но, в отличие от приемника захвата образцов, такого стандартного компонента не существует.

Преобразование Media Foundation [ править ]

Преобразования Media Foundation (MFT) представляют собой общую модель для обработки мультимедийных данных. Они используются в Media Foundation в первую очередь для реализации декодеров, кодеров, микшеров и процессоров цифровых сигналов (DSP) - между медиаисточниками и медиа-приемниками . Преобразования Media Foundation - это эволюция модели преобразования, впервые представленной в DirectX Media Objects (DMO). Их поведение более четко определено. Также могут быть созданы гибридные объекты DMO / MFT. Приложения могут использовать MFT внутри конвейера Media Foundation или использовать их напрямую как автономные объекты. MFT могут быть любого из следующих типов:

  • Аудио и видео кодеки
  • Аудио и видео эффекты
  • Мультиплексоры и демультиплексоры
  • Тройники
  • Преобразователи цветового пространства
  • Преобразователи частоты дискретизации
  • Видео скейлеры

Microsoft рекомендует разработчикам писать Media Foundation Transform вместо фильтра DirectShow для Windows Vista , Windows 7 и Windows 8 . [3] Для редактирования и захвата видео Microsoft рекомендует использовать DirectShow, поскольку они не являются основным направлением Media Foundation в Windows Vista. Начиная с Windows 7, MFT также поддерживают аппаратную обработку видео, кодирование и декодирование для мультимедийных устройств на основе AVStream. [4]

Улучшенное средство визуализации видео [ править ]

Media Foundation использует Enhanced Video Renderer (EVR) для рендеринга видеоконтента, который также действует как микшер. Он может смешивать до 16 одновременных потоков, причем первый поток является эталонным . Все, кроме эталонного потока, могут иметь информацию о прозрачности для каждого пикселя , а также любой указанный z-порядок . Контрольный поток не может иметь прозрачных пикселей и имеет фиксированную позицию z-порядка позади всех потоков. Окончательное изображение накладывается на единую поверхность путем окрашивания каждого пикселя в соответствии с цветом и прозрачностью соответствующего пикселя во всех потоках.

Внутри EVR использует объект микшера для микширования потоков. При необходимости он также может деинтерлейсинг вывода и применить цветокоррекцию. Составной кадр передается объекту- докладчику , который планирует их рендеринг на устройстве Direct3D, которое он совместно использует с DWM и другими приложениями, использующими устройство. Частота кадров выходного видео синхронизируется с частотой кадров опорного потока. Если какой-либо из других потоков (называемых подпотоками ) имеет другую частоту кадров, EVR отбрасывает лишние кадры (если подпоток имеет более высокую частоту кадров) или использует один и тот же кадр более одного раза (если у него более низкая частота кадров).

Поддерживаемые форматы мультимедиа [ править ]

Windows Media Audio и Windows Media Video - единственные поддерживаемые по умолчанию форматы для кодирования через Media Foundation в Windows Vista . Для декодирования в Windows Vista доступен источник файла MP3 для чтения потоков MP3, но приемник файла MP3 для вывода MP3 доступен только в Windows 7. [5] Однако поддержка формата является расширяемой; разработчики могут добавить поддержку других форматов, написав MFT кодировщика / декодера и / или настраиваемые медиаисточники / медиа-приемники.

Windows 7 расширяет поддержку кодеков, доступную в Windows Vista. Он включает источники файлов AVI , WAV , AAC / ADTS для чтения соответствующих форматов [5], источник файлов MPEG-4 для чтения форматов контейнеров MP4 , M4A, M4V, MP4V, MOV и 3GP [6] и файл MPEG-4. сток для вывода в формат MP4. [7]

Как и в Windows Vista, поддержка транскодирования (кодирования) не предоставляется ни одним встроенным приложением Windows, но несколько кодеков включены как Media Foundation Transforms (MFT). [5] В дополнение к кодировщикам и декодерам Windows Media Audio и Windows Media Video , приемнику и источнику файлов ASF, представленных в Windows Vista, [5] Windows 7 включает кодировщик H.264 с уровнем базового профиля 3 и поддержкой основного профиля [ 8] и кодировщик профиля AAC Low Complexity ( AAC-LC ) [9]

Для воспроизведения различных медиаформатов в Windows 7 также представлен декодер H.264 с поддержкой Baseline, Main и High-profile до уровня 5.1, [10] AAC-LC и HE-AAC v1 ( SBR ), многоканальный, HE- AAC v2 ( PS ) стерео декодеры, [11] MPEG-4 Часть 2 Простой профиль и расширенный простой профиль декодеры [12] , который включает в себя декодирование популярных кодеков реализаций , таких как DivX , Xvid и Nero Digital , а также MJPEG [5] и DV [ 13] MFT-декодеры для AVI.Windows Media Player 12 по умолчанию использует встроенные кодеки Media Foundation для воспроизведения этих форматов.

Воспроизведение MIDI также пока не поддерживается с помощью Media Foundation.

Поддержка приложений [ править ]

Приложения, поддерживающие Media Foundation, включают:

  • Проигрыватель Windows Media в Windows Vista и более поздних версиях
  • Windows Media Center в Windows Vista и более поздних версиях
  • Firefox v24 и новее в Windows 7 и новее (только для воспроизведения H.264 )
  • GoldWave 5.60 и более поздние версии используют Media Foundation для импорта и экспорта аудио. Для экспорта форматы AAC и Apple Lossless можно сохранить через Media Foundation.

Любое приложение, использующее Protected Media Path в Windows, также использует Media Foundation.

Ссылки [ править ]

  1. ^ "DXVA-HD" . Архивировано 23 апреля 2012 года . Проверено 18 апреля 2010 .
  2. ^ "Пример источника" . Архивировано 23 ноября 2020 года . Проверено 19 января 2019 .
  3. ^ «Переход с DirectShow на Media Foundation и сравнение двух» . Архивировано из оригинала на 2008-04-09 . Проверено 22 февраля 2007 .
  4. ^ Начало работы с поддержкой аппаратных кодеков в AVStream
  5. ^ a b c d e «Поддерживаемые форматы мультимедиа в Media Foundation» . Архивировано 29 апреля 2010 года . Проверено 18 апреля 2010 .
  6. ^ "Источник файла MPEG-4" . Архивировано 14 марта 2010 года . Проверено 18 апреля 2010 .
  7. ^ "Приемник файлов MPEG-4" . Архивировано 4 августа 2010 года . Проверено 18 апреля 2010 .
  8. ^ "Кодировщик видео H.264" . Архивировано 4 марта 2010 года . Проверено 18 апреля 2010 .
  9. ^ "Кодировщик AAC" . Архивировано 13 октября 2009 года . Проверено 18 апреля 2010 .
  10. ^ "Видео декодер H.264" . Архивировано 21 апреля 2010 года . Проверено 18 апреля 2010 .
  11. ^ «Декодер AAC» . Архивировано 18 марта 2010 года . Проверено 18 апреля 2010 .
  12. ^ «MPEG4 Part 2 Video Decoder» . Архивировано 11 февраля 2010 года . Проверено 18 апреля 2010 .
  13. ^ "DV Video Decoder" . Архивировано 29 марта 2010 года . Проверено 18 апреля 2010 .

Внешние ссылки [ править ]

  • Microsoft Media Foundation
  • Форум Развития Медиа Фонда
  • Блог команды Media Foundation (с примерами)
  • Метаданные источника мультимедиа
  • Media Foundation Pipeline
  • Архитектура Media Foundation
  • О медиа-сессии
  • Улучшенное средство визуализации видео
  • Windows Media Foundation: начало работы с C #