IPTV - плеер на базе Marvell ARMADA 1000 (Berlin) с интерфейсом на JavaScript

Заказчик

Внутренняя разработка отдела исследований новых технологий компании 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