О нас Продукты Поддержка ЧаВо Блог

Улучшения мобильного декодера и проигрывателя EVC в реальном времени

image

 

   Автор: Ольга Кровякова - 26 мая 2021 г.

button

Абстрактный

В этой статье описаны улучшения по сравнению с этапом 1 проекта Мобильный видеоплеер реального времени от октября 2020 года, в котором реализована ранняя версия проигрывателя, способная воспроизводить битовые потоки  EVC в реальном времени. Плеер основан на эталонном программном обеспечении ETM версии 6.1 и оптимизирован для архитектуры ARM. Плеер разработан и протестирован на смартфоне Huawei P40 Pro и демонстрирует воспроизведение в реальном времени тестовых файлов с частотой 24 кадра в секунду и разрешением 1080p с помощью набора инструментов основного профиля EVC.

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

Подводя итоги первого этапа, было представлено решение, позволяющее воспроизводить закодированные последовательности в реальном времени со следующими ограничениями: 

  • Значение параметра квантования: 32; 
  • Набор инструментов кодирования: Affine, DMVR, HTDF, ADMVP, ADCC, AMVR, ATS, IQT, CM_INIT, ADDB, DBF, HMVP, MMVD, POCS, RPL (набор Stage1). 

Представленный EVC Player демонстрирует 25,07 FPS для сцен “ParkScene” и 26,02 FPS для последовательностей “Kimono1&rdquo.

Результаты оптимизаций, выполненных на Этапе 2, показывают, что инструмент BTT можно смело добавлять к набору инструментов, а QP можно уменьшать до 27, что повысит качество изображения при соблюдении условий:

  • Значение параметра квантования: 27;
  • Набор инструментов кодирования: Affine, DMVR, HTDF, ADMVP, ADCC, AMVR, ATS, IQT, CM_INIT, ADDB, DBF, HMVP, MMVD, POCS, RPL, BTT (далее — набор Stage2).

 

Таблица 1. Средняя максимальная скорость воспроизведения, достигнутая с выбранным набором инструментов на тестовом мобильном устройстве для QP=27 

Последовательность испытаний

Скорость декодирования

Декодер этапа 1 (кадров в секунду)

Скорость декодирования

Декодер этапа 2 (кадров в секунду)

Прирост производительности по сравнению с

Декодер этапа 1 (%)

ПаркСцена

21.36

32,99

53,2

Кимоно1

22.85

35.02

54,4

В результате оптимизаций декодер показывает 53-54% прироста производительности в приложении EVC player, предназначенном для смартфона Huawei P40 Pro. 

 

Таблица 2. Выбранный набор инструментов для улучшения игрока в реальном времени

Краткое название инструмента

Полное название инструмента

ЭТМ6.1 ЦТК РА

конфигурация по умолчанию

Выбранный набор инструментов, этап 1

Выбранный набор инструментов, этап  2

АДМВП

Расширенное прогнозирование векторов движения

1

1

1

АФФИННЫЙ

Аффинное предсказание

1

1

1

ХТДФ

Фильтр домена преобразования Адамара

1

1

1

ДМВР

Вывод векторов движения на стороне декодера

1

1

1

ADCC

Расширенное кодирование коэффициентов

1

1

1

АДДБ

Расширенная разблокировка

1

1

1

Альф

Адаптивный петлевой фильтр

1

0

0

АМВР

Разрешение адаптивных векторов движения

1

1

1

АТС

Выбор адаптивных преобразований

1

1

1

БТТ

Двоичные и троичные деревья

1

0

1

CM_INIT

Инициализация контекстного моделирования

1

1

1

ДБФ

Деблокирующий фильтр

1

1

1

EIPD

Расширенные направления внутреннего прогнозирования

1

0

0

ХМВП

История Векторы движения Прогноз

1

1

1

iQT

Расширенное квантование и преобразования

1

1

1

ММВД

Слияние с разницей векторов движения

1

1

1

POCS

Расширенный счетчик порядка изображений

1

1

1

РПЛ

Список эталонных изображений

1

1

1

СУКО

Порядок кодирования разделенных единиц

1

0

0

МДС

Внутриблочное копирование

0

0

0

2. Поддерживаемые инструменты EVC

Инструмент BTT считается инструментом с наибольшим потенциалом, поэтому мы проводим тесты для инструмента BTT, включенного дополнительно к набору Stage1 (таблица 2). 

На следующих рисунках 1–3 показано кодирование EVC, производительность декодирования и значения PSNR для файлов ParkScene и Kimono1, закодированных со значениями QP 27–32 с помощью инструмента BTT64 и без него. Для удобства на рисунках приведены объединенные значения, измеренные для потоков без BTT64 и с BTT64 соответственно.

image

Рисунок 1. Производительность кодирования ETM 6.1 на ПК с процессором i7-9700 под управлением Windows 10 x64 с включенным инструментом BTT64 и без него

image

Рис. 2. Производительность декодера Stage 1 на HUAWEI P40 Pro под управлением EMUI 10.1 с включенным инструментом BTT64 и без него

image

Рисунок 3. Значения PSNR файлов, закодированных кодировщиком ETM 6.1 с включенным инструментом BTT64 и без него.

 

На рисунке 3 показано, что включение BTT64 не приводит к существенному снижению производительности декодера, а также улучшает качество выходного файла’. Поэтому мы можем безопасно включить его в качестве дополнительного инструмента EVC.

Чтобы придерживаться концепции декодирования, предложенной на этапе 1, предлагается включить размер CU 64x64 для BTT (далее для удобства называемый BTT64). 

Чтобы добиться скорости воспроизведения в реальном времени на целевом устройстве, важно знать инструменты EVC, профилирующие информацию во время декодирования. Такая информация была собрана Android Profiler в ходе теста, декодированного с помощью декодера Stage 1. На рисунках 4 и 5 показаны полученные данные профилирования на целевом устройстве для битовых потоков ParkScene и Kimono1, закодированных с помощью набора инструментов Stage 2 и значения QP, равного 27.

image

Рисунок 4. Профилирование декодера для битового потока ParkScene, закодированного с помощью набора инструментов Stage 2 (QP=27)

image

Рисунок 5. Профилирование декодера для битового потока Kimono1, закодированного с помощью набора инструментов Stage 2 (QP=27)

Наиболее трудоемкие функции связаны с DMVR, компенсацией движения (MC), деблокировкой и реконструкцией. Эти инструменты занимают около 77% времени декодирования и являются лучшими кандидатами для SIMD-оптимизации. 

3. Детали реализации и воспроизведение

Чтобы добиться воспроизведения в реальном времени с выбранным набором инструментов, поверх эталонного ПО ETM 6.1 были внесены следующие основные изменения:

  1. Реализация ARM SIMD наиболее важных функций в частях деблокировки и реконструкции
  2. Параллельная обработка в стиле Waterfront (WPP) для процессов деблокирования и декодирования, извлечения потоков и запуска на основе строк

В качестве подготовки к оптимизации многопоточного функционала был проведен дополнительный рефакторинг и оптимизация функций, связанных с разблокировкой. После завершения многопоточной реализации прирост FPS декодера’по сравнению с декодером Stage 1 составляет 40 % для эпизодов Kimono1 и 42 % для эпизодов ParkScene, а проигрыватель способен демонстрировать на устройстве воспроизведение со скоростью 24 кадра в секунду. 

Чтобы объективно и субъективно проверить скорость воспроизведения, плеер был развернут и протестирован на смартфоне Huawei P40 Pro.

На рисунке 6 показано изображение плеера во время воспроизведения битового потока Kimono на устройстве.

image

Рисунок 6. Изображение плеера, работающего на Huawei P40 Pro

4. Профилирование оптимизированного декодера

image

Рисунок 7. Оптимизированное профилирование декодера для битового потока ParkScene, закодированного с помощью набора инструментов Stage 2 (QP=27)

image

Рисунок 8. Оптимизированное профилирование декодера для битового потока Kimono1, закодированного с помощью набора инструментов Stage 2 (QP=27)

5. Загрузка ЦП

Декодер оптимизирован для мобильного телефона Huawei P40 Pro с точки зрения использования ядер ЦП, в частности, ПО работает только с 4 самыми мощными ядрами ЦП Kirin 990 (высокого и среднего класса). На рисунках 9 и 10 показан процент использования ЦП для каждого из 4 мощных ядер во время процесса декодирования.

image

(а) 

 image

(б)

Рисунок 9. Использование ядер ЦП высшего и среднего класса. Воспроизведение кимоно, (а) Этап 1, (б) Этап 2

image(а)

image

(б)

Рисунок 10. Использование ядер ЦП высшего и среднего класса. Воспроизведение ParkScene, (а) Этап 1, (б) Этап 2

 

На рисунках 9–10 показано, что ядра Hi- и Mid-end более эффективно используются оптимизированным декодером Stage 2.

6. Потребляемая мощность

Для оценки энергопотребления в Плеере запускался бесконечный цикл воспроизведения тестовых битпотоков при 100% заряженности Test Mobile Device и процесс работал до тех пор, пока устройство не выключилось из-за недостаточности энергии. В результате Плеер проработал 4 часа 25 минут с файлом Kimono1 и 4 часа 07 минут с файлом ParkScene со скоростью 24 кадра в секунду. На рисунках 11 и 12 суммированы полученные результаты.

image

(а)

image

(б)

Рис. 11. Энергопотребление и скорость воспроизведения при бесконечном воспроизведении кимоно, (а) Этап 1, (б) Этап 2

image

(а)

image

(б)

Рис. 12. Энергопотребление и скорость воспроизведения при бесконечном воспроизведении ParkScene, (а) Этап 1, (б) Этап 2

 

На рисунках 11-12 видно, что расход батареи в Stage 2 немного увеличился по сравнению с Stage 1.

7. Заключение

Solveig Multimedia продолжила оптимизацию, связанную с алгоритмом WPP, представленным на этапе 1, а также оптимизацию функций SIMD.

В результате оптимизаций декодер показывает 53-54% прироста производительности в приложении EVC player, предназначенном для смартфона Huawei P40 Pro. 

Оптимизированный декодер показывает 33-35 FPS для предложенного набора инструментов, куда дополнительно включен инструмент BTT, поэтому все задачи Этапа 2 перевыполнены. А это означает, что значение QP также можно уменьшить до 23. При QP=23 декодер показывает 31,52 FPS для файлов Kimono1 и 28,37 FPS для файлов Parkscene, что достаточно для обеспечения воспроизведения в реальном времени со скоростью 24 FPS для обоих файлов.

button
  • https://www.solveigmm.com/en/howto/early-implementation-of-mobile-real-time-evc-player-mpeg-submission-october-2020/

 

 Об авторе

imageОльга Кровякова - менеджер технической поддержки в комании Solveig Multimedia с 2010 года.

Она является автором многих текстовых и видео инструкций по программным продуктам компании: Video Splitter, HyperCam, WMP Trimmer Plugin, AVI Trimmer+ и TriMP4.

Посколько она работает с программами каждый день, то хорошо знает как они работают. Свяжитесь с Ольгой по почте support@solveigmm.com, если у вас возникнут вопросы и она с радостью вам поможет!