AIMP Forum
AIMP for Windows => Ошибки и замечания / Bugs => Тема начата: Black_AVP от Марта 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%.
Возможно, это только моя проблема, хотелось, чтоб кто-нибудь проверил.
-
Прошу прощения за долгое молчание. Нет, проблема наблюдается не только у тебя.
На сколько я могу судить, из-за того, что у бобин слишком большой fps, они забивают всю очередь сообщений и до других элементов сообщение об отрисовке просто не доходит. Буду думать.
-
Тайминги у аниматоров бобин меняются в диапазоне 5..11 мс. При этом ядро загружено на 70..85%, вроде, запас ещё есть.
Досадно, что остальные ядра простаивают.
-
Тайминги у аниматоров бобин меняются в диапазоне 5..11 мс. При этом ядро загружено на 70..85%, вроде, запас ещё есть.
Досадно, что остальные ядра простаивают.
Увы, рендеринг однопоточет и иначе быть не может. Нашел, что именно не успевает обрабатываться в этом случае - таймеры для обновления визуализации и позиции воспроизведения.
-
То есть, проблема решения не имеет?
-
Для сравнения сделал тестовый проект с графикой увеличенной в 2 раза уже при рисовании, т. е., чтоб на экране это выглядело, как при масштабе 200%.
Если в первом случае, при масштабировании в плеере 200% крутятся только одни бобины и заметно медленнее, чем задано, то во втором вся анимация работает.
Получается, что и сама отрисовка с масштабированием значительно замедляет анимацию.
Артём, если будешь заниматься этим вопросом, у меня есть тестовый проект, на котором можно поиграться с маштабированием, могу скинуть.
-
То есть, проблема решения не имеет?
Через распараллеливание - нет. Но есть другие идеи, пока не могу найти в себе сил, чтобы сесть и хотя бы пару часов поэкспериментировать
-
Попробуй эту сборку:
https://disk.yandex.ru/d/4_vWAnCJD4xjQQ
Я сделал простенький балансировщик: движок будет замедлять high-resolution таймеры, если очередь сообщений начинает переполняться.
-
При масштабе 175%, вроде, вся анимация работает, но чувствуется общее замедление даже по стрелочным индикаторам.
Для масштаба 200% ничего не поменялось - по-прежнему вращаются только бобины.
Хуже стала картина для обычного масштаба (100%) - рывки на аниматорах бобин и здесь стали заметны. При этом нагрузка на ядро возросла с 55 до 70-75%.
Сделал тестовый проект (https://disk.yandex.ru/d/BFJ7f__VF6ybDg) в котором косвенно измеряется период аниматоров (через системное время). В последней сборке, в сравнении с предыдущей, оно довольно сильно колеблется и более значительно отличается от заданного даже при некритических его значениях. Как следствие, и рывки аниматоров.
-
Я проверял как раз на 200%.
Рывки, видимо, связаны с работой балансировщика - он то придерживает, то ускоряет таймеры.
Эх, жаль, что плеер - не игра, где общий постоянный таймер на все приложение...
-
А попробуй такой вариант:
https://disk.yandex.ru/d/QNSe7MPRSKEGDw
Тут я перевел визуализацию и обновление позиции воспроизведения на high-resolution таймер. Понимаю, костыль (ведь другие таймеры в приложении по-прежнему не будут работать), но покрайней мере UI главного окна должен ожить.
-
Ну, у нас с тобой железо всё же разное, хоть я и успел обновиться до обвала рубля.
На 200% со скином Akai у меня бобины вертятся, но значительно медленней чем надо и почти с одинаковой скоростью, стрелочники работают, а счётчик стоит. Навигация по треку от кнопок тоже не работает.
По тестовому примеру: для бобин тайинги заданы: 11 мс для левой и 5 мс для правой. Реально обе крутятся с периодом 12-14 мс на кадр. Включение индикаторов, спектрума или дополнителных аниматоров это время ещё более увеличивает.
Без масштабирования (100%) картина вернулась к прежней.
-
Тут ясно одно, что при эмуляции масштабирования все работает медленнее: система не успевает рисовать картинку с таким FPS, из-за чего hires-таймеры забивают очередь сообщений, и на обычные ее просто не хватает. Ладно, я понял, буду думать дальше.
-
Попробуй эту сборку:
https://disk.yandex.ru/d/TQrYusKb7Kn5hg
-
В принципе, лучше не стало. Интервал 5 мс аниматор не отрабатывает, реальное время получается 8..10 мс, большие колебания скорости анимации. (Речь о масштабе 200%)
Проверяю сейчас на тестовом примере, там можно установить скорость вращения, посмотреть реальную. Более или менее нормальная работа всей анимации на моём железе начинается со значений 16..18 мс, если их установить для обеих бобин.
Сильнее всего тормозит аниматор ленты (не смотря на то, что он медленный), поскольку получается аниматор над аниматором, и спектрум.
В исходной сборке (до всех этих экспериментов) загрузка ядра хоть и была под 100% на критических таймингах, но была довольно равномерной, сейчас тоже при полной загрузке ядра есть периодические провалы до 60..70%. Они не продолжительные, но даже заметно, что проц незначительно снижает при этом тактовую частоту.
В 100%-ном масштабе нагрузка на процессор тоже несколько выше, чем в исходной сборке.