Медиа Фонд
Эта статья нуждается в дополнительных цитатах для проверки . ( ноябрь 2012 г. ) |
Media Foundation ( MF ) — это на базе COM конвейер мультимедийной платформы и инфраструктурная платформа для цифровых мультимедиа в Windows Vista , Windows 7 , Windows 8 , Windows 8.1 , Windows 10 и Windows 11 . Это предполагаемая замена Microsoft DirectShow , Windows Media SDK , объектов DirectX Media (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]
Архитектура
[ редактировать ]Архитектура MF разделена на уровень управления , базовый уровень и уровень платформы . Базовый уровень инкапсулирует большую часть функций Media Foundation. Он состоит из конвейера медиа-фундамента, который состоит из трех компонентов: медиа-источника , медиа-приемника и медиа-фундамента (MFT). Медиа-источник — это объект, который действует как источник мультимедийных данных, как сжатых, так и несжатых. Он может инкапсулировать различные источники данных, такие как файл, сетевой сервер или даже видеокамера, при этом специфичные для источника функции абстрагируются общим интерфейсом . Исходный объект может использовать объект исходного преобразователя , который создает медиа-источник из URI , файла или байтового потока. Поддержку нестандартных протоколов можно добавить, создав для них преобразователь источника. Исходный объект также может использовать объект секвенсора для использования последовательности источников ( списка воспроизведения ) или для объединения нескольких источников в один логический источник. Медиа-приемник является получателем обработанных мультимедийных данных. Медиа-приемник может быть либо приемник рендеринга , который отображает контент на устройстве вывода, или приемник архива , который сохраняет контент в постоянной системе хранения, например в файле. Приемник средства рендеринга принимает на вход несжатые данные, тогда как приемник архива может принимать как сжатые, так и несжатые данные, в зависимости от типа вывода. Данные от медиа-источников до приемников обрабатываются MFT; MFT — это определенные функции, которые преобразуют данные в другую форму. MFT могут включать в себя мультиплексоры и демультиплексоры, кодеки или DSP эффекты , такие как реверберация . Базовый уровень использует такие службы, как доступ к файлам и сети, а также синхронизацию часов для синхронизации рендеринга мультимедиа. Они являются частью уровня платформы , который предоставляет услуги, необходимые для доступа к потокам байтов источника и приемника, часам представления и объектной модели, которая позволяет компонентам основного уровня работать асинхронно и обычно реализуется как службы ОС. Пауза, остановка, ускоренная перемотка вперед, назад или сжатие времени могут быть достигнуты путем управления часами презентации.
Однако компоненты медиаконвейера не подключены; скорее они просто представлены как дискретные компоненты. Приложение, работающее на уровне управления, должно выбрать, какие типы источников, преобразования и приемники необходимы для конкретной задачи обработки видео, и настроить «соединения» между компонентами ( топологию ) для завершения конвейера потока данных. Например, для воспроизведения сжатого аудио/видео файла конвейер будет состоять из объекта-источника файла, демультиплексора для конкретного формата контейнера файлов для разделения аудио- и видеопотоков, кодеков для распаковки аудио- и видеопотоков, процессоров DSP. для аудио- и видеоэффектов и, наконец, для рендеринга EVR. Или для приложения видеозахвата видеокамера будет выступать в качестве источника видео и звука, на котором кодеки MFT будут сжимать данные и передавать их на мультиплексор, который объединяет потоки в контейнер; и, наконец, файловый или сетевой приемник запишет его в файл или поток по сети. Приложение также должно координировать поток данных между компонентами конвейера. Уровень управления должен «извлекать» (запрашивать) образцы из одного компонента конвейера и передавать их следующему компоненту, чтобы обеспечить поток данных внутри конвейера. Это в отличие от «Push»-модель DirectShow , в которой компонент конвейера передает данные следующему компоненту. Media Foundation обеспечивает защиту контента путем размещения конвейера в защищенной среде выполнения, называемой Protected Media Path . Компоненты уровня управления необходимы для распространения данных по конвейеру со скоростью, при которой рендеринг синхронизируется с тактовой частотой представления. Скорость (или время) рендеринга внедряется как часть мультимедийного потока в виде метаданных. Исходные объекты извлекают метаданные и передают их. Метаданные бывают двух типов: закодированные метаданные , которые представляют собой информацию о скорости передачи данных и времени представления, и описательные метаданные , такие как название и имена авторов. Закодированные метаданные передаются объекту, который управляет сеансом конвейера, а описательные метаданные предоставляются приложению для использования, если оно того пожелает.
Media Foundation предоставляет объект Media Session , который можно использовать для настройки топологий и облегчения потока данных без явного выполнения этого приложением. Он существует на уровне управления и предоставляет объект загрузчика топологии . Приложение задает необходимую топологию конвейера загрузчику, который затем создает необходимые соединения между компонентами. Объект медиа-сеанса управляет синхронизацией с часами презентации. Он создает объект часов презентации и передает ссылку на него в приемник. Затем он использует события таймера от часов для распространения данных по конвейеру. Он также изменяет состояние часов для обработки запросов на паузу, остановку или возобновление работы приложения.
Практическая архитектура MF
[ редактировать ]Теоретически существует только одна архитектура Media Foundation: модель Media Session, Pipeline, Media Source, Transform и Media Sink. Однако эта архитектура может быть сложной в настройке, и существует значительный простор для легких и относительно простых в настройке компонентов MF, предназначенных для обработки мультимедийных данных для простых точечных решений. Таким образом, практические соображения потребовали реализации вариаций фундаментальной конструкции Pipeline, и были разработаны такие компоненты, как Source Reader и Sink Writer, которые работают вне модели Pipeline. Некоторые источники [2] разделил архитектуру Media Foundation на три основных класса.
- Трубопроводная архитектура
- Архитектура чтения-писателя
- Гибриды между конвейерной архитектурой и архитектурой чтения-записи
Архитектура конвейера отличается использованием отдельного объекта сеанса мультимедиа и конвейера. Мультимедийные данные передаются от одного или нескольких медиа-источников к одному или нескольким медиа-приемникам и, необязательно, через ноль или несколько медиа-преобразований. Именно медиа-сессия управляет потоком медиа-данных через конвейер, и этот конвейер может иметь несколько ответвлений и ветвей. Приложение MF может получить доступ к медиаданным при их перемещении от источника мультимедиа к приемнику мультимедиа, реализовав собственный компонент преобразования мультимедиа и вставив его в подходящее место в конвейере.
Архитектура Reader-Writer использует компонент Source Reader для предоставления мультимедийных данных и компонент Sink Writer для их использования. Source Reader содержит внутренний конвейер, но он недоступен для приложения. Source Reader не является медиа-источником, а приемник-писатель не является медиа-приемником, и ни один из них не может быть напрямую включен в конвейер или управляться с помощью медиа-сеанса. Как правило, медиаданные передаются от источника чтения к приемнику записи в результате действий приложения. Приложение либо возьмет пакеты медиаданных (называемые медиа-образцами) из Source Reader и передаст их непосредственно в Sink Writer, либо настроит функцию обратного вызова в Source Reader, которая выполнит ту же операцию. Фактически, управляя транспортировкой данных, само приложение выполняет роль, аналогичную роли медиа-сеанса в приложении с конвейерной архитектурой. Поскольку приложение MF управляет передачей образцов мультимедиа между устройством чтения источника и устройством записи приемника, оно всегда будет иметь доступ к необработанным медиаданным. Компоненты Source Reader и Sink Writer имеют ограниченную возможность автоматически загружать Media Transforms для облегчения преобразования формата мультимедийных данных, однако это делается внутри, и приложение мало что может контролировать.
Source Reader и Sink Writer обеспечивают простоту использования, а конвейерная архитектура обеспечивает чрезвычайно сложный контроль над потоком мультимедийных данных. Однако многие компоненты, доступные для конвейера (например, Enhanced Video Renderer), просто невозможно использовать в приложении с архитектурой чтения-записи. Поскольку структура образца мультимедиа, создаваемого устройством чтения источника, идентична структуре вывода источника мультимедиа, можно настроить конвейерную архитектуру, в которой образцы мультимедиа перехватываются при прохождении через конвейер, и копия передается Медиа-раковина. Это известно как гибридная архитектура, и она позволяет создать приложение, которое использует преимущества сложных возможностей обработки медиа-сеанса и конвейера, одновременно используя простоту использования Sink Writer. Sink Writer не является частью конвейера и не взаимодействует с сеансом мультимедиа. По сути, медиаданные обрабатываются специальным приемником мультимедиа, называемым приемником захвата выборки, который потребляет медиаданные и передает копию устройству записи в приемник. Также возможно реализовать гибридную архитектуру с пользовательским преобразованием мультимедиа, которое копирует образцы мультимедиа и передает их устройству записи в приемник по мере их прохождения через конвейер. В обоих случаях специальный компонент конвейера эффективно действует как простое приложение Reader-Writer и снабжает Sink Writer. Как правило, в гибридных архитектурах используются конвейер и приемник записи. Теоретически можно реализовать механизм, в котором средство чтения исходного кода могло бы каким-то образом вставлять образцы мультимедиа в конвейер, но, в отличие от приемника семпла захвата, такого стандартного компонента не существует.
Медиа Фонд Трансформация
[ редактировать ]Преобразования 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 Part 2 Simple Profile и Advanced Simple Profile Декодеры [12] который включает в себя декодирование популярных реализаций кодеков, таких как DivX , Xvid и Nero Digital , а также MJPEG. [5] и ДВ [13] Декодеры MFT для AVI. Проигрыватель Windows Media 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.
Ссылки
[ редактировать ]- ^ «DXVA-HD» . Архивировано из оригинала 20 апреля 2012 г. Проверено 18 апреля 2010 г.
- ^ «Пример источника» . Гитхаб . Архивировано из оригинала 23 ноября 2020 г. Проверено 19 января 2019 г.
- ^ «Миграция с DirectShow на Media Foundation и их сравнение» . Архивировано из оригинала 9 апреля 2008 г. Проверено 22 февраля 2007 г.
- ^ Начало работы с поддержкой аппаратных кодеков в AVStream
- ^ Jump up to: а б с д и «Поддерживаемые форматы мультимедиа в Media Foundation» . Архивировано из оригинала 29 апреля 2010 г. Проверено 18 апреля 2010 г.
- ^ «Источник файла MPEG-4» . Архивировано из оригинала 14 марта 2010 г. Проверено 18 апреля 2010 г.
- ^ «Приёмник файлов MPEG-4» . Архивировано из оригинала 4 августа 2010 г. Проверено 18 апреля 2010 г.
- ^ «Видеокодер H.264» . Архивировано из оригинала 4 марта 2010 г. Проверено 18 апреля 2010 г.
- ^ «Кодер AAC» . Архивировано из оригинала 13 октября 2009 г. Проверено 18 апреля 2010 г.
- ^ «Видеодекодер H.264» . Архивировано из оригинала 21 апреля 2010 г. Проверено 18 апреля 2010 г.
- ^ «ААС-декодер» . Архивировано из оригинала 18 марта 2010 г. Проверено 18 апреля 2010 г.
- ^ «Видеодекодер MPEG4, часть 2» . Архивировано из оригинала 11 февраля 2010 г. Проверено 18 апреля 2010 г.
- ^ «DV-видеодекодер» . Архивировано из оригинала 29 марта 2010 г. Проверено 18 апреля 2010 г.