Сегодня 26 апреля 2024
18+
MWC 2018 2018 Computex IFA 2018
реклама
Программное обеспечение

Возвращение к OpenML

⇣ Содержание

2. OpenMLdc

API управления видеоподсистемой графических устройств OpenMLdc обеспечивает программный интерфейс для легкой инициализации, установки и изменения параметров управления устройствами выходного видеосигнала, а так же инициализации и управления каналами устройств отображения видеоинформации (это может быть как компьютерный монитор, так и телеприемник HDTV (телевидение высокой четкости)).

Этот компонент позволяет осуществлять управление следующими компонентами:

  • экранами и каналами формирования изображения
  • получением информации о мониторе
  • позиционированием канала выходного видеосигнала
  • запросами и параметрами настройки формата видеосигнала
  • вертикальным обратным ходом луча
  • чересстрочной или прогрессивной разверткой
  • управление пилообразными сигналами коэффициента контрастности
  • синхронизацией видеосигнала

API MLdc состоит из следующих компонент:

  • механизма запроса наличия управляемых MLdc устройств вывода видеоинформации в системе и их инициализации.
  • механизма инициализации и контроля выходного видеосигнала.
  • службы сообщений статуса видеосигнала, в процессе его прохождения от видео устройства до приложения.
  • система организации очереди буферизации сообщений, полученных от устройства вывода видеосигнала.
  • механизм, для связи с мониторами, которые способны отправлять и принимать команды.
  • расширенный интерфейс программирования, позволяющий сторонним программистам писать собственные расширения к API MLdc.
  • протокол удаленного доступа, который позволяет приложениям обращаться к устройствам ввода/вывода аудио/видеоданных на удаленных машинах (аналогично Xdc - расширению X Windows), как показано на следующем рисунке:

3. Расширения OpenGL

Несмотря на то, что OpenGL не является частью OpenML, тем не менее, этот API необходим для полноценной работы OpenML, являясь для него ключевым компонентом. Для достижения лучших результатов в процессе обработки медиаконтентов, OpenML добавляет несколько расширений OpenGL, а так же использует уже имеющиеся в этом API расширения. Для работы OpenML требует OpenGL версии 1.2

Список расширений используемых при работе OpenML, можно разделить на три категории, вот некоторые из них для образца:

Расширения, которые облегчают интеграцию OpenGL с компонентами OpenML, для организации ввода/вывода аудио/видео потоков.

GL_OML_subsample,

GL_OML_resample

Эти расширения были созданы SIG Khronos. Они добавляют поддержку форматов пиксела изображения вида 4:2:2 и 4:2:2:4, которые используется для создания и обработки видеоинформации формата YCrCb и YCrCbA.

GL_OML_interlace

Это расширение используется для работы с чересстрочным форматом видеоданных. " Расширения, которые обеспечивают повышают качество рендеринга видеоизображения.

GL_ARB_texture_border_clamp

Это стандартное расширение OpenGL. Используется для фильтрации границ текстур, позволяя замаскировать границы при наложении видеоданных на 2D/3D сцену.

GL_SGIS_texture_color_mask

Данное расширение позволяет работать с отдельными цветовыми компонентами текстур. " Расширения, которые обеспечивают расширенное управление средствами OpenGL.

GL_ARB_imaging

Расширение OpenGL 1.2 обеспечивающее функционирование конвейерных функций.

Существуют так же расширения OpenML и для GLX в среде X Windows. Подробнее о расширениях OpenGL и GLX можно узнать из официальной спецификации OpenML по адресу.

4. Синхронизация

Для синхронизации аудио/видео потоков в OpenML есть ряд вспомогательных механизмов. Наиболее важным из них является счетчик UST (Unadjusted System Time - независимое системное время). UST - это высокоточный системный таймер использующий 64-битные переменные и позволяющий учитывать время до наносекунд. UST не зависит от системных часов и общей системной загруженности, позволяя линейно учитывать ход времени. UST начинает исполняться сразу же после инициализации OpenML и не требует предварительной настройки.

Так же немаловажным механизмом является MSC (Media Stream Counter - счетчик аудио/видео потоков), который увеличивает свое значение при пересылке пакетов информации: для видео единичным значением будет фрейм, для 3D графики - рейтрейсинг (отрисовка 3D сцены), для аудио - звуковой сэмпл. С помощью MSC удается

Используя пару UST/MSC , приложение может точно управлять и синхронизировать потоки носителей между различными устройствами в системе, сопрягать между собой медиаконтенты разного происхождения.

И, наконец, последний участник - SBC (Swap Buffer Count - счетчик переключений буфера) - увеличивает свое значение при переключении видеобуфера, что важно при синхронизации графической 3D/2D информации получаемой от OpenGL c медиаконтентами от различных источников управляемых OpenML.


API MLdc и OpenML содержат механизм, позволяющий нарастить их возможности за счет добавления расширений, аналогично расширениям OpenGL. Это сделано для того, чтобы интерфейсы программирования были гибкими и расширяемыми, обеспечивая своевременную поддержку новых устройств. Так как SDK OpenML и OpenMLdc поставляются вместе с исходными кодами, то каждый желающий может внести свои собственные расширения в эти API, но только, если будет следовать следующим соглашениям:

1.Расширения должны быть идентифицированы символьными строковыми названиями с нулевым символом в конце.

2. Название не должно не содержат пробелы.

3. Каждое название расширения должно начаться с префикса, обозначающего разработчика, который создал данное расширение, сопровождаемое символом подчеркивания.

4. Подобно названиям расширений OpenGL, если данное расширение поддерживают несколько разработчиков, то можно дать префикс "EXT".

5.Если расширение становится повсеместно поддерживаемым и утверждено SIG Khronos, тогда оно получает префикс "OML".

6.Точки входа в функции, которые являются частью расширения, должны использовать те же самые префиксные символы как суффикс. Например, если идентификатор расширения выгладит как "XYZ", то каждое название расширения должно иметь форму "XYZ_some_extensions_name", а имя функции должно иметь форму "mldcSomeFunctionNameXYZ."

7.С помощью расширений можно привносить новые функциональные возможности или новые видеоформаты, но для расширений, которые добавляют, дополнительные структуры или константы к базовому API, их создатель должен снабдить разработчиков файлами заголовков со структурами и названиями констант. Однако, если данное расширение будет принято сообществом программистов повсеместно и ратифицировано SIG Khronos, то новые структуры и константы будут включены в файлы заголовков, поставляющиеся в комплекте SDK API OpenML MLdc.

Как показал опыт OpenGL, подобный механизм расширений помогает не только своевременно учитывать и поддерживать все новшества появляющиеся в аппаратной части компьютеров, ведь производителю компьютерного оборудования намного быстрее написать собственное расширение стандарта, чем ждать, когда выйдет очередная официальная спецификация (как это было с nVIDIA), но и позволяет существенно ускорить разработку новых версий спецификации, обкатывая на расширениях новые функциональные возможности и форматы, которые могут войти в официальный стандарт.

Что сделано?

Первая аппаратура способная работать под управлением OpenML на платформе Windows была продемонстрирована SIG Khronos на выставке SIGGRAPH прошедшей в городе Сан-Диего 29-31 июля 2003. Привилегированный разработчик Jahshaka, продемонстрировал свою одноименную высокоуровневую систему обработки видеоинформации и создания спецэффектов в реальном времени базирующуюся на API OpenML.


Эта демонстрационная версия работала на видеокарте VREngine SD10 от RealVision, используя VPU P10 от 3Dlabs - одного из главных участников проекта OpenML. Было наглядно продемонстрировано, что OpenML позволяет существенно сократить затраты времени на разработку подобных систем, освобождая разработчиков от программирования множества нестандартных интерфейсов мультимедийных аппаратных средств на разных платформах.

В феврале 2004 года выпущен комплект разработчика OpenML SDK beta 2, окончательный релиз намечен на конец весны 2004 года, на данный момент поддерживаются следующие платформы, операционные системы и средства разработки:

  • IRIX 6.5 (MIPSpro 7.3 or 7.4) available from SGI
  • Red Hat Linux 8.0 (GNU gcc version 3.2.X)
  • Windows XP (MSVC 6.0, Metrowerks Code Warrior 8, GNU gcc 3.2.X)
В дальнейшем этот список будет существенно пополнен.

Задел на будущее

В ближайших планах SIG Khronos выпустить, после продолжительного бета-тестирования окончательный релиз SDK для OpenML под Windows, Linux и IRIX - это случится в конце весны 2004 года.

После создания спецификации OpenML 1.0, SIG Khronos приступила к дальнейшему развитию и совершенствованию этого API. Спецификация OpenML 1.1 должна выйти по заверению разработчиков осенью 2004 года, SDK будет выпущен позднее, сроки не называются. Из информации, представленной SIG Khronos на различного рода презентациях, видны основные направления работ в версии 1.1. Продолжится интеграция OpenML, OpenGL и OpenAL, добиваясь той же степени сплоченности всех этих API, которую мы наблюдаем в DirectX. Будет добавлен программный интерфейс управления ресурсами OpenGL. Появится поддержка интерфейсов di/dd. Будет улучшено управление памятью и рендерингом текстур, включая чересстрочные (interlaced) текстуры. Будут добавлены расширенные возможности цветопередачи - более 8 бит на каждый компонент пикселя. Будет улучшено общее качество рендеринга, а так же повышена общая эффективность, включая асинхронные операции. И, наконец, планируется поддержка большего количества платформ и операционных систем, в частности, все разновидности UNIX и MacOS X.

Помимо этого в рамках проекта OpenGL ES ведется разработка компактной версии OpenML для мобильных устройств названная без затей OpenML ES. Будущим мобильным сетям третьего поколения (3G) жизненно необходим единый стандарт в области обработки и пересылки мультимедиа - аудио/видео потоков, сжатие их и воспроизведение, общий низкоуровневый программный интерфейс, поддерживающий разнообразное мобильное железо, а от его обилия уже рябит в глазах. Работы над OpenML ES ведутся параллельно с "большим братом", и если учесть огромную популярность мобильных телефонов, PDA и смартофонов, то возможно этот крошечный API в будущем окажется популярнее версии для персональных компьютеров, став главным источником доходов SIG Khronos.

Словарь терминов и соглашений

графика / видео (graphics / video)

В OpenML, термины графика и видео не являются синонимами: -"графика" указывает графический дисплей, используемый пользовательским интерфейсом на компьютере; -"видео" указывает на тип пересылаемого или получаемого сигнала.

медиаконтент

Синоним выражения "поток аудио/видеоданных"

рендеринг

Термин, обычно используемый для обозначения процессов формирования и отображения 2D/3D сцен, но может быть использован и для обозначения аналогичных процессов при воспроизведении медиаконтента.

дерево возможностей (capability tree)

Дерево возможностей - иерархический список всех устройств управляемых OpenML в системе, с подробной информацией о каждом устройстве, его параметрах и адресном пространстве.

система (system)

Самый высокий уровень в иерархии дерева возможностей. Система - машина, на которой выполняется приложение. Этой машине при инициализации OpenML дается имя ML_SYSTEM_LOCALHOST. Каждая система содержит одно или более физических устройств.

физическое устройство (physical device)

Устройство, которое соответствует аппаратно-зависимым модулям в OpenML. Примеры устройств - аудио/видеокарты, цифровые видеокамеры, ТВ-тюнеры. Каждый аппаратно-зависимый модуль может содержать множество логических устройств.

"разъем" (jack)

Логическое устройство, которое является интерфейсом ввода/вывода системы. Примеры разъемов - композитный видеовход на видеокарте или микрофонный вход на аудиокарте. В связи с путаницей между логическими и физическими разъемами, которая может возникнуть при переводе, я этот термин буду заключать в кавычки. "Разъемы" часто, но не обязательно, соответствуют физическому устройству - возможна ситуация, что к одному "разъему" в OpenML могут соответствовать несколько физических устройств и наоборот - для физического разъема, могут быть созданы несколько логических "разъемов".

"путь" (path)

Логическое устройство, обеспечивающее логические связи между памятью и логическими "разъемами". Аналогично предыдущему термину, чтобы избегать путаницы, название этого логического устройства при переводе, так же будет писаться в кавычках. Пример для иллюстрации "путь" выходного видеосигнала транспортирует данные от буфера, размещенного в памяти, до "разъема" выходного видеосигнала.

транскодер

Транскодер - логическое устройство, которое берет данные от буферов через входной канал или каналы, обрабатывает данные, и возвращает данные на другой буфер через канал вывода. Пути пересылки данных от памяти до транскодера, и от транскодера до памяти, называют каналами (pipes). Пример транскодера - кодирование/декодирование видеоданных в формате MPEG-4, декомпрессия JPG или декодирование MP3.

буфер(buffer)

Это блок оперативной памяти, характеризующийся отдельной виртуальной адресацией и длиной. Буферы не отображаются в дереве возможностей OpenML, поскольку они создаются и управляются приложением. Буферы используются для уменьшения дискретизации при пересылке и обработке данных.

UST (Unadjusted System Time)

Независимый системный таймер. UST - специальные системные часы использующие 64 переменные и позволяющие отсчитывать время с точностью до наносекунд. UST начинает исполняться сразу же после инициализации OpenML и не требует предварительной настройки. Этот таймер используется, для синхронизации потоков аудио/видео данных.

MSC (Media Stream Count)

Счетчик потока данных. MSC - счетчик сэмплов аудио/видео данных, которые прошли через "разъемы". Используется для синхронизации потоков аудио/видео данных.

SBC (Swap Buffer Count)

Счетчик переключений буфера, который используется для формирования 2D/3D изображения в OpenGL. Используется для синхронизации графической 3D/2D информации получаемой от OpenGL c аудио/видео потоками от устройств управляемых OpenML, при совместном рендеринге медиаконтента и 2D/3D сцен.

P.S.

Конечно, очень многое в статью не вошло, описания команд, расширений, констант, примеры программ - если бы все это было включено, получилась не статья, а справочное пособие, а это не было моей целью. Эта статья - описание нового интерфейса программирования, и если он Вас заинтересовал, если захотелось использовать его в своих разработках, творить с его помощью что-то новое, значит, цель этой статьи достигнута и дальше Вы вполне самостоятельно можете найти дополнительную информацию в сети Интернет, например по ссылкам, приведенным ниже, ну а если нет, то никакое пособие не помогло бы мне в этом :).

Ссылки по данной теме:

Все новости о проекте OpenML, как и четыре года назад Вы можете узнать на этом сайте.

Скачать OpenML SDK для Windows или Linux вместе с документацией можно там же, пройдя регистрацию на этой странице.

Online справочник по OpenML, который содержит подробную информацию для разработчиков программного обеспечения с примерами программ можно найти на сайте SGI на этой странице.

 
← Предыдущая страница
⇣ Содержание
Если Вы заметили ошибку — выделите ее мышью и нажмите CTRL+ENTER.
Вечерний 3DNews
Каждый будний вечер мы рассылаем сводку новостей без белиберды и рекламы. Две минуты на чтение — и вы в курсе главных событий.

window-new
Soft
Hard
Тренды 🔥
Microsoft получает всё больше выгоды от ИИ — компания показала сильный квартальный отчёт 2 ч.
Газировка с Copilot: Microsoft получила миллиардный контракт на обеспечение Coca-Cola облачными и ИИ-сервисами 2 ч.
Продюсер «Смуты» раскрыл, что добавят в игру с обновлениями, и подтвердил работу над продолжением 2 ч.
ИИ-приложение Google Gemini стало совместимо с Android 10 и Android 11 2 ч.
В США вернули сетевой нейтралитет 3 ч.
Alphabet объявила о первых в своей истории дивидендах, акции выросли в цене на 11,4 % 3 ч.
Младенец-экстрасенс против секретной корпорации: соавторы Before Your Eyes анонсировали сюжетное приключение Goodnight Universe 3 ч.
AMD выпустила драйвер с поддержкой игры Manor Lords и исправлением множества ошибок 9 ч.
Telegram обновился: рекомендованные каналы, дни рождения, трансляция геопозиции и аватарки при пересылке 14 ч.
В Steam и на консолях вышел боевик Another Crab's Treasure в духе Dark Souls, но про краба-отшельника — игроки в восторге 14 ч.