Научная статья на тему 'Применение системного уровня абстракции для цсп'

Применение системного уровня абстракции для цсп Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
159
32
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Фаулер Джон

Интерфейсы прикладного программирования (Application Programming Interface, API), поддерживающие разработанную компанией Texas Instruments новую архитектуру цифрового сигнального процессора, позволяют разработчикам сосредоточиться на приложениях, не затрачивая много времени на вопросы реализации поддержки видео и не программируя ЦСП.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Применение системного уровня абстракции для цсп»

Применение системного уровня абстракции для ЦСП

Джон «Дж. Б.» Фаулер (John “J. B.” Fowler)

Интерфейсы прикладного программирования (Application Programming Interface, API), поддерживающие разработанную компанией TI новую архитектуру цифрового сигнального процессора, позволяют разработчикам сосредоточиться на приложениях, не затрачивая много времени на вопросы реализации поддержки видео и не программируя ЦСП.

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

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

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

Новое поколение приложений в области видео

Поскольку стоимость реализации цифрового видео продолжает снижаться, все больше разработчиков встраиваемых приложений объединяют видео- и аудиотехнологии в широком ряде изделий. Например, на рис. 1 показано, как телеприставки могут быть интегрированы в структуру видеонаблюдения домашней охранной системы, позволяя домовладельцам видеть посетителей на экранах своих телевизоров. В то же время требования к качеству растут как для традиционных, так и для только что появившихся приложений. Для интеллектуальной коррекции контраста и фокуса разрабатываются

улучшенные вычислительные алгоритмы. Гибкое регулирование обработки позволит пользователям получать изображения, применяя различные настройки, в том числе для черно-белой, цветной, инфракрасной, тепловой и сенсорной съемки, а также для сенсора камеры. Также разрабатываются интеллектуальные камеры, которые делают снимок лишь в том случае, если у всех людей в кадре открыты глаза.

Традиционные методы реализации кодеков

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

Поэтому, как правило, для реализации этих кодеков во встраиваемых видеоприложени-

ях требуются многие месяцы работы инженеров. Обычно кодеки сначала реализуются на языке высокого уровня, например, C/C++, после чего отдельные части программного кода переписываются на ассемблере, чтобы оптимизировать производительность и энергопотребление, исходя из аппаратной реализации. Этот второй этап программирования требует значительного опыта и знаний конкретной аппаратной платформы.

Кодеки предшествующего поколения, такие как MPEG2, уже не изменяются, в то время как новые и более эффективные кодеки, например, MPEG4 и К264, все еще совершенствуются. Так что следует принимать во внимание возможные изменения во время процесса разработки и при обновлениях в будущем. Более современные кодеки имеют более широкий набор инструментальных средств, которые дают разработчикам больше вариантов для обработки видеопотока. Например, один поток кодека может поддерживать использование профилей с чересстрочной разверткой, тогда как другой поток не позволяет этого делать.

Анализ аппаратного обеспечения

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

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

ЦСП обеспечивает полную программируемость на уровне программного обеспечения, включая возможность изменения программы на месте, что позволяет пользователю развернуть систему с кодеком MPEG 2, а в дальнейшем обновить ее до видеокодека H.264. ЦСП также упрощает выпуск изделий, поддерживающих несколько кодеков и допускающих обновление кодеков на месте в соответствии с изменением стандартов. Помимо этого, ЦСП может быть встроен в систему на одном кристалле, что дает возможность уменьшить число компонентов, добавляя дополнительные функциональные элементы, например, универсальный процессор и ускорители.

Реализация приложений

Реализация цифрового видео — это лишь часть из множества современных инновационных приложений. Приложение, обычно выполняемое на универсальном процессоре, обеспечивает пользовательский интерфейс и особые функции, отличающие данный продукт от других в своей категории. Одна из самых важных задач приложения состоит в том, чтобы свести аппаратное и программное обеспечение воедино, например, обеспечить буферизацию видеоданных между кодеком и видеопортами. Кроме того, для приложения необходима операционная система, например, Linux или Windows CE, которая должна также поддерживать стеки Ethernet, стеки беспроводной сети, драйверы устройств ввода/вывода и т. п.

Реализация уровня аппаратных абстракций через программное обеспечение

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

Разработчики видеоаппаратуры предоставляют интегрированную среду, состоящую из аппаратного и программного обеспечения,

Инфраструктура технологии DaVinci™

Пространство пользователя // Этап создания get 10

alloc process RAM // Этап исполнения while(run)

Input (exch bufs)__

Process -----

Output(exch bufs)

// Этап удаления free process RAM surrender 10

Пространство

ядра

I________________

Рис. 2. Получение доступа к потоку видеоданных

EPSI API I L

Драйвер ввода О

Ьи\ ггвшшг

Видео I DaVinchi.246 |Т1 Громкость |

ЕЯ Процесс ВД алгоритм

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

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

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

При написании программного кода приложения разработчики могут просто вызывать стандартные библиотечные функции, чтобы реализовать широкий ряд кодеков для видео, статических изображений, речи и звука, а также других функций обработки видео- и аудиоданных. На рис. 2 показано, как разработчик может получить доступ к потоку видеоданных через вызов функции, например, ProcessVideo, не задаваясь вопросом о деталях реализации собственно кодека. Также можно упростить процесс программирования, используя инфраструктуру API для

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

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

Доступ к видеоданным из любого источника

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

InitPeripherals()

InitEthernet();

InitUSB();

InitATA();

InitDisplay();

InitH264Decoder();

OpenCodec()

OpenH264Channel();

StartDecode(ATA.Address, H264.Channel, Display.Address);

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

Изменение размера дисплея

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

ІпіїРегірЬега1$()

// В драйвер дисплея передаются аргументы для изменения значений по умолчанию ІпІ!Ві$р1ау(ОЄІР І СІР І І 720р І 1080І);

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

[Action] Pause Button is pressed OpenCodec()

OpenH264Chanel;

//Начало сжатия и сохранения на жесткий диск поступающих из сети Ethernet данных StartEncode(Ethernet.Address,

H264. EncodeChanel,

ATA.Address);

[Action] Resume Button is pressed

StartDencode(ATA.Address,H264.DecodeChanel,

Display.Address);

Драйверы уровня ввода/вывода

Все сложные процессы, стоящие за каждой из этих функций, реализуются драйверами нижнего уровня. Доступ к этим драйверам осуществляется через интерфейс API, так что они полностью понятны для разработчиков. Применение хорошо знакомых и широко распространенных драйверов операционной системы Linux упрощает интеграцию видеотехнологии во встраиваемые приложения. API подсистемы Video for Linux Two (V4L2) на стороне захвата данных, а также использование интерфейсов API общего применения FBDev, хорошо известных в сообществе разработчиков Linux, упрощают задачу переноса из среды разработки на компьютере во встроенную среду системы на одной микросхеме.

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

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

Таким образом, эта методология проектирования позволяет разработчикам обеспечивать полнофункциональное видео за счет обращения к АР1-функции, не беспокоясь о реализации обработки видеоданных. Конкретные особенности обработки видеоданных на нижнем уровне можно легко модифицировать для адаптации к изменениям кодека или аппаратного обеспечения, не внося никаких изменений в программный код приложения верхнего уровня. Такой подход исключает необходимость программировать ЦСП и позволяет группе разработчиков сосредоточить практически все свои усилия на разработке собственно приложения. Этот подход также дает возможность выпускать изделия с самыми современными интегрированными средствами поддержки видео в значительно меньшие сроки и при меньших затратах, одновременно снижая затраты времени и расходы на дальнейшее техническое обслуживание и усовершенствование изделий. ■

i Надоели баннеры? Вы всегда можете отключить рекламу.