Технологии управления медиапотоками
Рассмотрен компьютерный мультимедийный фреймворк DirectShow. Приведены результаты анализа эволюции технологии, её архитектура, фильтры рендеринга, интеграция видео и 3D. Розглянуто комп’ютерний мультимедійний фреймворк DirectShow. Наведено результати аналізу еволюції технології, її архітектура, філь...
Збережено в:
| Опубліковано в: : | Математичні машини і системи |
|---|---|
| Дата: | 2014 |
| Автори: | , |
| Формат: | Стаття |
| Мова: | Russian |
| Опубліковано: |
Інститут проблем математичних машин і систем НАН України
2014
|
| Теми: | |
| Онлайн доступ: | https://nasplib.isofts.kiev.ua/handle/123456789/84431 |
| Теги: |
Додати тег
Немає тегів, Будьте першим, хто поставить тег для цього запису!
|
| Назва журналу: | Digital Library of Periodicals of National Academy of Sciences of Ukraine |
| Цитувати: | Технологии управления медиапотоками / К.Д. Алексеев, Е.Д. Алексеева // Математичні машини і системи. — 2014. — № 3. — 62-66. — Бібліогр.: 3 назв. — рос. |
Репозитарії
Digital Library of Periodicals of National Academy of Sciences of Ukraine| id |
nasplib_isofts_kiev_ua-123456789-84431 |
|---|---|
| record_format |
dspace |
| spelling |
Алексеев, К.Д. Алексеева, Е.Д. 2015-07-07T17:04:02Z 2015-07-07T17:04:02Z 2014 Технологии управления медиапотоками / К.Д. Алексеев, Е.Д. Алексеева // Математичні машини і системи. — 2014. — № 3. — 62-66. — Бібліогр.: 3 назв. — рос. 1028-9763 https://nasplib.isofts.kiev.ua/handle/123456789/84431 681.31 Рассмотрен компьютерный мультимедийный фреймворк DirectShow. Приведены результаты анализа эволюции технологии, её архитектура, фильтры рендеринга, интеграция видео и 3D. Розглянуто комп’ютерний мультимедійний фреймворк DirectShow. Наведено результати аналізу еволюції технології, її архітектура, фільтри рендерінгу, інтеграція відео і 3D. This paper describes DirectShow computer multimedia framework. The results of analysis of the evolution of technology, architecture, rendering filters, video and 3D integration were shown. ru Інститут проблем математичних машин і систем НАН України Математичні машини і системи Інформаційні і телекомунікаційні технології Технологии управления медиапотоками Технології управління медіапотоками Management technology of mediastreams Article published earlier |
| institution |
Digital Library of Periodicals of National Academy of Sciences of Ukraine |
| collection |
DSpace DC |
| title |
Технологии управления медиапотоками |
| spellingShingle |
Технологии управления медиапотоками Алексеев, К.Д. Алексеева, Е.Д. Інформаційні і телекомунікаційні технології |
| title_short |
Технологии управления медиапотоками |
| title_full |
Технологии управления медиапотоками |
| title_fullStr |
Технологии управления медиапотоками |
| title_full_unstemmed |
Технологии управления медиапотоками |
| title_sort |
технологии управления медиапотоками |
| author |
Алексеев, К.Д. Алексеева, Е.Д. |
| author_facet |
Алексеев, К.Д. Алексеева, Е.Д. |
| topic |
Інформаційні і телекомунікаційні технології |
| topic_facet |
Інформаційні і телекомунікаційні технології |
| publishDate |
2014 |
| language |
Russian |
| container_title |
Математичні машини і системи |
| publisher |
Інститут проблем математичних машин і систем НАН України |
| format |
Article |
| title_alt |
Технології управління медіапотоками Management technology of mediastreams |
| description |
Рассмотрен компьютерный мультимедийный фреймворк DirectShow. Приведены результаты анализа эволюции технологии, её архитектура, фильтры рендеринга, интеграция видео и 3D.
Розглянуто комп’ютерний мультимедійний фреймворк DirectShow. Наведено результати аналізу еволюції технології, її архітектура, фільтри рендерінгу, інтеграція відео і 3D.
This paper describes DirectShow computer multimedia framework. The results of analysis of the evolution of technology, architecture, rendering filters, video and 3D integration were shown.
|
| issn |
1028-9763 |
| url |
https://nasplib.isofts.kiev.ua/handle/123456789/84431 |
| citation_txt |
Технологии управления медиапотоками / К.Д. Алексеев, Е.Д. Алексеева // Математичні машини і системи. — 2014. — № 3. — 62-66. — Бібліогр.: 3 назв. — рос. |
| work_keys_str_mv |
AT alekseevkd tehnologiiupravleniâmediapotokami AT alekseevaed tehnologiiupravleniâmediapotokami AT alekseevkd tehnologííupravlínnâmedíapotokami AT alekseevaed tehnologííupravlínnâmedíapotokami AT alekseevkd managementtechnologyofmediastreams AT alekseevaed managementtechnologyofmediastreams |
| first_indexed |
2025-11-25T21:12:27Z |
| last_indexed |
2025-11-25T21:12:27Z |
| _version_ |
1850553796719017984 |
| fulltext |
62 © Алексеев К.Д., Алексеева Е.Д., 2014
ISSN 1028-9763. Математичні машини і системи, 2014, № 3
УДК 681.31
К.Д. АЛЕКСЕЕВ*, Е.Д. АЛЕКСЕЕВА**
ТЕХНОЛОГИИ УПРАВЛЕНИЯ МЕДИАПОТОКАМИ
*
Институт проблем математических машин и систем НАН Украины, Киев, Украина
**
Киевский национальный университет имени Тараса Шевченка, Киев, Украина
Анотація. Розглянуто комп’ютерний мультимедійний фреймворк DirectShow. Наведено резуль-
тати аналізу еволюції технології, її архітектура, фільтри рендерінгу, інтеграція відео і 3D.
Ключові слова: медіапотоки, медіафільтри, відеообробка.
Аннотация. Рассмотрен компьютерный мультимедийный фреймворк DirectShow. Приведены ре-
зультаты анализа эволюции технологии, её архитектура, фильтры рендеринга, интеграция видео
и 3D.
Ключевые слова: медиапотоки, медиафильтры, видеообработка.
Abstract. This paper describes DirectShow computer multimedia framework. The results of analysis of the
evolution of technology, architecture, rendering filters, video and 3D integration were shown.
Keywords: media streams, media filters, video processing.
1. Введение в технологию DirectShow
DirectShow (Dshow, DS) – мультимедийный фреймворк и интерфейс программирования
приложений (API), разработанный компанией Microsoft для операционных систем семей-
ства Windows. Эта технология пришла на смену технологии Video for Windows. DirectShow
построен на технологии СOM (Component Object Model), что позволяет использовать его в
приложениях, написанных на разных языках программирования, таких как С, С++, С#,
Basic, Delphi и т.д [1].
DirectShow является аналогом таких технологий, как Apple QuickTime (MacOS),
Gstreamer, xine (Linux).
DirectShow – это API, позволяющий Windows-приложениям управлять широким
спектром устройств аудио/видеоввода, включающий (но не ограниченный) DV-камеры,
веб-камеры, DVD-устройства, карты TV-тюнеров. Он также поддерживает различные
форматы от WAV и AVI до Windows Media. DirectShow, кроме этого, расширяемо, оно по-
зволяет поддерживать устройства третьих производителей, форматы и компоненты обра-
ботки.
DirectShow предлагает как высокоуровневую модель приложения, позволяющую
быстро разрабатывать цифровые медиаприложения, так и низкоуровневую классовую мо-
дель, позволяющую третьим производителям создавать собственные компоненты аудио- и
видеообработки.
2. Эволюция технологии
Следует сказать несколько слов об эволюции DirectShow, которая началась с поддержки в
Windows 3.1 видеозахвата, предоставляемого моделью Видео для Windows (Video for
Windows – VfW). VfW считалась прогрессивной технологией для своего времени, но имела
серьезные ограничения. Одним из них было то, что менеджер видеокомпрессии (Video
Compression Manager – VCM) не был разработан для управления кодеками, которые бы пе-
редавали видеофреймы в разном порядке во время сжатия. Таким образом, было затрудни-
тельно писать MPEG-кодеки, базирующиеся на VCM.
Windows также предоставлял простую поддержку аудио- и видеопроигрывания че-
рез набор команд MCI – Media Control Interface, который использовался драйверами
ISSN 1028-9763. Математичні машини і системи, 2014, № 3 63
mciavi. Хотя инфраструктура MCI допускала MPEG-декодеры, она никогда не была полно-
стью портирована на 32-битную архитектуру и не базировалась на COM. Для снятия этих
ограничений Microsoft начала проект, известный под названием Quartz, в котором была
заложена поддержка проигрывания MPEG-1 для Windows.
В то время появились новые устройства, такие, как цифровые видеокамеры, новые
медиаформаты MPEG-2 или DVD, и новые технологии, такие, как видеоконференции.
Становилась понятной необходимость новой оболочки, позволяющей заставить работать
вместе эти новые технологии максимально эффективно не только каждую саму по себе, но
и под единым началом. Эта оболочка должна была быть расширяемой, чтобы третьи про-
изводители могли осуществлять поддержку своих специальных аппаратных средств, не-
стандартных форматов и процессов программной обработки. Эта оболочка должна была
бы максимально упростить разработку программ, предоставить возможность низкоуровне-
вого управления потоковыми операциями и модифицировать необходимые аудио- и ви-
деоданные.
Для соответствия этим многочисленным требованиям группа разработчиков проек-
та Quartz начала с существующего проекта Clockwork. Clockwork был модульной оболоч-
кой, в которой совместно работали полунезависимые компоненты, следуя предписаниям
набора правил, для обработки медиапотоков. Группа разработчиков Quartz'а адаптировала
эту модель для работы с Windows и обеспечила поддержку устройств третьих производи-
телей. Результатом стала базирующаяся на COM потоковая архитектура, которая через
шесть лет стала базисом сотен приложений под Windows.
Эта архитектура первоначально называлась ActiveMovie и впервые появилась в
1995 году с DirectX SDK. В 1996 году ActiveMovie была переименована в DirectShow. В
1998 году, вместе с DirectX Media 6.1, была добавлена поддержка для DVD и приложений
аналогового телевидения. В 2000 году DirectShow стала частью DirectX SDK в составе
DirectX 8.0 и дополнительно стала поддерживать Windows Media Format, DirectShow
Editing Services и API видеоредактирования.
3. Архитектура DirectShow
Цифровые видеопотоки представляют собой последовательности видеофреймов, которые
могут быть несжатыми RGB-изображениями или, если поток сжат, набором цировых зна-
чений, который можно декодировать для получения изображения. Обычно видео проигры-
вается со скоростью 25 или 30 кадров в секунду. Несжатый цифровой аудиопоток содер-
жит последовательность значений, каждое из которых есть целым, представляющую из
себя квантованную (округленную) амплитуду аналогового сигнала в определенный момент
времени. При качестве CD-аудио данные имеют точность 16 бит на отсчет, записываются
и воспроизводятся как звук максимальной частоты 44,1 килогерц. Сжатый видеопоток не
содержит действительных последовательностей данных, но, как и видеопоток, содержит
значения, которые декодер использует для восстановления исходного потока перед тем,
как подать его в звуковую карту [2].
Аудио- и видеопотоки могут быть обработаны самыми разными способами. Они
могут быть скомбинированы, проанализированы, перемешаны, скопированы, сгенерирова-
ны, изменены и т.д. В DirectShow все эти операции скрыты в фильтрах – COM-объектах,
имеющих стандартное поведение. Фильтры, читающие файлы, расщепляющие бинарные
данные на разные (например, аудио и видео) потоки – демультиплексоры, фильтры-
компрессоры и фильтры-декомпрессоры, фильтры, отображающие аудио- или видеодан-
ные, фильтры – драйверы устройств – все это фильтры, которые знают, как они должны
взаимодействовать, кроме обработки данных, с другими фильтрами для передачи потоко-
вых данных. Приложения соединяют эти фильтры в необходимом порядке.
64 ISSN 1028-9763. Математичні машини і системи, 2014, № 3
Фильтры могут быть трех основных типов: фильтры источников для ввода, фильт-
ры преобразования для обработки и фильтры рендеринга для отображения информации.
Фильтр источника вводит данные в поток. Эти данные он может получать из файла
или, например, видеокамеры, веб-камеры, TV-тюнера, сетевого потока и т.д. DirectShow
тесно связан с моделью Windows-драйвером (Windows Driver Model – WDM); любое ме-
диаустройство с правильно реализованным WDM-драйвером автоматически предоставля-
ется для приложения как DirectShow фильтр источника. DirectShow предоставляет также
фильтры источников для ввода данных из файлов, DVD- и VfW-устройств.
Фильтры преобразования получают входящие данные от другого фильтра, обраба-
тывают их и посылают следующему фильтру. Фильтры преобразования могут анализиро-
вать потоки, кодировать их, декодировать и т.д., то есть проводить анализ или манипуля-
ции над аудио- и видеоданными. DirectShow предоставляет множество разнообразных
фильтов преобразования для управления различными сжатиями и форматами файлов,
включая аналоговые и телевизионные сигналы.
Фильтры рендеринга принимают данные от фильтров источников или преобразова-
ния и отображают их на экране, выводят через колонки в файлы, устройства и т.д. Часть
"Direct" в названии "DirectShow" отражает тот факт, что фильтры рендеринга используют
технологии DirectDraw и DirectSound для передачи данных в видео- и звуковую карту.
Вдобавок DirectShow поддерживает свойства потокового ядра, что позволяет таким уст-
ройствам захвата, как ТВ-тюнеры и DVD-устройства, передавать данные на внешние уст-
ройства в режиме ядра для сохранения расходов переходов из режима ядра в пользова-
тельский режим в случаях, когда приложение не требует этих данных.
Ниже приведена схема фильтров и их соединения при проигрывании avi-файла
(рис. 1).
Рис. 1. Соединение фильтров при проигрывании avi-файла
Здесь фильтром источника есть File Source (Async), фильтрами рендеринга - Video
Renderer и Default DirectSound Device, а фильтрами преобразования – AVI Splitter и AVI
Decompressor.
Основной задачей приложения DirectShow являются построение и управление та-
кого рода наборами соединенных фильтров – графом. Для этого используется вспомога-
тельный СОМ объект – Filter Graph Manager. Этот объект поддерживает целый ряд интер-
фейсов для создания и управления графами обработки и воспроизведения медиапотоков.
4. Отображение видео. Фильтры рендеринга. Интеграция видео и 3D
Для отображения видео DirectShow предоставляет целый набор фильтров, основанных на
различных технологиях.
Video Renderer фильтр. Этот фильтр доступен на всех платформах, которые под-
держивают DirectX. Он не предъявляет каких-либо специальных системных требований.
ISSN 1028-9763. Математичні машини і системи, 2014, № 3 65
Этот фильтр использует технологию DirectDraw для отображения, если данная технология
доступна, в противном случае используется технология GDI. Фильтр используется по
умолчанию на всех платформах, предшествующих Windows XP.
Video Mixing Renderer Filter 7 (VMR-7). Этот фильтр доступен на платформе
Windows XP, где является фильтром отображения по умолчанию. VMR-7 всегда использу-
ет технологию DirectDraw7 для отображения. Он обладает свойствами, которые были не-
доступны на традиционном Video Renderer фильтре. Среди этих особенностей стоит отме-
тить прежде всего возможность сведения и композиции нескольких видеопотоков (микши-
рование), а также plug-in модель, позволяющую разработчику получить непосредственный
доступ к DirectDraw поверхностям, используемым фильтром.
Video Mixing Renderer Filter 9 (VMR-9). Это новая версия фильтра-микшера VMR-7.
VMR-9 всегда использует технологию Direct3D9 для рендеринга. Данный фильтр доступен
на всех платформах, которые поддерживают DirectX9. Он не является фильтром по умол-
чанию, так как предъявляет более строгие системные требования, чем традиционный Video
Renderer фильтр.
Overlay Mixer фильтр разработан специально для проигрывания DVD и широкове-
щательного сигнала. Этот фильтр предоставляет интерфейс, позволяющий работать с ап-
паратными MPEG-2-декодерами и ТВ-тюнерами с прямым доступом к видеопамяти.
Enchanced Video Renderer (EVR). Это рендер-фильтр нового поколения, доступный
системам, начиная с Windows Vista.
Остановимся подробнее на описании архитектуры (VMR-9). Именно этот фильтр
используется для отображения видео в нашей системе. Он может работать в трех режимах:
• оконный режим (Windowed). В этом режиме фильтр создает собственное окно, в
котором производится отображение;
• безоконный режим (Windowless). В этом режиме производится отображение в ок-
не, предоставленном приложением;
• безрендерный режим (Renderless). В этом режиме отображения не происходит.
Данный специальный режим предназначен для перехвата приложением распакованных
видеоданных и использования их в собственном контексте.
В нашей системе мы используем безрендерный режим для получения видеоданных
и композиции их в нашем Direct3D-контексте. Такая функциональность доступна благода-
ря модульному дизайну VMR-9-фильтра. Для достижения этих целей мы инкапсулируем в
фильтр наш собственный Allocator/Presenter. В таком режиме использования VMR-9 наше
приложение осуществляет управление окном отображения; аллокацией промежуточных
Direct3D объектов и буфера вывода; оповещением системы воспроизведения об исполь-
зуемых ресурсах; композицией и отображением видеоданных; обрабатывает различного
рода ошибки и исключения Direct3D-подсистемы. В то же время VMR-9 фильтр выполняет
следующие задачи: отслеживает текущее время видеопотока для своевременного предос-
тавления видеокадров; обрабатывает и предоставляет видеоподсистеме информацию о по-
казателях качества отображения; предоставляет апстрим компонентам видеографа совмес-
тимые ресурсы для декодирования видео; в случае необходимости производит предвари-
тельное сведение (микширование) нескольких видеопотоков.
Для успешного решения задачи инкапсуляции Allocator/Presenter в VMR-9-фильтр
необходимо осуществить несколько следующих шагов:
– имплементировать класс, который бы поддерживал интерфейсы
IVMRSurfaceAllocator9 и IVMRImagePresenter9;
– запросить у VMR-9 интерфейсы IVMRFilterConfig9 и
IVMRSurfaceAllocatorNotify9;
– установить VMR-9 в безрендерный режим путем вызова метода
IVMRFilterConfig9::SetRenderingMode с параметром VMR9Mode_Renderless;
66 ISSN 1028-9763. Математичні машини і системи, 2014, № 3
– вызвать метод IVMRSurfaceAllocatorNotify9::AdviseSurfaceAllocator с указателем
на собственный Allocator/Presenter;
– вызвать метод IVMRSurfaceAllocator9::AdviseNotify с указателем на полученный
IVMRSurfaceAllocatorNotify9 интерфейс. На этом шаге устанавливается коммуникация
между фильтром и нашим Allocator/Presenter объектом;
– аллоцировать совместимые Direct3D-поверхности в момент вызова
IVMRSurfaceAllocator9::InitializeDevice;
– VMR-9 получает доступ к аллоцированным поверхностям путем вызова метода
IVMRSurfaceAllocator9::GetSurface;
– отобразить очередной видеокадр в момент вызова
IVMRImagePresenter9::PresentImage. В нашей системе в этот момент мы производим копи-
рование данных поверхности в нашу частную текстуру, которая в дальнейшем использует-
ся в момент рендеринга всей композиции;
– после окончания воспроизведения освободить все ресурсы в момент вызова
IVMRSurfaceAllocator9::TerminateDevice.
5. Выводы
DirectShow – это API, позволяющий Windows-приложениям управлять широким спектром
устройств аудио/видеоввода и включающий (но не ограниченный) DV-камеры, веб-
камеры, DVD-устройства, карты TV-тюнеров.
Основные логические единицы технологии – фильтры. Фильтры могут быть трех
основных типов: фильтры источников для ввода, фильтры преобразования для обработки и
фильтры рендеринга для отображения информации.
Основной задачей приложения DirectShow являются построение и управление раз-
ного рода наборами соединенных фильтров – графом.
Рассмотренные в статье технологии являются эффективным инструментом создания
современных медиаприложений.
СПИСОК ЛИТЕРАТУРЫ
1. http://en.wikipedia.org/wiki/DirectShow.
2. Клименко А.В. Обзор аппаратных средств и API-сервисов определения времени в персональном
компьютере / А.В. Клименко, К.Д. Алексеев // Математичні машини і системи. – 2009. – № 3. –
С. 137 – 143.
3. DirectShow documentation. MSDN. Microsoft [Електронний ресурс]. – Режим доступу:
http://msdn.microsoft.com/ru-ru/library/ms783323(en-us,VS.85).aspx.
Стаття надійшла до редакції 24.06.2014
|