Эльдар Муртазин прав, или не все про-Apple сайты полезны

Мне нравится разбираться в причинах тех или иных вещей, особенно когда это касается близкой мне темы — смартфоны. Чтобы перейти к сути из заголовка позволю себе напомнить читателю предшествующие события.

Intro.

В прошлом году, после того как Apple представила iPhone X с первым для себя 6-ти ядерным процессором A11 Bionic, за несколько дней до старта продаж iPhone 8\Plus (которые тоже получили A11), в некоторых СМИ и блогах появились обзоры новинок, в том числе и производительности нового CPU. По заявлению Apple, в новом процессоре по сравнению с предыдущим А10, мощные ядра увеличили производительность на 25%, а энергосберегающие — на все 70%. Со стороны данные цифры звучат довольно не плохо, т.к. ещё пару предыдущих моделей по синтетическим тестам уже являлись хорошей альтернативой младшим Intel Core процессорам.

Одним из СМИ которые получили iPhone 8 \ Plus раньше покупателей был американский Tom’s Guide, издание-спутник легендарного в своё время Tom’s Hardware Guide. Журналисты провели анализ аппаратов, и в том числе замерили производительность CPU А11 Bionic. Что отличило данный обзор и замеры от 90% аналогичных материалов других СМИ, что помимо традиционных результатов эталонного теста производительности компьютерной системы «Geekbench», привели замеры сценариев из реальной жизни.

Суть.

Если в Geekbench процессор A11 как всегда показал себя довольно хорошо, т.е. опередил конкурентов в  среднем в 2 раза. Например,  Qualcomm Snapdragon 835 в тесте производительности одного ядра получил 1936 очков vs  4169 у A11, в многоядерном тесте — 6562 vs 10438.

То в тестах «сценарии реально жизни» A11 вовсе опережал конкурентов в 3-6 раз. Первый тест Tom’s Guide назвала «открытие 5МБ PDF файла с картой-иллюстрацией». 5МБ вектора хорошая нагрузка. Результаты вышли следующие:


По этому тесту сомнений у меня не возникло, т.к. формат PDF является основой GUI iOS, которая в свою очередь основывается на macOS, а там в свою очередь задействован компонент графического интерфейса Quartz. Подробнее в Wikipedia. Данный подход позволил Apple во время своего перерождения в 1998-2000 не только продолжать оставаться желаемой системой в издательском деле, но и обычному пользователю предоставить полезные фишки — например, скриншот содержимого экрана в PDF, в котором текст останется текстом, который можно искать и выделять, а не растром. Или в Safari сохранять страницы без потери форматирования. За почти 20 лет Apple могла заоптимизировать работу с PDF как никто другой, в общем, вполне себе допустимый результат. Тем более PDF на Note 8 открывали с тем, что стоит из коробки.

В комментариях к Бирюлькам 453 на Mobile-Review мы всем миром пытались найти соизмеримый PDF, но не получалось сделать так, чтобы он на актуальных Android открывался такое больше время.

Другим тестом является «работа с 4К видео». Для него журналисты взяли 4К видео с дрона, наложили фильтр, добавили переходов, запустили экспорт и получили результат:

По началу можно сказать, что Apple так же давно в любимчиках у людей которые работают с фото\видео, поэтому скорее всего очередной пласт оптимизации даёт о себе знать, как и в случае с PDF.

Всё бы хорошо, если бы Эльдар Муртазин (глава Mobile-Review) не сделал видео в котором он проделывает аналогичную операцию. И там результат противоположный — Note 8 на 22 секунды обошел iPhone 8 Plus.

Как сказали в культовом фильме — вечер перестаёт быть томным.

Эльдар в видео сказал, что ему не удалось установить, про методику тестирования, поэтому он использовал приложения которые идут с аппаратами — iMovie для iOS и встроенные видеоредактор у Note 8. Полазив по сайту, я обнаружил полный обзор iPhone 8\Plus от Tom’s Guide, где указано, что для работы с видео они использовали Adobe Premier Clip.

У Adobe свои наработки для работы с видео которые хорошо работают на iOS и плохо на Android? они ведь не новички на рынке видео редакторов. — Появилась такая мысль.

Ремарка. Не смотря на то, что Эльдар Викторович со скепсисом относится к такого рода сценариям, мне он кажется вполне реальным, и уж тем более выбор ПО. Adobe предоставляет свою «экосистему» для творческих людей под названием Creative Suite — в которую входит подписка на ПО( Photoshop, Premier, Illustrator), облако и д.р. Вероятен следующий режим работы: один дизайнер в офисе на десктопе в Photoshop может делает картинки, иллюстрации, тот же watermark , шарит его в облако организации, а в «поле» видеомонтажер на мобильном Premier редактирует на скорую руку материал, добавляет  watermark, и выкладывает в соц.сеть. 21 век как есть.

Чтобы наконец-то докопаться до истины, я установил себе на iOS и на Android жены Premier, загрузил 4К видео (трейлер бондианы Skyfall), применил фильтр Dreams, включил секундомер и запустил export.
Отмечу, что у меня нет возможности использовать A11 и Snapdragon 835, поэтому я тестировал на A10 и его одногодке Snapdragon 820. Результаты следующие:

iOS : 1 мин 05 сек
Android: 3 мин 20 сек.

Невооруженным взглядом видно, что повторяется Tom’s Guide, но с поправкой на другое поколение CPU. Значит всё дело в Adobe Premier Clip.

Скачиваю IPA файл Adobe Premier Clip из iTunes Store, это файл iOS загружает в телефон и из него ставит приложения, аналог APK. Смотрю внутренности, никаких сторонних библиотек не вижу, только большой бинарник («.exe») и ресурсы — картинки, да шрифты. А надеялся я увидеть какие нибудь кросс-платформенные библиотеки, аналоги VLC(kit) для работы с фото\видео от Adobe, возможно какие-то custom encoder и т.п.

Скачиваю APK. Результат аналогичный, в папке \lib находятся бинарники для работы с аудио, да «кодеки» gif и webp, т.е. нет чего-то 10Мб, что могло конвертировать mp4 видео. Но благодаря природе Java есть возможность подсмотреть исходный код приложения, что с удовольствием проделываю.

Код не обфусцирован, т.е. специально не запустан, поэтому практически сразу находится необходимый участок. И можно увидеть, что при экспорте финального видеоролика Premier Clip задействует доступный с Android 4.1  API — MediaCodec. Из названия не сложно догадаться, что речь идет о кодеках для разнообразных media. Документация проясняет, что буквально в 100 строк кода можно сделать mp4 файл сжатый кодеком который доступен в железе\драйверах аппарата.

Очевидно, что аналогичное используется на iOS.

Интерфес Adobe Premier Clip довольно сильно адаптирован для мобильников, т.е. аскетичен — работа с материалом минимальная, а на iOS нет даже настроек видео для экспорта. На Android дают выбор — 720р или 1080р, и всё. Получается, что пи экспорте используются зашитые в ПО настройки.

На андроиде они — h264, 30 FPS, что-то 1000 для видео, 44 для аудио.
Но всё же — почему тогда большая разница в скорости экспорта видео?

И тут возникла идея которую стоило бы осуществить в начале — посмотреть параметры получившихся после экспорта видео.

Слева — Android, справа — iOS

Тут встало всё на свои места — у iOS версии файла почти в 2 раза меньше битрейт видео, т.е. iOS версия Adobe Premier Clip настроила кодировщик с большими потерями. На глаз эти потери могут быть и не заметны, особенно когда картинка двигается, а могут быть и заметны, например, больше jpeg артефактов в динамических сценах. Размер файла соответственно тоже меньше. Экономят владельцам iOS место на диске, ведь у них нет SD карточек?

Вывод.

Чудес не бывает. С информацией в интернете работает только такой подход — доверяй, но проверяй. В 4 раза опережать андроид конкурента? Вряд ли. Если увеличить битрейт в 2 раза, думаю, что разрыв будет в 1 минуту. А чтобы хоть как-то прояснить ситуацию со случаем Эльдара Викторовича, т.е. когда Note 8 вообще обошёл A11, надо посмотреть параметры получившихся файлов.

Конец.

Пасхалка.

Если внимательно посмотреть на скриншот с кодом про настройку энкодера, то можно увидеть следующую строку: Если экспортируемое видео имеет высоту 1080(FullHD) и кодек содержит в себе OMX.MTK, то видео необходимо экспортировать с высотой 1072.

Предполагаю, что речь о том, что есть какой-то баг на MTK платформе, который обходится таким образом 🙂 Поэтому, при покупке смартфона не стоит экономить на спичках.