У меня есть программа в Delphi, которая принимает фреймы из внешнего приложения в 25 герцах (25 раз в секунду), а затем преобразует их в 60 герц (60 кадров в секунду), создавая 1 -2 дополнительных кадра. Мне нужно вывести эти дополнительные кадры, непрерывно создавая буфер кадров и выводя из него фреймы из отдельного потока. Проблема в том, что 1000/60 составляет 16.66667, что означает, что я не могу просто отправить кадры в «интервал» на 16 или 17 миллисекунд, мне нужно, чтобы это было более точно. Как это сделать в Delphi/Windows?Delphi таймер более точный, чем миллисекунды
ответ
Используйте multimedia timer с помощью Win32 API timeSetEvent()
или CreateTimerQueueTimer()
.
Спасибо! Проблема в том, что они измеряются только с точностью до миллисекунд. – Araz
Вы, вероятно, нужно использовать оба следующих:
- Высокое разрешение таймера. Это доступно через функцию Win32
QueryPerformanceCounter
, а также обернуто по типу DelphiTStopwatch
. - A waitable timer. Это позволяет вам установить дату платежа в будущем и иметь блок потока, и просыпаться в установленный срок.
Оба они имеют более высокое разрешение, чем таймер GUI, и должны быть достаточными для ваших нужд. Прочтите обзор: http://msdn.microsoft.com/en-gb/library/windows/desktop/ms644900.aspx
Ожидаемые таймеры основаны на одном и том же ядре часового механизма планировщика ядра, поэтому не более точны, если вы не выполняете ['NtSetTimerResolution'] (http://undocumented.ntinternals.net/source/usermode/undocumented%20functions/time/ntsettimerresolution. html), см. http://www.virtualdub.org/blog/pivot/entry.php?id=272 –
- 1. Точный таймер миллисекунды в C#
- 2. Есть ли более точный таймер LWJGL
- 3. Подробнее Точный таймер, чем секундомер?
- 4. Node.JS Точный таймер
- 5. Точный таймер Класс
- 6. Таймер более надежный, чем System.Threading.Timer
- 7. Таймер: период меньше миллисекунды
- 8. C++, Таймер, миллисекунды
- 9. Task.Delay для более чем int.MaxValue миллисекунды
- 10. точный таймер Javascript
- 11. C++ QueryPerformanceCounter более точный, чем сон?
- 12. Есть ли более точный способ создания Javascript-таймера, чем setTimeout?
- 13. Таймер для Android не точный
- 14. Точный таймер с использованием AudioUnit
- 15. TIMEFIELD с более чем 24 часов (таймер)
- 16. STM32 таймер период не точный
- 17. Как сделать точный таймер на Android?
- 18. Более точный houghline OpenCV
- 19. Точный таймер обратного отсчета js daily repeat
- 20. Быстрый и точный таймер повторения Python
- 21. Таймер Delphi и переменная
- 22. В Javascript, как создать точный таймер с миллисекундами?
- 23. Более точный тип данных, чем поплавок или двойной? C++
- 24. Что более точный, чем GPS для определения местоположения на мобильных
- 25. Почему FLOAT дает мне более точный результат, чем DECIMAL?
- 26. OpenCV более точный в OS X, чем Linux
- 27. Таймер обратного отсчета времени Android миллисекунды?
- 28. VB.NET миллисекунды таймер - "чч \: мм \: сс \, FFF"
- 29. Как получить точный таймер в ios
- 30. Какой самый точный таймер в .NET?
см. Https://sergworks.wordpress.com/2010/04/06/a-better-timer-for-a-delphi-programmer/ – kludg
похоже, что вам нужен 'TStopWatch' - http : //docwiki.embarcadero.com/Libraries/XE7/en/System.Diagnostics.TStopwatch – kludg
Используйте таймер 1 мс, отправьте два кадра на 17 мс, а затем один на 16 мс. –