AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Timing zu langsam?

Ein Thema von EWeiss · begonnen am 9. Jun 2012 · letzter Beitrag vom 10. Jun 2012
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

Timing zu langsam?

  Alt 9. Jun 2012, 18:16
Bin nen opengl lyricsplayer am schreiben..soweit funktioniert alles
Allerdings habe ich ein problem mit dem timing.

Die erste Linie funktioniert einwandfrei danach läßt die genauigkeit nach.
Ich verwende IdleLoop und aus dieser heraus spreche ich die Render Routine an.

Dort wird dann mit dieser zeile geprüft

Delphi-Quellcode:
timeBeforeNext := MidiLyrics.getLyricTime(CurrentLyric) - currentTime;
  if (timeBeforeNext <= 0) then
    begin
      inc(currentLyric);
getLyricTime gibt die nächste startposition zurück vom nächsten char das gerendert wird.
currenttime hole ich mir über

currentTime := TimeGetTime() - loadDelay - Settings.delay;

wobei settings.delay normalerweise immer 0 ist es sei denn es liegen schwankungen vor
betreffend einer ungenauigkeit des Lyrics innerhalb des MidiFiles (Konfigurierbar)

Um was es mir jetzt geht ist es möglich das IdleLoop das problem bei mir verursacht seitens des Timing?
Mich wundert es nur das die erste Linie funktioniert
Hab es auch schon mit GetTickCount versucht da ist aber Zeitlich gesehen keine große differenz

gruss
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#2

AW: Timing zu langsam?

  Alt 9. Jun 2012, 18:47
Ich dachte immer, der normale Zeitgeber hat eine Auflösung von 18ms. Ohne absoluten Timer wirst Du die Ungenauigkeiten addieren.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: Timing zu langsam?

  Alt 9. Jun 2012, 18:59
Ich dachte immer, der normale Zeitgeber hat eine Auflösung von 18ms. Ohne absoluten Timer wirst Du die Ungenauigkeiten addieren.
na ja muss mal schaun
es kann nur an der berechnung von currentTime liegen
denn die StartPosition ist immer gleich.

die ich als LongInt deklariert habe.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.316 Beiträge
 
Delphi 12 Athens
 
#4

AW: Timing zu langsam?

  Alt 9. Jun 2012, 21:13
Zitat:
The resolution of the GetTickCount function is limited to the resolution of the system timer, which is typically in the range of 10 milliseconds to 16 milliseconds. The resolution of the GetTickCount function is not affected by adjustments made by the GetSystemTimeAdjustment function.
Außerdem ist Windows kein RealTime-/Echtzeitsystem ... da wird und kann es einfach nicht ganz genau sein (ohne gewisse Voraussetzungen) und man muß sollte Ungenauigkeiten einberechnen.
Auch muß man beachten daß Programme nie "durchlaufen", sondern ständig Pausen machen, während andere Threads/Programme verarbeitet werden, oder hast du genauso viele Kerne wie Threads?
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 9. Jun 2012 um 21:17 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: Timing zu langsam?

  Alt 9. Jun 2012, 21:57
Fakt ist aber das es auch bei anderen Programmen funktioniert
Kann mir nicht vorstellen das bsp. C++ schneller sein soll was GetTickCount(Delphi), Clock(C++) angeht
Und dort gibt es programme die weitaus mehr vom Timer abverlangen als mein simpler LyricPlayer.
Also irgendwo muss ich die ZEit syncronisieren können.

Meine vermutung ist das vielleicht!!! bei idleloop da was ausgebremst wird.
an GetTickCount denke ich liegt es nicht.

zumal ich es ja auch nicht verwende sondern TimeGetTime()

gruss

Geändert von EWeiss ( 9. Jun 2012 um 22:02 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.316 Beiträge
 
Delphi 12 Athens
 
#6

AW: Timing zu langsam?

  Alt 9. Jun 2012, 22:20
20-50 Millisekunden Verzögerung sollte man schon einplanen.

Nja, erstmal braucht man einen festen Bezugspunkt, gegen den man rechnen sollte, damit sich nichts aufsummieren kann.

Falls man weniger als 20 Millisekunden für die Auflosung benötigt, dann benötgt man auch einen passenden Timer.
GetTickCount => If you need a higher resolution timer, use a multimedia timer or a high-resolution timer.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz