![](https://habrastorage.org/webt/wz/ro/rk/wzrorkde71xyzs1e0r8-9234jt8.jpeg)
Мы недавно получили посылку от партнеров в Тайване — компании 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 вывод
![](https://habrastorage.org/webt/m7/ol/cy/m7olcy86p6db2groucrdeuwe9zi.jpeg)
Результаты тестирования платы:
- 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
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).
![](https://habrastorage.org/webt/2p/kg/qk/2pkgqkqorjnwq6zz4hh0g3a48cc.png)
3. Проверяем разные fps
Мы тестировали видео с разной кадровой частотой (fps): 23.976, 24, 25, 50, 59.94, 60. С этим проблем не возникло.
Варианты видео с прогрессивной и чересстрочной развёрткой также воспроизводятся успешно.
4. Запускаем стримы HLS и Mpeg-Dash
Также протестировали воспроизведение HLS и Mpeg-Dash-стримов с помощью нескольких способов, а именно:
Способ №1. Воспроизведение стримов через агрегатор фильмов HD VideoBox, в котором при запуске видео можно выбрать плеер, в нашем случае — VideoPlayer.
![](https://habrastorage.org/webt/dw/rj/me/dwrjmeige5qvqsc-hchc2twkxdi.png)
![](https://habrastorage.org/webt/ew/ec/nl/ewecnlacbpjzgqkeg17qcfclyty.png)
Способ №2. Воспроизведение HLS и Mpeg-Dash- стримов через youtube-приложение. Для тестирования брали ролики 4K 60 fps. Просадок кадров или затормаживания не заметили. На всех скриншотах из youtube получился чёрный экран вместо картинки, вероятно, из-за защиты контента.
![](https://habrastorage.org/webt/vi/x9/0h/vix90hqp4jzau4tgmizji5a85hq.png)
На 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:
![](https://habrastorage.org/webt/fy/m9/l_/fym9l_8dbvywhnko6rozsj2dso4.png)
Видео с низким битрейтом 360 кбит/с, но 60 fps не осилил даже 2 видео одновременно.
Видео с низким битрейтом 670 кбит/с и 15 fps и разрешением 320x240 пикселей осилил одновременно 8 видео, при 9 и более некоторые могли не запуститься и кадры в видео терялись.
![](https://habrastorage.org/webt/b7/ut/tw/b7uttw6cq7cxfv-vn8e3oiiykhy.png)
Также на плате Realtek предустановлена программа Encoder, которая позволяет транскодировать до 4 видео одновременно из mp4 в AVC-ts-файлы.
![](https://habrastorage.org/webt/ul/qt/9k/ulqt9kmjuroyhvuu5q1yyf4txay.png)
![](https://habrastorage.org/webt/rl/ig/hc/rlighcq6466v0chuqjwjrf5fogy.png)
Проверили, что она может транскодировать:
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.