Заказчик
Внутренняя разработка отдела исследований новых технологий компании Promwad.
Задача
Реализация IPTV-плеера с пользовательским интерфейсом на JavaScript на платформе Marvell ARMADA 1000/88DE3010 (Berlin).
Решение
Мы разработали прототип устройства на отладочной плате Marvell Berlin со следующими характеристиками:
- Процессор: 2x1.0+ ГГц ARMv5 Sheeva
- Оперативная память: 512 МБ DDR3 SDRAM
- Внутренняя память: 2048 МБ NAND flash
- Интерфейсы: I2C, UART, 2 x USB Host 2.0, 1 x 10/100 Mбит Ethernet, HDMI-видеовыход, видеовыход S-VIDEO, компонентный видеовыход, композитный видеовыход, поддержка вывода звука в 7.1, стереоаудиовход, стерео и аудиовыходы 5.1, цифровой аудиовыход (коаксиальный кабель), цифровой аудиовыход (оптика), 2 x SATA, 1 x eSATA, IRDA, считыватель карт памяти SD, MMC, MS, XD
- Возможности системы на кристалле (СнК) и область применения:
- Одновременное проигрывание двух потоков 1080p
- Встроенная поддержка множества форматов видео и аудио
- Готовая программная архитектура для реализации мультимедиапроигрывателей (Blu-ray, сетевое ТВ, файлы на внешних накопителях)
- Возможность проигрывания видео в 3D (в т.ч. 3D Blu-ray)
- Технология аппаратного улучшения качества изображения QDEO
- Операционная система Linux
Наглядная блок-диаграмма компонентов СнК изображена на схеме:
Чтобы код IPTV-плеера работал на платформах различных производителей, мы решили разделить функциональность плеера на отдельные программы-компоненты на уровне архитектуры. Связь между этими компонентами была реализована через механизм межпроцессного взаимодействия D-Bus.
Пользовательский интерфейс мы реализовали на JavaScript, выбор этой технологии позволил ускорить реализацию плеера и обеспечить максимальную переносимость кода. Отсутствие жестких связей между модулями системы и необходимости полной пересборки ПО при отладке также ускорило процесс разработки.
Реализация кода непосредственной обработки и вывода мультимедийного потока на языке C, используя низкоуровневый API от производителя платформы, позволила достичь максимальной производительности на конкретном аппаратном решении.
На базе библиотеки Qt4 мы реализовали следующие компоненты системы:
- Веб-браузер на движке WebKit для отображения интерфейса пользователя (UI)
- Клиент Picasa
- Клиент YouTube
- Клиент BitTorrent
- Фотогалерея
- UI проигрывателя медиафайлов с USB-накопителей
- Получение и разбор списка каналов IPTV
- Получение и разбор программы передач (EPG)
- Связь с низкоуровневыми модулями системы через D-Bus
Код UI на JavaScript имеет доступ к реальным объектам программы на C++ за счет использования технологии QtWebKit bridge, что позволяет максимально точно, но, в то же время, прозрачно и просто, контролировать процессы, происходящие в системе, не внося изменений в низкоуровневый код.
Преимущества
- Богатая мультимедийная функциональность аппаратной платформы
- Универсальность и производительность системы на кристалле
- Простота расширения пользовательского ПО за счет использования операционной системы Linux