Главная » Просмотр файлов » Проектирование и разработка подсистемы виртуализации звука в Parallels Desktop

Проектирование и разработка подсистемы виртуализации звука в Parallels Desktop (1187416), страница 3

Файл №1187416 Проектирование и разработка подсистемы виртуализации звука в Parallels Desktop (Проектирование и разработка подсистемы виртуализации звука в Parallels Desktop) 3 страницаПроектирование и разработка подсистемы виртуализации звука в Parallels Desktop (1187416) страница 32020-09-11СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 3)

Таким образом как только было принято решение отказаться от поддержки ОС Windows и Linux в Parallels Desktop, возникла возможность перейти на более подходящую аудио библиотеку.

Более того: при внимательном анализе кода движка веб браузеров Chromium [28] обнаруживается, что архитектурные решения и код работы с аудио был частично взят из Portaudio, но со временем от этого кода все сильнее отказывались, пока аудио компонент не был окончательно переписан.

3.2.2 RTAudio

RTAudio [29] – популярная кроссплатформенная C++ аудио библиотека, предоставляющая простой API для работы с аудио оборудованием. Причиной интереса к этой библиотеки являлось то, что в отличии от других эта библиотека не предполагала работу в дуплексном режиме как основной подход, что означало что функции обратного вызова для устройств записи и воспроизведения не синхронизированы. Согласно документации, библиотека предоставляла все инструменты, необходимые для работы виртуализационного ПО, в том числе и:

- Поддержка динамической смены устройств

- Поддержка различных форматов, в том числе и non-interleaved signed integer (необходимое условие поддержки PCM)

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

Но в то же время анализ исходного показал, что использование этой

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

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

- Библиотека не позволяет выставить битрейт – предоставляется возможность использования только 32-битного потока

Таким образом, библиотека не удовлетворяла основным поставленным требованиям, и могла бы быть использована только с серьезными модификациями, сравнимыми по трудоемкости реализации с написанием свой библиотеки.

3.2.3 JUCE

JUCE [30] – кросплатформенный фреймворк, предоставляющий широкий инструментарий, включающий в себя модули работы с двухмерной графикой, звуком, интерфейсом пользователя и рядом других возможностей. Этот фреймворк часто используется для создания виртуальных инструментов в формате VST [31], для которых высокая производительность обработки и передачи аудиоданных является критически важным свойством. Именно поэтому JUCE был выбран в качестве возможного решения. Среди плюсов этой библиотеки необходимо выделить:

- Высокое внимание разработчиков к вопросам производительности аудио стека.

- Поддержка необходимых форматов задекларирована в документации.

Но в то же время детальный анализ выявил следующие проблемы:

- Как и в библиотеке RTAudio поддержка различных частот

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

- Бедные возможности управления устройствами – нет функционала подписки на изменения в списке аудио устройств

- Отсутствие поддержки PCM форматов.

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

3.2.4 Core Audio

Core Audio [31] – это компонент операционной системы OS X, предоставляющий низкоуровневый интерфейс для работы с аудио устройствами на языке C. Фактически перечисленные выше фреймворки реализуют свой функционал для операционной системе OS X, используя Core Audio. Особенностью этой библиотеки является возможность тонкой настройки параметров аудио тракта и широкий набор средств по обработке форматов аудио данных. Фактически, все требования выставленные к аудио компоненту, согласно документации, могут быть удовлетворены средствами Core Audio. Главным минусом такого подхода является необходимость написания полноценного компонента, отвечающего за работу с аудио оборудованием, и предоставляющего высокоуровневый интерфейс эмуляционному коду. Но как показал анализ существующих решений – их расширение по трудоемкости сопоставимо, а иногда и превосходит по сложности написание своего фреймворка, в то время как создание своего аудио компонента позволит более эффективно использовать особенности архитектуры виртуализированного аудио тракта и добиться большего качества аудио в продукте Parallels Desktop.

3.3 Заключение

Анализ существующих решений в области поддержки аудио и виртуализации звука привели к следующим выводам:

- Существующие библиотеки, предоставляющие высокоуровневый интерфейс доступа к аудио оборудованию обладают рядом особенностей, из-за которых их адаптация к аудио стеку проекта Parallels Desktop по трудоемкости сравнится или превысит сложность написания собственного аудио компонента. Поэтому было принято решение написать свой модуль работы с аудио оборудованием на базе Core Audio

- Необходимо провести детальное исследование двух подходов к виртуализации аудио потока, так как умозрительно сложно оценить преимущество одного над другим.

Ход описанных работ, а так же детали конечной реализации нового аудио стека в продукте Parallels Desktop даны в главе 4.

4. Ход работ

4.1. Сравнительный анализ архитектурных подходов по виртуализации аудио устройств

4.1.1 Формальная модель аудио потока

Для оценки целесообразности использования одного из подходов к виртуализации звука введем в рассмотрение следующую формальную модель, в которой время является дискретной величиной, с характерной величиной . Эту величину можно легко интерпретировать – это длина минимального кванта аудиоданных, запрашиваемого модулем ОС, отвечающей за взаимодействие с аудио оборудованием. В реальных системах эта величина порядка 1 миллисекунды.

Рис 5. Формальная модель аудио системы

Здесь:

- количество буферезированных аудио данных (с)

– скорость генерации аудиоданных (с/с)

– количество воспроизведенных аудиоданных (с/с)

Введем динамическое уравнение, связывающее эти величины:

Для дальнейшего рассмотрения без доказательства примем следущие гипотезы:

- Передвижение данных между буфером и аудио устройством происходит мгновенно ( ). Этот эта предпосылка основана на экспериментальных данных: передача одного кванта аудио при характерном времени мс по продолжительности не превышает мкс. Таким образом:


- Воспроизведение происходит с некоторой задержкой , где – оптимальное количество буферизированных аудиоданных, а – задержка генератора связанная с пост-процессингом данных (применением громкости, преобразование форматов и т. д.). Таким образом:

В рамках введенной формализации рассмотрим следующую ситуацию: в качестве генератора данных выступает аудио подсистема ОС, буфером выступает DMA буфер между аудио устройством и ядром ОС. Анализ реализации аудио подсистем в открытых ОС позволяет сделать следущее предположение о логике работы генератора аудио данных:

- В случае, если количество буферизированных данных превышает , генератор не создаёт новых данных

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

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

Учитывая описанную выше логику можно смоделировать изменения значения величины следующим образом:

(4)

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

4.1.2 Оценка мультипликативной константы модели

Для оценки величины мы в среде OSX напишем простейшее аудио приложение, которое воспроизводит синусоидальный сигнал при помощи библиотеки Core Audio. Эта библиотека зовет функцию обратного вызова в пользовательском коде, которая должна генерировать аудио данные. При одним из аргументов в этом вызове является структура, позволяющая оценить состояние аудио потока. Используя эти данные, мы можем оценить изменение величины , измеренное через равные интервалы времени мс. Запустим тестовый стенд в агрессивном окружении –на операционной системе одновременно с нашим приложением будет работать несколько процессов, активно потребляющих CPU, имея при этом высокий приоритет исполнения. На рисунке 6 представлен один из графиков изменений величины , с течением времени на одном из запусков.

Рис 6. График функции . Обе величины измерены в миллисекундах

Для оценки значения величины мультипликатора генерации , рассчитаем значения величины . В этом случае мы должны рассмотреть распределение положительных значений , для поиска возможных значений . Одно из таких распределений представлено на рисунке 7.

Характеристики

Список файлов ВКР

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6353
Авторов
на СтудИзбе
311
Средний доход
с одного платного файла
Обучение Подробнее