Op maandag 11 februari 2002 08:09 schreef jopiek het volgende:
Ik wil gewoon exact weten op welk moment iets gebeuren moet. De TMediaplayer die ik gebruik is volgens mij niet al te intelligent en doet ook nauwelijks aan buffering. En daarnaast is play -> pause -> play een lelijke oplossing.
Als ik echter wil meten per applicatie wat bijv. de vertraging is na versturen van een commando en het afspelen van de mp3 (wat volgens mij met name veroorzaakt wordt door het verschil in MHz's van de CPU en bussnelheid e.d.) moet ik toch wel een gemeenschappelijke timing hebben...
Tja je netwerklag is extreem laag op een LAN (ver onder de 1 ms).. als jij zegt dat gebruik maken van een Delphi component die latency niet verhoogd (ik heb geen ervaring met die dingen dus..) dan zal het aan netwerklag niet liggen, maar wel aan hoe lang het duurt om dat MP3tje op te starten.
Ik weet ook wel dat play-pause-play een lelijke oplossing is, maar je zult toch een manier moeten vinden waardoor je MP3tje echt klaar staat om te beginnen, dus overal zo weinig mogelijk buffering ed. (misschien maar niet van TMediaplayer gebruik maken dan als die dat niet kan..)
Als je ondanks alles toch geloofd dat het vooral aan ligt wat er voor .start gebeurt en niet erna:
- meet de roundtrip en bereken aan de hand hiervan uit waneer je welke client het commando om te starten moet geven (dit maakt je programmatje vooral ook geschikt voor gebruik over een inet connectie en niet alleen een LAN)
- zorg dat je clients geen onnodige parsing van data hoeven te doen, dus dat je in je protocol ervoor zorgt dat ze op een gegeven moment alleen nog maar hoeven te wachten tot ze data ontvangen en dan gelijk naar .start springen (dus niet eerst kijken wat voor data het is of wat dan ook.. zodra je het event krijgt gelijk .start

- zorg dat je TCP/IP verbindingen geen gebruik maken van Nagle's algorithm. In JAVA bv. doe je dit met setTcpNoDelay. Of een Delphi component dit kan weet ik niet. Ook iedere andere vorm van buffering moet je voorkomen!
Succes