AIMP Forum

AIMP for PC => Ошибки и замечания / Bugs => Обработано / Processed => Topic started by: Black_AVP_Bim on March 03, 2022, 09:51:19

Title: [x] [2366] Проблемы с анимацией при масштабировании
Post by: Black_AVP_Bim on March 03, 2022, 09:51:19
Мучаю сейчас свои "тяжёлые" скина, в частности - этот (https://www.aimp.ru/forum/index.php?topic=44852.0).
Начиная с масштаба 175% и выше замораживаются анимированные элементы скина: индикаторы (TASEGauge), аниматоры, в контекстном меню субменю не показываются.
Что интересно, в указанном скине бобины вертятся нормально, хотя это самый "скоростной" аниматор в скине, а индикаторы, счётчик останавливаются. При "перемотке" трека рулоны ленты (аниматоры или TASEStateDisplay) тоже стоят. Перегрузки процессора при этом нет - 12-14% при масштабе плеера 200%.
Всё выше описанное относится к Windows 11, в 7-ке подобная картина наблюдается уже, начиная с масштаба 150%.
Возможно, это только моя проблема, хотелось, чтоб кто-нибудь проверил.
Title: Re: [2366] Проблемы с анимацией при масштабировании
Post by: Artem on March 15, 2022, 17:00:00
Прошу прощения за долгое молчание. Нет, проблема наблюдается не только у тебя.

На сколько я могу судить, из-за того, что у бобин слишком большой fps, они забивают всю очередь сообщений и до других элементов сообщение об отрисовке просто не доходит. Буду думать.
Title: Re: [2366] Проблемы с анимацией при масштабировании
Post by: Black_AVP_Bim on March 15, 2022, 18:10:04
Тайминги у аниматоров бобин меняются в диапазоне 5..11 мс. При этом ядро загружено на 70..85%, вроде, запас ещё есть.
Досадно, что остальные ядра простаивают.
Title: Re: [2366] Проблемы с анимацией при масштабировании
Post by: Artem on March 15, 2022, 21:18:28
Тайминги у аниматоров бобин меняются в диапазоне 5..11 мс. При этом ядро загружено на 70..85%, вроде, запас ещё есть.
Досадно, что остальные ядра простаивают.

Увы, рендеринг однопоточет и иначе быть не может. Нашел, что именно не успевает обрабатываться в этом случае - таймеры для обновления визуализации и позиции воспроизведения.
Title: Re: [2366] Проблемы с анимацией при масштабировании
Post by: Black_AVP_Bim on March 16, 2022, 09:24:44
То есть, проблема решения не имеет?
Title: Re: [2366] Проблемы с анимацией при масштабировании
Post by: Black_AVP_Bim on March 16, 2022, 18:56:09
Для сравнения сделал тестовый проект с графикой увеличенной в 2 раза уже при рисовании, т. е., чтоб на экране это выглядело, как при масштабе 200%.
Если в первом случае, при масштабировании в плеере 200% крутятся только одни бобины и заметно медленнее, чем задано, то во втором вся анимация работает.
Получается, что и сама отрисовка с масштабированием значительно замедляет анимацию.

Артём, если будешь заниматься этим вопросом, у меня есть тестовый проект, на котором можно поиграться с маштабированием, могу скинуть.
Title: Re: [2366] Проблемы с анимацией при масштабировании
Post by: Artem on March 16, 2022, 19:55:09
То есть, проблема решения не имеет?

Через распараллеливание - нет. Но есть другие идеи, пока не могу найти в себе сил, чтобы сесть и хотя бы пару часов поэкспериментировать
Title: Re: [2366] Проблемы с анимацией при масштабировании
Post by: Artem on March 17, 2022, 15:18:04
Попробуй эту сборку:
https://disk.yandex.ru/d/4_vWAnCJD4xjQQ

Я сделал простенький балансировщик: движок будет замедлять high-resolution таймеры, если очередь сообщений начинает переполняться.
Title: Re: [2366] Проблемы с анимацией при масштабировании
Post by: Black_AVP_Bim on March 17, 2022, 18:55:05
При масштабе 175%, вроде, вся анимация работает, но чувствуется общее замедление даже по стрелочным индикаторам.
Для масштаба 200% ничего не поменялось - по-прежнему вращаются только бобины.

Хуже стала картина для обычного масштаба (100%) - рывки на аниматорах бобин и здесь стали заметны. При этом нагрузка на ядро возросла с 55 до 70-75%.
Сделал тестовый проект (https://disk.yandex.ru/d/BFJ7f__VF6ybDg) в котором косвенно измеряется период аниматоров (через системное время). В последней сборке, в сравнении с предыдущей, оно довольно сильно колеблется и более значительно отличается от заданного даже при некритических его значениях.  Как следствие, и рывки аниматоров.
Title: Re: [2366] Проблемы с анимацией при масштабировании
Post by: Artem on March 17, 2022, 19:11:25
Я проверял как раз на 200%.
Рывки, видимо, связаны с работой балансировщика - он то придерживает, то ускоряет таймеры.
Эх, жаль, что плеер - не игра, где общий постоянный таймер на все приложение...
Title: Re: [2366] Проблемы с анимацией при масштабировании
Post by: Artem on March 17, 2022, 19:14:41
А попробуй такой вариант:
https://disk.yandex.ru/d/QNSe7MPRSKEGDw

Тут я перевел визуализацию и обновление позиции воспроизведения на high-resolution таймер. Понимаю, костыль (ведь другие таймеры в приложении по-прежнему не будут работать), но покрайней мере UI главного окна должен ожить.
Title: Re: [2366] Проблемы с анимацией при масштабировании
Post by: Black_AVP_Bim on March 17, 2022, 20:00:07
Ну, у нас с тобой железо всё же разное, хоть я и успел обновиться до обвала рубля.
На 200% со скином Akai у меня бобины вертятся, но значительно медленней чем надо и почти с одинаковой скоростью, стрелочники работают, а счётчик стоит. Навигация по треку от кнопок тоже не работает.
По тестовому примеру: для бобин тайинги заданы: 11 мс для левой и 5 мс для правой. Реально обе крутятся с периодом 12-14 мс на кадр. Включение индикаторов, спектрума или дополнителных аниматоров это время ещё более увеличивает.
Без масштабирования (100%) картина вернулась к прежней.
Title: Re: [2366] Проблемы с анимацией при масштабировании
Post by: Artem on March 17, 2022, 20:26:37
Тут ясно одно, что при эмуляции масштабирования все работает медленнее: система не успевает рисовать картинку с таким FPS, из-за чего hires-таймеры забивают очередь сообщений, и на обычные ее просто не хватает. Ладно, я понял, буду думать дальше.
Title: Re: [2366] Проблемы с анимацией при масштабировании
Post by: Artem on March 20, 2022, 13:03:16
Попробуй эту сборку:
https://disk.yandex.ru/d/TQrYusKb7Kn5hg
Title: Re: [2366] Проблемы с анимацией при масштабировании
Post by: Black_AVP_Bim on March 20, 2022, 18:12:25
В принципе, лучше не стало. Интервал 5 мс аниматор не отрабатывает, реальное время получается 8..10 мс, большие колебания скорости анимации. (Речь о масштабе 200%)
Проверяю сейчас на тестовом примере, там можно установить скорость вращения, посмотреть реальную. Более или менее нормальная работа всей анимации на моём железе начинается со значений 16..18 мс, если их установить для обеих бобин.
Сильнее всего тормозит аниматор ленты (не смотря на то, что он медленный), поскольку получается аниматор над аниматором, и спектрум.
В исходной сборке (до всех этих экспериментов) загрузка ядра хоть и была под 100% на критических таймингах, но была довольно равномерной, сейчас тоже при полной загрузке ядра есть периодические провалы до 60..70%. Они не продолжительные, но даже заметно, что проц незначительно снижает при этом тактовую частоту.
В 100%-ном масштабе нагрузка на процессор тоже несколько выше, чем в исходной сборке.