77230

Интеграция мультимедиа решений с аппаратным ускорением для MID устройства

Курсовая

Информатика, кибернетика и программирование

MID (mobile internet device) - это устройства, которые отвечают требованиям низкого энергопотребления, мобильности, а также предоставляющие обширные возможности для работы в сети. По сути MID - это компьютер по размеру не многим больше телефона...

Русский

2015-02-02

205 KB

1 чел.

Санкт-Петербургский Государственный Университет

Математико-механический факультет

Кафедра системного программирования


Интеграция мультимедиа решений с аппаратным ускорением для MID устройства

Курсовая работа студента 444 группы
Елизарова Егора Алексеевича

Научные руководители      Иванов Артем Сергеевич

(Генеральный директор компании Embedded Alley Solutions Rus,

выпускник кафедры информатики 2002г.)

Толстолыткин Григорий Сергевич

(Ведущий программист Embedded Alley Solutions Rus,

выпускник кафедры системного программирования 2002 г.)

Санкт-Петербург

2009


Оглавление

[1]
Оглавление

[2] Введение

[3] Постановка задачи

[4] Аппаратное ускорение

[5] Обзор существующих медиа фреймворков для ос Linux

[6]  Cравнение выбранных фреймворков

[7] Результаты

[8] Проблемы

[9] Заключение

[10] Список литературы


  1.  Введение

В настоящее время рынок мобильных устройств удивляет разного рода новинками. Телефоны из обычных аппаратов для разговоров превратились в полноценные медиа устройства. Довольно сложно представить себе средний мобильный телефон без камеры или mp3 проигрывателя. В то же время экран мобильного телефона не может позволить в полной мере насладиться просмотром любимых сайтов или получить удовольствие от понравившегося фильма. С другой стороны, под рукой не всегда оказываются компьютер или ноутбук, которые легко справляются с подобного рода задачами.  В этих условиях на рынке стали появляться такие устройства, как нeтбуки (netbooks) и МИДы (MID).

MID (mobile internet device) - это устройства, которые отвечают требованиям низкого энергопотребления, мобильности, а также предоставляющие обширные возможности для работы в сети. По сути MID - это компьютер по размеру не многим больше телефона, но по мощности сопоставимый с домашним компьютером двух-трех летней давности.

Что же получает пользователь, имея в руках подобного рода устройство? Это разного рода возможности сети: просмотр веб страниц, почта, разнообразные im-клиенты и интернет сервисы. К тому же доступны различные полезные приложения: календарь, калькулятор, программы для просмотра документов. Водителям и путешественникам пригодится наличие карт с навигацией. Создатели MIDов учли также и потребности людей, которые не прочь провести свой досуг, окунаясь в игровые реалии. WiFi и WiMAX: для тех, кто всегда любит оставаться на связи. MIDы  поддерживают такие технологии, как Bluetooth и 3G. На подобного рода устройствах имеются слоты для карт памяти, а также usb, благодаря которым к интернет девайсам можно подключать различную периферию. Естественно, присутствует возможность управления файлами. Преимуществом MIDов перед, скажем, КПК, является то, что они построены на архитектуре x86, что позволяет запускать на них те же приложения, что и на домашнем ПК. Стоит упомянуть и о GSM стеке: функция телефона по-прежнему является одной из основных для мобильных устройств в наше время.

Еще одной немаловажной функцией, на которой мы остановимся подробнее, является проигрывание видео и аудио.  Экраны подобных устройств обладают высоким разрешением (800*480, 1024*600). Отличительной чертой MIDов от, пожалуй, всех существующих на данный момент мобильных устройств является возможность просмотра видео высокого разрешения как на встроенном, так и на внешнем экране. Устройства обладают интерфейсами HDMI для подключения внешнего монитора или телевизора.  Проигрывание такого рода видео требует довольно больших мощностей, что вместе с требованиями низкого энергопотребления и мобильности, делает эту задачу довольно трудной. Для решения подобного рода задач была предложена идея делегирования части работы по декодированию видео с центрального процессора (cpu) на графический(GPU) и аппаратные кодеки.

  1.  Постановка задачи

Существует MID устройство (о котором и пойдет речь далее) Compal JAX10  на базе процессора Intel Atom и графического чипсета Intel SCH(System Controller Hub) US15W со встроенным акселератором Intel GMA 500. Данная комбинация известна также как платформа intel Menlow. На рынке можно встретить аналогичные устройства: Gigabyte M528 и Aigo P8860. На нашем устройстве установлена ОС Linux, а именно Moblin 2. В качестве медиа решения был выбран open source кросс платформенный продукт xbmc.

Как любое MID устройство JAX10 должен проигрывать видео разных форматов, в том числе  и HD видео. Отсюда возникает задача интеграции аппаратного ускорения в xbmc. Xbmc может использовать как встроенный «dvdpalyer», так и любой другой внешний плеер.  Практически любой плеер построен на основе какого-то медиа фреймворка, который предоставляет различные функции по обработке, декодированию и отображению мультимедиа файлов.

Таким образом, задача разбивается на несколько подзадач:

  1.  Изучение аппаратного ускорения
    1.  Изучение акселератора GMA500
    2.  Изучение способов аппаратного декодирования
    3.  Изучение API для работы с аппаратным ускорением на данной платформе
  2.  Выбор медиа фреймворка для дальнейшей интеграции
    1.  Изучение существующих фреймворков для ос Linux
    2.  Сравнение фреймворков
    3.  Изучение возможности использования аппаратного ускорения для конкретных фреймворков
    4.  Выбор одного из фреймворков для дальнейшей реализации
    5.  Выбор плеера использующего данный фреймворк
  3.  Интеграция аппаратного ускорения при помощи выбранного фреймворка в существующее медиа решение
    1.  Интеграция видео акселерации в данный фреймворк
    2.  Интеграция фреймворка в выбранный плеер
    3.  Портирование плеера на MID устройсво
    4.  Интеграция плеера в медиа решение
  4.  Интеграция с другими участниками команды разработчиков с целью получения работающего приложения
  5.  Аппаратное ускорение

Платформа Menlow предоставляет возможность использования аппаратного ускорения для 3D и 2D. Так же имеются кодеки для аппаратного декодирования видео в форматах h264, vc1, mpeg2, mpeg4(h263), wmv9. Драйвера для данных устройств предоставляются в виде бинарных файлов. В качестве интерфейса для работы с данными кодеками Intel предлагает Video Acceleration API (vaapi), находящийся в пакете libva.

Libva является надстройкой над библиотекой libXv (X video extension) и ее расширением libXvMC (motion compensation). Альтернативой libva в данный момент является libvdpau (Video Decode and Presentation API for Unix), активно внедряемая на рынок компанией Nvidia. На просторах сети можно найти vaapi бэкенд для vdpau, то есть любое приложение, поддерживающее vaapi акселерацию, поддерживает и ускорение на базе vdpau. К сожалению, в данный момент акселерация, основанная на vaapi, работает только с чипсетом Intel SCH US15W, который довольно редко встречается на рынке (помимо приведенных выше устройств мне известены netbook Dell mini 10, a также Sony p series, работающие на том же чипсете). Vdpau ускорение, напротив, поддерживается довольно большим количеством различных устройств.  Стоит заметить, что акселерация на базе vdpau уже реализована в выбранном медиа решении.

Как же работает аппаратное ускорение? Для начала попробуем разобраться, как работает обычный медиа плеер.  Медиа файл помимо заголовка содержит несколько потоков, среди которых есть как видео, так и аудио потоки. Каждый поток разбивается на пакеты, которые в свою очередь содержат фреймы. В фрейме и лежит закодированный кадр, возможно побитый на так называемые слайсы. Далее каждый фрейм раскодируется, и получается картинка.  В случае необходимости меняются размеры и цветовой формат полученного изображения. Финальным шагом является отображение полученной картинки. Аппаратное ускорение позволяет переложить ответственность за последние три пункта с CPU  аппаратные кодеки. То есть вместо того, чтобы декодировать фрейм программно, надо просто скопировать его в соответствующий буфер аппаратного кодека. Кодекам также сообщается необходимое разрешение выходного потока, что позволяет избежать необходимости последующего изменения размеров получаемой картинки. На выходе получается раскодированная информация в некоторой структуре. Теперь текущее  изображение может быть либо получено, либо выведено на экран.

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

Подводя итоги, кратко опишем шаги, которые необходимо сделать для корректной работы ускорения на базе vaapi.

  1.  На устройство должны быть установлены драйвера с поддержкой vaapi. На данный момент Intel предлагает два варианта: psb драйвера и iegd(Intel embedded graphic driver). В нашем случае были выбраны psb драйвера предоставленные Intel.
  2.  На устройство должны быть установлены пакеты для работы с vaapi. В нашем случае использовалась версия 0.29, а позднее 0.30. Так же необходимо правильно выставить переменные окружения, по которым libva ищет драйвер.
  3.  Далее в приложение, работающее с libva необходимо добавить следующие шаги
    1.  Инициализация vaapi
    2.  Конфигурирование канала между приложением и кодеками
    3.  Для каждого кадра: заполнение соответствующих буферов аппаратных кодеков
    4.  Для каждого кадра: получение раскодированной информации во внутреннем формате vaapi
    5.  Для каждого кадра: вывод полученной информации на экран, либо получение картинки в общепринятом формате (На данный момент поддерживается только NV12)
    6.  Освобождение структур vaapi
  4.  Обзор существующих медиа фреймворков для ос Linux

Здесь мы остановимся на двух наиболее популярных в наше время решениях для ОС Linux: Gstremer и Helix. А также рассмотрим библиотеку для обработки видео ffmpeg.

Gstreamer – стандартный фреймфорк ОС Linux. Используется в GNOME. Фреймворк основан на канальном взаимодействии. Плеер на основе gstreamer строится из блоков, каждый из которых имеет входной интерфейс sink и выходной source. В качестве примера приведем  схему иллюстрирующую проигрывание mp3 файла:

Ядро феймворка предоставляется в пакете gstreamer, а дополнительные модули и компоненты предоставляются в виде плагинов, основной набор которых находится в пакете gstreamer-plugins-base. Пакет gstreamer-plugins-good содержит модули для работы с хорошо сопровождаемыми декодерами, для которых не возникает проблем с лицензией.  И аналогично с пакетами gstreamer-plugins-bad и gstreamer-plugins-ugly. Отдельно отметим пакет gst-ffmpeg, который построен на основе библиотеки ffmpeg, на которой мы остановимся поподробнее позднее.

Gstreamer также содержит компоненту gst-launch, которая позволяет создавать канал и запускать его из терминала, что дает возможность оценить производительность, а также проверить правильность создания канала до создания пользовательского приложения.

Среди плееров, написанных на основе gstreamer-а, стоит упомянуть следующие:  Elisa (кросс-платформенное open-source медиа решение на основе OpenGL), Rythmbox (аналог Itunes под Linux), Totem (стандатный видео плеер в GNOME), Moblin-media (Видео плеер, написанный для moblin1).

Helix – кросс-платформенный open source фреймворк, написанный в рамках одноименного проекта. Helix часто используется в мобильных устройствах и представляет собой клиент-серверную систему. Опишем основные ее части:

  •  Helix DNA Client – мультиформатный кросс-платформеный медиа движок
  •  Helix DNA Server – движок для получения потокового видео и аудио
  •  Helix Producer – помогает при создании медиа файлов.
  •  Helix Player -  open source плеер построенный на базе Helix DNA Client

В качестве примера использования ниже приведена схема работы Moblin-media на основе фреймворка Helix:

Helix используется в большинстве современных мобильныx телефонов таких производителей, как Motorola, Sony Erricson, Sumsung. Internet tablets от Nokia также пользуются данной технологией. Самым известным плеером на данном движке является Real Player. Существует и его версия для мобильных устройств называемая rp4mid. 

FFmpeg – библиотека для работы с аудио и видео.  Состоит из нескольких частей:

  •  Libavcodec содержит декодеры  для различных видов аудио и видео кодеков
  •  Libavformat cодержит демуксеры для контейнеров различных мультимедиа форматов.
  •  Libavutils содержит простые математические функции, генераторы случайных чисел и т.д.
  •  Libswscale содержит механизмы для изменения размеров картинки и приведения цветовых  форматов
  •  Libavdevice содержит различные функции для работы с устройствами ввода - вывода
  •  Ffplay простой медиа плеер с выводом, основанным на базе библиотеки SDL
  •  Ffserver сервер для работы с потоковым аудио и видео
  •  Ffmpeg приложение для конвертации между форматами.

Ffmpeg предлагает функции, которые выполняют основные этапы обработки медиа файлов (описанной выше). Данная библиотека получила очень широкое применение в ОС Linux. На его базе написаны уже упомянутый медиа фреймворк gstreamer, dvdplayer, встроенный в выбранное медиа решение (xbmc), mplayer - пожалуй, самый известный плеер для ОС Linux и многие другие приложения.

  1.   Cравнение выбранных фреймворков

Для сравнения на JAX10 были портированы gstreamer, rp4mid, ffmpeg и mplayer(популярный плеер на базе ffmpeg). Для начала выделим основные критерии сравнения в порядке приоритета.

  1.  Поддержка основных форматов (mpeg1, mpeg2, mpeg4, h264, wmv9)
  2.  Возможность использования vaapi
  3.  Простота интеграции решения с акселерацией в xbmc
  4.  Производительность

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

Создатели real player предлагают использовать прекомпилированные плагины использующие vaapi, тем самым, в данном решении аппаратная акселерация присутствует и уже реализованна.  

FFmpeg, в свою очередь, до недавнего времени имел лишь акселерацию на базе vdpau, но в январе-феврале, в svn репозитории продукта появилась и поддержка для vaapi. К сожалению, фаза инициализации vaapi и его конфигурирования была оставлена для реализации в коде внешнего плеера, использующего ffmpeg, и не была реализована в ffplay. Для проверки работоспособности ускорения я решил добавить недостающие компоненты в утилиту ffplay.

Незадолго до момента появления официальной поддержки vaapi для ffmpeg в сети появились патчи на mplayer, добавляющие акселерацию в него.

Для gstreamer компания fluendo выпустила набор кодеков, поддерживающих аппаратную акселерацию, но, к сожалению он не был доступен для меня в рамках данной курсовой работы.

С точки зрения интеграции в xbmc есть два подхода:

  1.  Обновление ffmpeg внутри xbmc на более новый, а также добавление необходимых инициализаций и конфигураций во встроенный dvdplayer
  2.  Добавление плеера с интегрированной акселерацией (например rp4mid или mplayer) вместо встроенного в xbmc

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

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

  •  Gstreamer(gst-launch) проигрывал видео c заметными задержками, т.е. с полной загрузкой cpu, артефакты появлялись, но не очень часто
  •  Mplayer при запуске без акселерации на одном из входных файлов показывал загрузку cpu 50-60%, артефакты практически отсутствовали; При запуске с акселерацией дал хорошие показатели по загрузке cpu (15-20% на том же входном файле), однако на некоторых входных файлах появилось довольно большое количество артефактов
  •  Rp4mid (с включенной акселерацией) показал очень неплохие результаты: при загрузке cpu сопоставимой с загрузкой в случае mplayera с акселерацией, количество артефактов на экране на тех же входных файлах было гораздо меньше.
  •  Ffmpeg (ffplay) при реализации ускорения в этом плеере возникли проблемы с выводом на экран (обсудим их позже). При запуске без ускорения, получен результат, аналогичный результату, полученному при запуске mplayer-а без ускорения

Для интеграции акселерации в xbmc решено было изменить встроенный dvdplayer. Основным критерием при выборе была относительная простота реализации данного решения.

  1.  Результаты

В рамках данной курсовой работы были выполнены следующие пункты:

  1.  Изучены способы аппаратной акселерации при работе с чипсетом GMA500
  2.  Изучено устройство основных медиа плееров для OC Linux
  3.  Изучены основные медиа фреймворки для ОС Linux, а также проведен их сравнительный анализ в рамках нашей задачи
  4.  Изучены методы изменения функций проигрывания видео в xbmc
  5.  Добавлена реализация vaapi в ffplay (на 90%)
  6.  Работа по интеграции акселерации в xbmc выполнена на 60%
  7.  Проблемы

Среди встретившихся проблем стоит упомянуть следующие:

  •  Малая распространенность технологии vaapi.
  •  Недостаточная документированность

В интернете практически нет материалов по vaapi, единственное место в котором описан процесс реализации ускорения – комментарии к коду libva. Только в феврале в интернете появились примеры реализации ускорения, выложенные автором патчей на mplayer и ffmpeg.

  •  Для vaapi естественным является вывод кадра на экран без передачи его в пользовательское приложение, однако большинство плееров требуют получения изображения для дальнейшего отображения.
  •  Что же касается ffplay, основная проблема заключается в том, что плеер предусматривает вывод картинки на экран через SDL: в качестве параметра в соответствующую функцию передается указатель на картинку в формате YUV420P, однако текущая версия libva может возвращать картинку лишь в формате NV12. Конвертация между форматами будет занимать процессорное время, а значит мы не получим ощутимого выигрыша от использования аппаратной акселерации.
  •  При внедрении в xbmc  помимо проблем с выводом изображения на экран, появляется проблема обновления встроенного ffmpeg. Данное медиа решение использует систему динамических библиотек: для каждой внешней библиотеки пишется DllWrapper согласно некоторому шаблону, и при добавлении внешних библиотек их исходный код некоторым образом изменяется.
  •  Недостаток времени для реализации всей задачи в целом
  1.  Заключение

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

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

  1.  Список литературы
  2.  http://www.intel.com/
  3.  http://www.ffmpeg.org/
  4.  https://helixcommunity.org/
  5.  http://gstreamer.org/
  6.  http://www.splitted-desktop.com/
  7.  http://www.fluendo.com/
  8.  Intel® System Controller Hub (Intel®SCH) Datasheet


 

А также другие работы, которые могут Вас заинтересовать

29344. Special Literary Vocabulary 24.36 KB
  A term unlike other words directs the mind to the essential quality of the thing phenomenon or action as seen by the scientist in the light of his own conceptualization. With the increase of general education and the expansion of technique to satisfy the evergrowing needs and desires of mankind many words that were once terms have gradually lost their quality as terms and have passed into the common literary or even neutral vocabulary. Such words as 'radio' 'television' and the like have long been incommon use and their terminological...
29345. Special Colloquial Vocabulary 22.56 KB
  The first thing that strikes the scholar is the fact that no other European language has singled out a special layer of vocabulary and named it slang though all of them distinguish such groups of words as jargon cant and the like. Webster's Third New International Dictionary gives the following meanings of the term: Slang [origin unknown] 1: language peculiar to a particular group: as a: the special and often secret vocabulary used by class as thieves beggars; b: the jargon used by or associated with a particular trade profession or...
29346. Phonetic Expressive Means and Stylistic Devices 18.9 KB
  This is the way a word a phrase or a sentence sounds. The sound of most words taken separately will have little or no aesthetic value. The way a separate word sounds may produce a certain euphonic impression but this is a matter of individual perception and feeling and therefore subjective. In poetry we cannot help feeling that the arrangement of sounds carries a definite aesthetic function.
29347. Lexical Expressive Means and Stylistic Devices 21.57 KB
  By being forcibly linked together the elements acquire a slight modification of meaning. The elevated ancestors simile unhallowed disturb in the now obsolete meaning of tear to pieces are put alongside the colloquial contraction the Country's the country is and the colloquial done for. Interaction of different of different types of lexical meaning Words in context as has been pointed out may acquire additional lexical meanings not fixed in dictionaries what we have called contextual meanings. The latter may sometimes deviate from...
29348. Interaction of primary and derivative logical meanings. Stylistic Devices Based on Polysemantic Effect, Zeugma and Pun 23.92 KB
  Epithet is a stylistic device based on the interplay of emotive and logical meanings in an attributive word emotionally colored attitude of the speaker to the object he describes. 1 refer the mind to the concept due to some quality of the object it is attached to. 2 attributes used to characterize the object by adding a feature unexpected in it. One of the two members of oxymoron illuminates the feature observed while the other one offers a purely subjective individual perception of the object.
29349. Syntactical expressive means and stylistic devices 23.95 KB
  Its expressive effect may be based on the absence of logically required components of speech parts of the sentence formal words or on the other hand on a superabundance of components of speech; they may be founded on an unusual order of components of speech the change of meaning of syntactical constructions and other phenomena. The object is placed at the beginning of the sentence: Talent Mr. The adverbial modifier is placed at the beginning of the sentence: My dearest daughter at your feet I fall. However in modern English and American...
29350. Particular ways of combining parts of the utterance 16.65 KB
  Particular ways of combining parts of the utterance Asyndeton Asyndeton that is connection between parts of a sentence or between sentences without any formal sign becomes a stylistic device if there is a deliberate omission of the connective where it is generally expected to be according to the norms of the literary language. Polysyndeton Polysyndeton is the stylistic device of connecting sentences or phrases or syntagms or words by using connectives mostly conjunctions and prepositions before each component part as in: The heaviest...
29351. Functional Styles 19.61 KB
  Therefore functional style of language is a historical category. Thus the FS of emotive prose actually began to function as an independent style after the second half of the 16th century; the newspaper style budded off from the publicistic style; the oratorical style has undergone considerable fundamental changes and so with other FSs The development of each style is predetermined by the changes in the norms of standard English. The BellesLetters Style We have already pointed out that the belleslettres style is a generic term for three...
29352. Functional Styles. Newspaper Style 33.05 KB
  Not all the printed materials found in newspapers come under newspaper style. Only materials which perform the function of informing the reader and providing him with an evaluation of information published can be regarded as belonging to newspaper style. English newspaper style can be defined as a system of interrelated lexical phraseological and grammatical means which is perceived by the community as a separate linguistic unity that serves the purpose of informing and instructing the reader.