|
|
|
Косяк точности у Now() ?
|
|||
|---|---|---|---|
|
#18+
Приветствую. Помогите разобраться с проблемой. Есть у меня приложение, оно работает с мультимедиа (видео/аудио файлы воспроизводит). Оболочка на делфе, а видео движок - на С++. Так вот, есть в моем приложении такая функция - предпросмотр, как на ютюбе в общем когда ты мышкой водишь по прогрессбару и видишь картинку. Так же у моего приложения есть функция Планировщика - позволяет, например, вырубать плеер (но есть и другие действия, не суть) через заданное время, либо в заданное время. И, например когда задана вторая функция, в заголовке плеера выводится мол планировщик - (действие) - время. В свою очередь заголовок плеера (так как может быть разная информация написана) перерисовывается пару раз в секунду, и в этой функции собирается информация о всех статусных вещах (дхва, имя файла, включенл и планировщик и если включен то что за действие и через сколько / во сколько оно должно быть выполнено, ..., и всё это выводится потом) Так вот, при активации этих двух функций, и в частности когда у планировщика стоит "ЧЕРЕЗ заданное время", после загрузки файла (тут важно заметить - при активном Предпросмотре - файл открывается дважды - сначала строится граф для основного просмотра, потом для предпросмотра - без аудио например) цифры выводимые в заголовке начинают показывать дичь. Вот, например, вырезка из лога: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. Код там простой (winTime - просто для теста добавил): Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. В общем, совершенно не понимаю почему Now() начинает внезапно гнать. Ибо без предпросмотра - время выводится норм. Какой-то косяк точности из-за DirectX-приложения (больше грешить не на что)? Но видеодвижок в С++, они не пересекаются на таком уровне. В общем, не пойму. Объясните пожалуйста господа специалисты, где я не прав... P.S. Может знаете какой-нибудь аналог Now() на который можно было бы заменить в этой ситуации? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2017, 02:03:03 |
|
||
|
Косяк точности у Now() ?
|
|||
|---|---|---|---|
|
#18+
Не помогает, ибо в видеодвижке рендерер именно с этим флагом и создается: ... hr = m_pD3DEx->CreateDeviceEx( m_CurrentAdapter, D3DDEVTYPE_HAL, m_hWnd, GetVertexProcessing() | D3DCREATE_FPU_PRESERVE | D3DCREATE_MULTITHREADED | D3DCREATE_ENABLE_PRESENTSTATS, //D3DCREATE_MANAGED &m_pp, &DisplayMode, &m_pD3DDevEx); ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2017, 16:00:36 |
|
||
|
Косяк точности у Now() ?
|
|||
|---|---|---|---|
|
#18+
Понял в чем дело. Я для превьюшки делаю EVR-рендерер (над которым контроля у меня по сути нет), видимо майкрософт там внутреннее у себя его создает без этого флага, в результате всё херится. А EVR Custom Allocator превьюшке назначить нельзя, ибо основное видео воспроизводится так же с этим визуализатором, а два одинаковых визуализатора низя. Можно ли как-то повлиять на EVR в плане этого FPU? В документации ничего не нашёл на эту тему :-\ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2017, 16:11:25 |
|
||
|
Косяк точности у Now() ?
|
|||
|---|---|---|---|
|
#18+
Проще выкинуть Now() и перейти на GetTickCount() и GetSystemTime() у которых выхлоп целый и потому флагами сопроцессора не изменяется. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2017, 16:36:25 |
|
||
|
Косяк точности у Now() ?
|
|||
|---|---|---|---|
|
#18+
А еще лучше перейти на TStopwatch. Оно от операционки не зависит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2017, 20:36:50 |
|
||
|
Косяк точности у Now() ?
|
|||
|---|---|---|---|
|
#18+
и GetSystemTime() у которых выхлоп целый Посмотрите пожалуйста внимательнее выделенные части в моем первом сообщении, под спойлером. Увидите что GetSystemTime так же косячит. и перейти на GetTickCount() А еще лучше перейти на TStopwatch Можно пример по превращению их во время на манер Now()? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2017, 01:19:53 |
|
||
|
Косяк точности у Now() ?
|
|||
|---|---|---|---|
|
#18+
TStopwatch.GetTimeStamp ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2017, 02:06:08 |
|
||
|
Косяк точности у Now() ?
|
|||
|---|---|---|---|
|
#18+
Ну или: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2017, 02:48:01 |
|
||
|
Косяк точности у Now() ?
|
|||
|---|---|---|---|
|
#18+
НоуНейм12345Увидите что GetSystemTime так же косячит. Я вижу, что ты зачем-то его преобразовывал в DateTime. ССЗБ. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2017, 11:06:03 |
|
||
|
|

start [/forum/topic.php?fid=58&fpage=140&tid=2042162]: |
0ms |
get settings: |
6ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
41ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 203ms |
| total: | 329ms |

| 0 / 0 |
