Entwickler-Ecke
Multimedia / Grafik - Arbeitspeicherproblem mit bass.dll
powerpuetz - Do 09.06.05 21:22
Titel: Arbeitspeicherproblem mit bass.dll
Hallo.
Ich habe folgendes Problem.
Wenn ich aus einer Playlist ein Lied lade, wird die Speichernutzung meines Programmes immer mehr. Kann man das irgendwie verhindern?? Bzw. kann man den Speicher den der vorherige Song belegt hat freigeben, bevor ein neuer geladen wird?
Bei Unklarheit was ich möchte, bitte einfach nachfragen....
Gruß Tobias
Wishmaster - Do 09.06.05 23:38
Hi
Wie viel Speicher frist er den?
Bei mir ist das so das wen ich ~ 80 Lieder gleichzeitig Lade um die Spilldauer zu berechnen
Frist das Prog. ~14,828 k nach 2~5 Minuten geht der Speicher runter auf ~3,496 k und bleibt dabei!
Versuche mal bevor du en Lied lädst (BASS_StreamFree(Channel); BASS_MusicFree(Channel); reinzusetzen. Wen dir das nicht weiter hilft dann kannst feileicht en wenig Code Zeigen.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| Procedure TAudioEngine.LoadFile(FileName : String); var stFlags, msFlags : DWORD; begin
BASS_StreamFree(Channel); BASS_MusicFree(Channel);
Channel:= (BASS_StreamCreateFile(FALSE, PChar(Cur_FileName), 0, 0, stFlags)); if (Channel = 0) then Channel:= (BASS_CD_StreamCreateFile(PChar(Cur_FileName), stFlags));
if (Channel = 0) then begin Error('Selected file couldnt be loaded!'); End
end; |
Moderiert von
raziel: Code- durch Delphi-Tags ersetzt.
powerpuetz - Fr 10.06.05 15:04
Hi.
Hab das mal ausprobiert. Bring aber nichts. Jedesmal wenn ein neues Lied anspielt wird ,wird die Speicherauslastung größer.
Aber mal ne Frage zum Code posten. Muss ich da irgendwas besonderes machen, oder einfach nur in Delphi makieren und dann hier einfügen?
Gruß Tobias
Wishmaster - Fr 10.06.05 22:34
Titel: bass 2.1
Hi
Am besten währe es wen du dein Project mit winrar verpackst (ohne exe und dll) und es hier zum Download bereitstellst! Natürlich wen du keine geheimnise hast. Oder nur die Datei(pas)
Mit der du auf Bass zugreifst.
Benutzt du nur Bass.dll oder auch Plugs wie bass_acc.dll, bass_ape.dll,…?
Ich habe mal mein test Programm mitgeschickt kannst mal testen ob es bei dir auch soviel Speicher frist.
PS. Es ist noch nicht alles Funktionsbereit.
powerpuetz - Sa 11.06.05 12:22
Hi. Also bei deinem Progg istdas nicht so. Hab jetzt mal in den Anhang ne rar Datei. Darin befindet sich der Code, die *dll's und ne exe. Einfach mal testen, den Code anschauen und mir dann sagen das der Code extrem verbesserungs bedüftig ist. *gg*
Würde mich freuen wenn wir das Problem mit dem Speicher lösen können.
Was evtl. noch zu sagen wäre. Ihr werdet merken das das ganze auf dem samplvis Beispiel aufbaut. Ausserdem bin ich noch ein ganz kleiner Programmierer, der gerne vorgegebenen Code übernimmt.
Gruß Tobias
huhn - Sa 11.06.05 13:28
Hi :D !
hab mir mal dein prog angeguckt, was mir als erstes aufgefallen ist, ist das du 3 Timer hast :shock: und dann benützt du noch mod und ähnliches was normal en bissle langsam macht. Naja egal ich finde du bräuchtest höchstens 2 timer(wenn überhaupt, es gibt ja noch andere möglichkeiten), einen zum gucken wo des lied und etc und den zweiten für die visu. sleep(100); <-- find ich au net so gut!
auf den ersten blick bin ich leider auch ratlos wasrum dein programm, bei mir jedenfalls, 9mb arbeitspeicher frießt.
ich hab vor längerer zeit auch mal einen player gemacht,als ich noch grün hinter den ohren war*g*.
kannst ihn dir ja mal angucken(meiner nimmt 4-5mb in anspruch hat auch visu, tray 2 timer playlist drag'ndrop etc)
http://huhnau.hu.funpic.de/Uploads/X-PlayerSetup.exe
mfg huhn
Wishmaster - Sa 11.06.05 19:40
Hi
Also
1. dein Code ist absolut *mist*e! (unübersichtlich und voller feiler)
Zu deinem eigentlichen Problem, du musstest tatsächlich nur (BASS_StreamFree) einsetzen und das bevor du en Channel Kreierst (BASS_StreamCreateFile) davon hast du ja reichlich in deinem Code!
Es reich wen du nur einmal en Channel Kreierst (BASS_StreamCreateFile) und das nicht innerhalb eines Timers.
Tipp.
Schreib dir ne externe Unit in die du alle Funktionen rein schreibst mit den du auf Bass zugreifst, ne extra Unit für Playlist und Spectrum,….! Mach es übersichtlicher.
Wen du nur en EQ in dein Programm einbauen willst brauchst du keine bass_fx.dll
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!