Название: QTimer и правильное время Отправлено: Disa от Октябрь 21, 2013, 09:55 Из-за невнимательности, в доках пропустил, что QTimer не всегда вызывается вовремя, за что серьезно поплатился.
Задача - обновление кадра с жестким fpsом (например 25). То есть раз в 40мс. Эти самые 40 мс не могу никак отловить. Запускаю таймер и одновременно счетчик времени. Проверил значения счетчика в момент вызова нужной функции - от 60 до 90 мс, вместо желаемых 40мс. Подскажите куда капать? Название: Re: QTimer и правильное время Отправлено: kambala от Октябрь 21, 2013, 11:58 попробуй использовать таймер из системного API
Название: Re: QTimer и правильное время Отправлено: kuzulis от Октябрь 21, 2013, 12:28 Стоп, а зачем вобще QTimer?
Можно же переопределить paintEvent() и в нем вызывать QElapsedTimer::elapsed() и если elapsed = 40 msec, то перерисовывать если нет, то пропускать перерисовку.. Или как-то так.. Кроме того можно замерить реальные фпс (http://qt-project.org/forums/viewthread/6094) и если они реально чаще чем 25 фпс, то такой метод (с пропусками) может сработать.. Но в общем случае не реально получить точность +/- 1 мсек, т.к. ОС не является реального времени. Это будет работать в некоторых специфических случаях да и то не всегда, ИМХО. :) UPD: Хотя, кажется, FPS - это параметр формата видео, с которым должно открываться видео устройство. Хотя я не силен в этой теме. Название: Re: QTimer и правильное время Отправлено: xokc от Октябрь 22, 2013, 09:56 Я делал приблизительно так (псевдокод).
Код Этим достигалось то, средняя частота прорисовки соответствовала именно 40 мс за счет более частого опроса таймера. Для улучшения точности можно поставить интервал таймера и в 1 мс, но реально на обычной ОС рассчитывать на точности, бОльшие, чем в 10 мс я бы не стал. Можно вместо таймера собственный поток организовать, это тоже может немного помочь. Жестких же 25 кадров секунду можно получить, как уже упоминалось, только на ОС реального времени. Название: Re: QTimer и правильное время Отправлено: Disa от Октябрь 22, 2013, 11:25 Ну я думаю что 40-50мс то что нужно, наверное, потом делать дополнительную проверку каждый 3-4 секунды. Как-то делают видео-плееры, которые играю 2а часа видео без разбежки со временем и жестким fpsом. Мне в общем-то это и нужно.
Жесткий fps как раз из-за видео. Оно мб долгим до 8-10 часов (рабочая смена) и должно быть синхронизировано с аудио-потоком. Спасибо большое всем за помощь, буду пробовать сейчас! Название: Re: QTimer и правильное время Отправлено: kuzulis от Октябрь 22, 2013, 12:40 Как-то делают видео-плееры, которые играю 2а часа видео без разбежки со временем и жестким fpsом. Дык они используют системные AVStream (http://msdn.microsoft.com/en-us/library/windows/hardware/ff554240%28v=vs.85%29.aspx)mini drivers, для воспроизведения чего-либо. (это если про винду). Т.е. это все "ядреный" интерфейс. Если не ошибаюсь. |