AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Preview: Audorra Digital Audio Library (23.08.09)
Thema durchsuchen
Ansicht
Themen-Optionen

Preview: Audorra Digital Audio Library (23.08.09)

Ein Thema von igel457 · begonnen am 20. Mär 2009 · letzter Beitrag vom 7. Feb 2010
Antwort Antwort
Seite 5 von 6   « Erste     345 6      
Benutzerbild von mleyen
mleyen

Registriert seit: 10. Aug 2007
609 Beiträge
 
FreePascal / Lazarus
 
#1

Re: Preview: Audorra - Opensource Audiobibliothek (26.04.09)

  Alt 19. Jun 2009, 22:19
Zitat von igel457:
Bekannte "Bugs":
- Memoryleaks in Acinerella (werden beim Beenden angezeigt)
Ich hab mich gerade mal ein bissl im Code umgeschaut.
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;
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Preview: Audorra - Opensource Audiobibliothek (26.04.09)

  Alt 19. Jun 2009, 22:24
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.

Eine neue Version (1.0) wird es vermutlich während den Sommerferien geben.
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Preview: Audorra - Opensource Audiobibliothek (26.04.09)

  Alt 20. Jun 2009, 11:46
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:
---------------------------
Simple
---------------------------
Ungültige Gleitkommaoperation.
---------------------------
OK
---------------------------
MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#4

Re: Preview: Audorra - Opensource Audiobibliothek (26.04.09)

  Alt 20. Jun 2009, 16:06
Ja, das Problem habe ich unter Windows 7 auch - scheint ein Bug in der VCL zu sein.
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#5

Re: Preview: Audorra - Opensource Audiobibliothek (26.04.09)

  Alt 12. Jul 2009, 11:35
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:
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
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.

Eine DLL mit Zusatzmodulen ist sehr einfach zu erstellen. Die im oben gezeigten Beispiel gezeigte DLL sieht folgendermaßen aus:
Delphi-Quellcode:
library AudorraFoo;

uses
  AcPersistent,
  AuOpenAL, AuWaveOut32Driver, AuWav, AuAcinerella;

exports
  AcDLLInit,
  AcDLLFinalize,
  AcDLLExportClasses;

begin
end.
Möchte man die in der Uses-Klausel aufgeführten Module statisch verwenden, so sind sie einfach im Hauptprogramm einzubinden.

Ein Plugin kann ganz einfach geladen werden:
Delphi-Quellcode:
var
  plg: TAcPluginDLL;
begin
  plg := TAcPluginDLL.Create;
  plg.LoadPlugin('AudorraFoo.dll');
  plg.RegisterClasses(TAcPersistent);

  [...]

  plg.Free;
end;
Ich freue mich über eure Kommentare,
Andreas
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
Ruio

Registriert seit: 6. Nov 2008
89 Beiträge
 
Delphi 2005 Personal
 
#6

Re: Preview: Audorra - Opensource Audiobibliothek (26.04.09)

  Alt 12. Jul 2009, 13:41
Zitat von xZise:
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:
---------------------------
Simple
---------------------------
Ungültige Gleitkommaoperation.
---------------------------
OK
---------------------------
MfG
xZise
Das passiert mir auch unter Windows Vista. Das Programm hört ja gar nicht auf den Fehler-Ton abzuspielen, obwohl ichs mitm Taskmanager abgeschossen hab.
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#7

Re: Preview: Audorra - Opensource Audiobibliothek (26.04.09)

  Alt 12. Jul 2009, 13:46
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.
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#8

Re: Preview: Audorra Digital Audio Library (26.04.09)

  Alt 23. Aug 2009, 15:01
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
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#9

Re: Preview: Audorra Digital Audio Library (23.08.09)

  Alt 23. Aug 2009, 17:26
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:
---------------------------
Unexpected Memory Leak
---------------------------
An unexpected memory leak has occurred. The unexpected small block leaks are:



13 - 20 bytes: TChangeLink x 20

21 - 28 bytes: String x 20

157 - 172 bytes: TMenuItem x 20


---------------------------
OK
---------------------------
Noch was anderes: Und zwar ändert sich beim Label die Schrift erst, sobald man den Schieberegler bewegt. Außerdem ist es total unhandlich die ProgressBar zu "bewegen" Besonders weil unter Vista (und 7) der Balken nicht sofort auf die Position kommt, sofern Pos > AltePos. Nimm doch stattdessen eine Trackbar. Außerdem bietest du bei Open zwar "File" und "URL" an, aber warum dann unten "Directory" verstecken?

Wenn du nichts dagegen hast, dann veröffentliche ich meine "modifizierte" Version Du kannst dir das ja angucken und Änderungen (nicht) übernehmen

MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#10

Re: Preview: Audorra Digital Audio Library (23.08.09)

  Alt 23. Aug 2009, 19:29
Hi,

der Memoryleak ist so gewollt . Die Anwendung soll sowieso nur eine kleine Demo sein - wenn du damit einen gescheiten Audiospieler bauen willst - nur zu!
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 6   « Erste     345 6      


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 23:03 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