Мы недавно получили посылку от партнеров в Тайване — компании Realtek. Внутри была плата Hercules OTT — 32-битная, с памятью на 2 Гб и предустановленной ОС Android 9. Посмотрим, что она умеет и как ее можно использовать для разработки новых ТВ-приставок.

Плата Hercules OTT представляет собой Android IPTV box, который воспроизводит видео любых форматов с максимальным разрешением 4K. Обеспечена поддержка стриминговых сервисов Youtube, Netflix и др. посредством dash и hls. Будут работать и любые другие приложения для Android, такие как приложения аудио-видеозвонков и конференций. Однако с играми будут проблемы из за неудобства управления (придется подключать геймпад).

Realtek представила платы на базе чипа RTD1395 еще в 2018 году, их задействовали в своих абонентских устройствах операторы IP и кабельного телевидения, а также программисты, которые разрабатывают ПО для ТВ-приставок. Чип RTD1395 с четырьмя ядрами ARM Cortex-A53 и граф. процессором Mali-470 стал тогда более дешевой альтернативой для других моделей — RTD1295 и RTD1296, но при этом поддерживал те же возможности работы с видео 4K. Сейчас аналогичные решения есть у Amlogic, Mediatek и других чип-вендоров, но о них мы расскажем в другой раз.

А сейчас сфокусируемся на нашей посылке.

Тестируем железо на плате


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

Итак, характеристики RTD1395ES:
  • 4-ядерный ARM Cortex-A53
  • Графический процессор ARM Mali-470 MP4
  • Декодер H.265 4K 60 fps, VP9 4K 60 fps, H.264 4K 30 fps
  • Кодировщик H.264 1080P 60 fps
  • HDR10, HLG, TCH Prime, Dolby Vision, HDR10+
  • USB2.0 хост/устройство
  • HDMI Tx v2.0b + CEC
  • 10/100 MAC и PHY + Gigabit Ethernet MAC
  • PCIe 2.0
  • SGMII
  • SDIO 3.0 и SD 3.0
  • I2S ввод/вывод
  • S/PDIF вывод




Результаты тестирования платы:
  • 2 х USB 2.0 — оба работают
  • 1 х Ethernet 100 Мбитный порт — работает
  • 1 х HDMI — работает
  • 1 х S/PDIF — работает
  • 1 х 3,5 мм аудиоразъем — работает
  • 1 х слот для SD-карт — работает
  • 1 х ИК-порт — так как «родного» пульта у нас не было, а пульт от Amlogic не подошёл, то протестировать не смогли
  • 1 х USB Type-C — только как питание
  • 1 х WIFI/Bluetooth-модуль: wifi — работает, bluetooth не проверяли


Питание платы реализовано по кабелю Type-C на 5 Вольт так как отдельный разъём питания не распаян.

Для навигации в Android мы пробовали использовать пульт Opal с usb-свистком, который прежде работал со всеми IPTV-коробками, но на этой работать он отказался и даже не определялся в lsusb. Из-за этого пришлось пользоваться клавиатурой/мышью, что не очень удобно из-за отсутствия кнопок Back и Menu.

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

Тестируем воспроизведение видео


1. Запускаем 56 тестовых роликов


Проверяем возможности декодирования с помощью тестовых видео с сайта http://jell.yfish.us/

Открыть список из 56 видеофайлов для проверки:
jellyfish-3-mbps-hd-h264.mkv
jellyfish-3-mbps-hd-hevc-10bit.mkv
jellyfish-3-mbps-hd-hevc.mkv
jellyfish-5-mbps-hd-h264.mkv
jellyfish-5-mbps-hd-hevc.mkv
jellyfish-10-mbps-hd-h264.mkv
jellyfish-10-mbps-hd-hevc-10bit.mkv
jellyfish-10-mbps-hd-hevc.mkv
jellyfish-15-mbps-hd-h264.mkv
jellyfish-15-mbps-hd-hevc.mkv
jellyfish-20-mbps-hd-h264.mkv
jellyfish-20-mbps-hd-hevc-10bit.mkv
jellyfish-20-mbps-hd-hevc.mkv
jellyfish-25-mbps-hd-h264.mkv
jellyfish-25-mbps-hd-hevc.mkv
jellyfish-30-mbps-hd-h264.mkv
jellyfish-30-mbps-hd-hevc.mkv
jellyfish-35-mbps-hd-h264.mkv
jellyfish-35-mbps-hd-hevc.mkv
jellyfish-40-mbps-hd-h264.mkv
jellyfish-40-mbps-hd-hevc-10bit.mkv
jellyfish-40-mbps-hd-hevc.mkv
jellyfish-45-mbps-hd-h264.mkv
jellyfish-45-mbps-hd-hevc.mkv
jellyfish-50-mbps-hd-h264.mkv
jellyfish-50-mbps-hd-hevc.mkv
jellyfish-55-mbps-hd-h264.mkv
jellyfish-55-mbps-hd-hevc.mkv
jellyfish-60-mbps-hd-h264.mkv
jellyfish-60-mbps-hd-hevc-10bit.mkv
jellyfish-60-mbps-hd-hevc.mkv
jellyfish-70-mbps-hd-h264.mkv
jellyfish-70-mbps-hd-hevc.mkv
jellyfish-80-mbps-hd-h264.mkv
jellyfish-80-mbps-hd-hevc.mkv
jellyfish-90-mbps-hd-h264.mkv
jellyfish-90-mbps-hd-hevc-10bit.mkv
jellyfish-90-mbps-hd-hevc.mkv
jellyfish-100-mbps-hd-h264.mkv
jellyfish-100-mbps-hd-hevc.mkv
jellyfish-110-mbps-hd-h264.mkv
jellyfish-110-mbps-hd-hevc.mkv
jellyfish-120-mbps-4k-uhd-h264.mkv
jellyfish-120-mbps-4k-uhd-hevc-10bit.mkv
jellyfish-140-mbps-4k-uhd-h264.mkv
jellyfish-140-mbps-4k-uhd-hevc-10bit.mkv
jellyfish-160-mbps-4k-uhd-h264.mkv
jellyfish-160-mbps-4k-uhd-hevc-10bit.mkv
jellyfish-180-mbps-4k-uhd-h264.mkv
jellyfish-180-mbps-4k-uhd-hevc-10bit.mkv
jellyfish-200-mbps-4k-uhd-h264.mkv
jellyfish-200-mbps-4k-uhd-hevc-10bit.mkv
jellyfish-250-mbps-4k-uhd-h264.mkv
jellyfish-250-mbps-4k-uhd-hevc-10bit.mkv
jellyfish-300-mbps-4k-uhd-hevc-10bit.mkv
jellyfish-400-mbps-4k-uhd-hevc-10bit.mkv


Из всех протестированных видео не запустились только 3 файла из-за краша в realtek.rvsd@1.0-service:
jellyfish-250-mbps-4k-uhd-hevc-10bit.mkv
jellyfish-300-mbps-4k-uhd-hevc-10bit.mkv
jellyfish-400-mbps-4k-uhd-hevc-10bit.mkv

Лог ошибки воспроизведения:
DEBUG (4077 4077)  F	pid: 1815, tid: 4069, name: rvsd@1.0-servic  >>> /vendor/bin/hw/vendor.realtek.rvsd@1.0-service <<<           	 
DEBUG (4077 4077)  F	signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------                                                   	 
DEBUG (4077 4077)  F	Abort message: 'FORTIFY: pthread_mutex_destroy called on a destroyed mutex (0xa7b1b06c)'


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

Скриншоты работы видеоплеера от Realtek получить не удалось. Вероятно, дело в том что плеер реализован не средствами Android, а имеет доступ напрямую к фреймбуферу, чтобы защитить контент от пиратства. В VLC и ExoPlayer скриншоты делаются без проблем.

При тестировании этих же видео в VLC файлы h264 играет до 180 Мбит/с, дальше уже не успевает подготавливать кадры. HEVC перестаёт воспроизводить на 120 Мбит/с (судя по логам крашей — из-за нехватки памяти).

2. Запускаем тест Geekbench3


В тесте Geekbench3 система набрала 523/1656 баллов SingleCore/MultiCore, что примерно равно производительности чипа Amlogic S905 (500/1400) а в multicore даже немного опережает. Но при этом значительно отстаёт от Amlogic S905X2 (700/2200).



3. Проверяем разные fps


Мы тестировали видео с разной кадровой частотой (fps): 23.976, 24, 25, 50, 59.94, 60. С этим проблем не возникло.

Варианты видео с прогрессивной и чересстрочной развёрткой также воспроизводятся успешно.

4. Запускаем стримы HLS и Mpeg-Dash


Также протестировали воспроизведение HLS и Mpeg-Dash-стримов с помощью нескольких способов, а именно:

Способ №1. Воспроизведение стримов через агрегатор фильмов HD VideoBox, в котором при запуске видео можно выбрать плеер, в нашем случае — VideoPlayer.




Способ №2. Воспроизведение HLS и Mpeg-Dash- стримов через youtube-приложение. Для тестирования брали ролики 4K 60 fps. Просадок кадров или затормаживания не заметили. На всех скриншотах из youtube получился чёрный экран вместо картинки, вероятно, из-за защиты контента.



На SmartYoutube скриншоты делаются корректно.

Способ №3. Скормить mpd- и m3u8-файлы напрямую плееру через файловый менеджер или браузер никак не удалось, но в некоторых случаях браузер способен воспроизводить видео.

Способ №4. Воспроизведение стримов DASH и HSL через Exoplayer Demo. Все видео, ссылки на которых были живы, воспроизводились успешно. Единственное, что не воспроизводилось — защищённые видео Widevine, которые сопровождались надписью «Это устройство не поддерживает требуемую DRM-схему» (This device does not support the required DRM scheme)…

5. Встроенные тесты видео от Realtek


Также на плате Hercules ОТТ есть и собственное предустановленное приложение для тестирования воспроизведения сразу нескольких видео. В ходе тестирования выяснилось, что в режиме, когда экран делится на 2 или в режиме картинка-в-картинке, более-менее сносно воспроизводится видео только с битрейтом до 4—5 Мбит/с и желательно MPEG4:



Видео с низким битрейтом 360 кбит/с, но 60 fps не осилил даже 2 видео одновременно.

Видео с низким битрейтом 670 кбит/с и 15 fps и разрешением 320x240 пикселей осилил одновременно 8 видео, при 9 и более некоторые могли не запуститься и кадры в видео терялись.



Также на плате Realtek предустановлена программа Encoder, которая позволяет транскодировать до 4 видео одновременно из mp4 в AVC-ts-файлы.





Проверили, что она может транскодировать:
1 видео 1080p60fps (скорость транскодирования около 54 fps)
2 параллельных видео 1080p30fps (скорость транскодирования около 23 fps)

6. Запускаем приложение OpenCamera


Для последней проверки запускаем приложение OpenCamera и подключаем usb-веб-камеру Logitech С920 для тестирования кодирования видеозаписи. Выяснили, что в формате AVC на плате можно записать видео до 1080p27fps. В формате HEVC записать видео не удалось.

Выводы


Тесты показали, что в целом чип RTD1395 соответствует заявленным показателям. Плату Hercules ОТТ можно использовать для разработки и отладки устройств типа Android TV, дисплеев Miracast and Intel Wireless, ТВ-приставок и стриминговых OTT-плееров. Также на ней можно разрабатывать прошивку на основе AOSP для операторов IP-телевидения.

А для полной объективной оценки этого решения можно еще изучить конкурентов с аналогичными характеристиками, таких как Amlogic s905x и более новый S905X2.