Hohe Systemauslastung bei Verwendung der Bass.dll

  • VB.NET

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von Hatschi.

    Hohe Systemauslastung bei Verwendung der Bass.dll

    Moin,

    hantiere gerade zum ersten Mal mit der Bass.dll
    Soweit so gut, doch sobald ich etwas abspiele steigt die Auslastung imens, speziell bzw. nur die Prozessorauslastung.

    Reduziert sieht mein Code so aus:

    VB.NET-Quellcode

    1. stream = Bass.BASS_StreamCreateFile(path, 0, 0, BASSFlag.BASS_DEFAULT)
    2. Bass.BASS_ChannelGetInfo(stream, CI)
    3. Bass.BASS_ChannelPlay(stream, False)


    Dennoch bleibt die Auslastung hoch. Vielleicht gibt es jemanden der sich mit der Bass.dll besser auskennt und mir sagen kann woran es liegen könnte.
    (Verwendet wird jeweils die neuste Version von Bass.dll + Bass.Net.dll)
    Prozessorauslastung liegt bei 5-7% im Debugmodus, AIMP3 liegt im Vergleich bei 2-3%. Ich weiß nicht ob das normal ist bei reiner Audiowiedergabe fande ich das doch schon etwas hoch. Kann da jedoch schlecht eingreifen, da es wohl nicht an meinem Code sondern an der Bass liegt, Projekt wird als x86 kompiliert.
    Ich hab bei mir nochmal geguckt, wenn ich ne MP3 mit BASS abspiele, liegt die CPU-Auslastung meines Programms bei ca. 2-3%. foobars Auslastung (als Vergleich) springt beim Starten der gleichen Datei einmal kurz auf ~4%, geht dann konstant auf 0-1% runter.
    Ich vermute, dass es an der zusätzlichen Ebene von BASS.NET liegt, die den ganzen nativen Kram von BASS verarbeitet.
    Naja mich stört nur das meine Form dermaßen "laggt" und das ausschließlich während der Wiedergabe. Und da DX in Verwendung mit 64bit System große Probleme hat und MCI stark veraltet ist, dachte ich, ich nehme Bass. Eigentlich schade das man in Sachen Video & Musik so begrenzt ist, was VB angeht. Viele Alternativen gibt es da ja nicht, habe mich noch Irrklang etc angesehen aber die sind auch nicht das wahre.
    Die Form laggt auch? Das hab ich noch nie erlebt, lol.
    Und DirectX würd ich nicht nehmen, das unterstützt nur wenige Formate und selbst dann ists noch Russisches Roulette. Ab und zu crasht DX nämlich, und wirft völlig sinnlose Exceptions.
    Ja sie laggt und ich habe so etwas zugebenermaßen auch noch nie erlebt. Schaut wie "Mikroruckler" aus oder ich habe über den Durst getrunken :thumbsup:
    Nein im Ernst, wenn ich sie verschiebe (Sprich gedrückt halten und wie ein Berserker hin und herfahren) dann läuft es nicht "flüssig", sondern eben... als ob es Mikroruckler gäbe.
    Gut möglich das das auch an den Controls liegt, verwende den Glasseffekt + Picturebox. Könnte zwar Testweise eins nach dem anderen abklemmen und schauen was genau mir hier auf den Keks geht, aber das ist mir zu mühseelig.

    Ich schaue mir nachher noch einmal die Werte inner VM an, mein System ist eigentlich relativ leistungsstark, bin gespannt wie die Auslastung bei weniger Power ist, sonst werf ich den Wrapper über Board.
    Ich denke kaum, dass es an der bass liegt. Ich würde mir da schon eher deinen Code anschauen, da der Wrapper eigentlich sehr sauber programmiert ist.
    Btw. ist es nicht so, dass bass auch DirectSound verwendet ^^ und dies einfach zur ausgabe + effekte usw. verwendet. Und zu den Formaten die werden meines Wissens bassintern "einfach" in pcm decodiert (glaub sogar über MediaFoundation - soweit os unterstützt)


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    sage nicht, dass es an dem code liegt. Vll. hast du sonst etwas unsauber. Das ist ja nicht dein ganzer code. Alternativ würde ich versuchen eine andere art von Callback zu verwenden (falls man das in bass einstellen kann).


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    Das blöde ist das es genau an diesen 3 Zeilen liegt und sobald ich per Bass dem Stream freigebe ist die Auslastung wieder auf 0%.
    Will nicht leugnen das ich teilweise eine sehr umständliche Struktur habe, aber ich vermute das Samus eher recht hat.

    Was meinst du mit einer anderen Art Callback?
    naja, da du das mit dem Fenster angesprochen hast habe ich mich an etwas von mir errinnert (hat nix mit bass zu tun). Dort habe ich die waveOut WinAPI verwendet und wenn ich auf den Rahmen der Form gedrückt habe hat es einen Bruchteil einer Sekunde gestoppt. Ich habe dann als Lösung ein Callback auf ein neu erstelltes Fensterhandle verwendet.
    Weiß nicht was bassintern abläuft oder wieso es aufeinmal bei dir probleme geben sollte. Kam mir nur in den Sinn als ich Fenster gelesen habe.

    Hast du mal ein komplett leeres Projekt gemacht und es dort probiert?
    Sollte eigentlich keine Probleme geben.


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.