![]() |
Re: Preview: Audorra - Opensource Audiobibliothek (26.04.09)
Zitat:
Der MemLeak entsteht in der Unit "TAuDecoderThread". Um genau zu sein: In der Execute-Prozedur der TAuDecoderThread-Klasse. Dort gibst du den neu allozierten Speicher nur bei einer Exception frei. Hier die korrigierte Execute-Methode:
Delphi-Quellcode:
procedure TAuDecoderThread.Execute;
var pckt: TAuPacket; FMem: PByte; smpls, bfsize: Integer; begin FMem := nil; FLastFrame := false; try while not Terminated do begin //Check whether the target buffer is filled if (FBuffer.Filled < FBufSize) then begin //Tell the decoder to go on decoding case FDecoder.Decode of audsHasFrame: begin //Get the packet from the decoder FDecoder.GetPacket(pckt); //Recode the buffer to float values smpls := pckt.BufferSize div Integer(AuBytesPerSample(FDecoder.Info)); bfsize := Integer(AuBytesPerSample(FDecoder.Info.Parameters)) * smpls; ReallocMem(FMem, bfsize); AuPCMIntToFloat(FDecoder.Info, pckt.Buffer, FMem, smpls); //Write the packet content into the buffer FCritSect.Enter; try FBuffer.Write(FMem, bfsize, pckt.Timecode); finally FCritSect.Leave; end; end; //Terminate the thread if the decoder is at the end audsEnd: FLastFrame := true; end; if FLastFrame then Sleep(1); end else Sleep(1); end; finally // In einen finally-Block umgewandelt ;) if FMem <> nil then FreeMem(FMem); end; end; |
Re: Preview: Audorra - Opensource Audiobibliothek (26.04.09)
Tatsächlich - danke, das war der Fehler, ich vermutete die ganze Zeit, das sei ein Bug in Acinerella. Und ich hatte keine Lust meinen C-Code mit gdb durch zu debuggen. :thumb:
Eine neue Version (1.0) wird es vermutlich während den Sommerferien geben. |
Re: Preview: Audorra - Opensource Audiobibliothek (26.04.09)
Also ich habe gerade Simple.exe unter Windows 7 RC x64 getestet.
Und wenn ich den Lautstärkeschieberegler bewege, verbreitert sich das entsprechende "Panel" oder was das da Und irgendwann bekomme ich dann: Zitat:
xZise |
Re: Preview: Audorra - Opensource Audiobibliothek (26.04.09)
Ja, das Problem habe ich unter Windows 7 auch - scheint ein Bug in der VCL zu sein.
|
Re: Preview: Audorra - Opensource Audiobibliothek (26.04.09)
Hallo.
Als kleine Aktualisierung (ich habe trotz Sommerferien leider nicht allzuviel Zeit) eine kleine Übersicht über die neusten Entwicklungen: Ich habe nun ein dynamisches Pluginsystem implementiert, welches ich in dieser Weise auch in Andorra einbinden werden. Dieses Pluginsystem erlaubt es, Module sowohl statisch (durch einfaches aufnehmen in die Uses-Klausel) als auch dynamish (aus einer DLL) zu linken - der Anwendung ist das egal. Es existiert ein so genannter Registrationsserver (AcRegSrv, das Ac steht für "Andorra Commons"), der alle Module verwaltet:
Code:
Von einem Modul werden Klassenname, Klassenhierarchie, Quellenidentifikationsnummer (also aus welchem Programmmodul (0 = lokal, >0 = aus einem anderen Plugin) das Plugin ist) und ein Pointer zum Konstruktor der Klasse gespeichert.
AcRegSrv DbgDump
---------------- Name | IdentStr | SrcID | @Create | | | TAcStoreNode | TAcPersistent.TAcStoreNode | 0 | 4217572 TAcIntegerNode | TAcPersistent.TAcStoreNode.TAcIntegerNode | 0 | 4217608 TAcFloatNode | TAcPersistent.TAcStoreNode.TAcFloatNode | 0 | 4217644 TAcStringNode | TAcPersistent.TAcStoreNode.TAcStringNode | 0 | 4217680 TAcBoolNode | TAcPersistent.TAcStoreNode.TAcBoolNode | 0 | 4217716 TAcStreamNode | TAcPersistent.TAcStoreNode.TAcStreamNode | 0 | 4217752 TAuOpenALDriver | TAcPersistent.TAuDriver.TAuOpenALDriver | 1 | 14695264 TAuWaveOutDriver | TAcPersistent.TAuDriver.TAuWaveOutDriver | 1 | 14696360 TAuWAVDecoder | TAcPersistent.TAuDecoder.TAuWAVDecoder | 1 | 14699972 TAuAcinerellaDecoder | TAcPersistent.TAuDecoder.TAuAcinerellaDecoder | 1 | 14700932 Classes registered: 10 Current source id: 1 Eine DLL mit Zusatzmodulen ist sehr einfach zu erstellen. Die im oben gezeigten Beispiel gezeigte DLL sieht folgendermaßen aus:
Delphi-Quellcode:
Möchte man die in der Uses-Klausel aufgeführten Module statisch verwenden, so sind sie einfach im Hauptprogramm einzubinden.
library AudorraFoo;
uses AcPersistent, AuOpenAL, AuWaveOut32Driver, AuWav, AuAcinerella; exports AcDLLInit, AcDLLFinalize, AcDLLExportClasses; begin end. Ein Plugin kann ganz einfach geladen werden:
Delphi-Quellcode:
Ich freue mich über eure Kommentare,
var
plg: TAcPluginDLL; begin plg := TAcPluginDLL.Create; plg.LoadPlugin('AudorraFoo.dll'); plg.RegisterClasses(TAcPersistent); [...] plg.Free; end; Andreas |
Re: Preview: Audorra - Opensource Audiobibliothek (26.04.09)
Zitat:
|
Re: Preview: Audorra - Opensource Audiobibliothek (26.04.09)
Wie gesagt - ein Bug in der VCL. Ich habe in meiner aktuellen Version schon die Fehlermeldung entschärft - aber dafür, dass das Panel kleiner wird kann ich nichts.
|
Re: Preview: Audorra Digital Audio Library (26.04.09)
Ich habe mal eine neue Version hoch geladen.
Die wichtigesten Änderungen:[*] Verbesserte Visualisierungen [+] FFT Analyse [+] Support von HTTP-Streams (Achtung: Das Öffnen dieser kann seine Zeit (bis zu 30 Sekunden) dauern!), basiert auf einer modifizierten Version von Synapse (im lib Ordner)[*] Jede Menge Bugs behoben[*] Suchen in Acinerella-Strömen eingefügt [+] Vollständige Unterstützung des Andorra Common Plugin Systems: Jedes Protokollformat/Dekoder kann einfach in eine DLL ausgelagert werden.[*] TAuStaticSoundList basiert nun auf dem Andorra Common Store.[*] Probleme mit WaveOut unter Windows 7 behoben Bekannte Bugs: - Lange Ladezeiten von HTTP-Streams (besonders bei MP3) - Hohe CPU-Auslastung der Visualisierungen in der Delphi Simple Demo (liegt nur an den Zeichenoperationen, nicht direkt an Audorra) - Nicht unter Linux lauffähig (mir fehlt eine GetCurrentThreadID o.ä Funktion) Das Ganze ist jedoch immer noch nicht als "stabil" oder "fertig" zu bezeichnen, sondern immer noch im Alpha-Status! Die aktualisierte Version gibt es im ersten Beitrag. Viel Spaß, ich warte gespannt auf eure Kommentare, Andreas |
Re: Preview: Audorra Digital Audio Library (23.08.09)
Hallo,
bei mir streikt Audorra bei einigen Liedern o.O Zur Zeit an urheberrechtlichen Kram getestet. Ich teste gleich mal bei OS Musik ^^ dann kann ich wenigstens genauere Aussagen machen! Übrigens: Zitat:
Wenn du nichts dagegen hast, dann veröffentliche ich meine "modifizierte" Version ;) Du kannst dir das ja angucken und Änderungen (nicht) übernehmen :mrgreen: MfG xZise |
Re: Preview: Audorra Digital Audio Library (23.08.09)
Hi,
der Memoryleak ist so gewollt :mrgreen: . Die Anwendung soll sowieso nur eine kleine Demo sein - wenn du damit einen gescheiten Audiospieler bauen willst - nur zu! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:08 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