![]() |
AW: MJPEG Stream anzeigen
Delphi-Quellcode:
Was kommen denn da so wie Zeiten bei rum?
uses
System.Diagnostics ... var LStopWatch : TStopwatch; begin LStopWatch := System.Diagnostics.TStopwatch.StartNew; jpeg.LoadfromStream(jpegstream); image1.Picture.Bitmap.assign(JPEG) // oder image1.canvas.draw(0,0,jpeg); LStopWatch.Stop; Caption := IntToStr(LStopWatch.ElapsedMilliseconds); |
AW: MJPEG Stream anzeigen
Leider lässt sich die Laufzeit so einfach nicht messen, dafür geht es zu schnell das Ergebnis ist immer Null. Wenn man wirklich nur einen Durchlauf messen will, müsste man wohl den Assembler bemühen.
Wenn man es in einer for-Schleife mehrfach ausführt, dann steigt die Ausführungszeit linear mit der maximalen Anzahl der Durchläufe unabhängig von der Art es zu zeichnen. Das Problem scheint wirklich, dass das eigentliche Dekodieren der Jpegs bei TJPEG CPU basiert arbeitet, was bei einer so hohen Wiederholrate nicht mehr klappt. Leider habe ich auch noch keine vernünftigen Wrapper für LibVCL gefunden, bei der man ohne weiteres Streams laden kann. Kennt vielleicht jemand eine Möglichkeit mit DSPack ein Jpeg aus einem Stream zu laden. |
AW: MJPEG Stream anzeigen
Zitat:
Bitte kontrolliere das nochmal. Ggf. schreibe per OutputDebugString ins Event Log, anstatt per Formular-Eigenschaften die Zeit auszugeben. Da müssen mindestens 1 bis 15 ms bei rum kommen. Denn wenn die verstrichene Zeit um die 0 ms betragen würde (also sich im Bereich von Nanosekunden bewegt), dann hättest du auch keine Probleme bei einer Bildrate von 30 FPS -> 33 ms von Bild zu Bild. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:24 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-2025 by Thomas Breitkreuz