Einzelnen Beitrag anzeigen

Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#44

AW: Optimierung von Pixel

  Alt 8. Apr 2016, 16:41
Zitat:
aber das Buffer Array ist nur 160 Bytes groß.
Ja die Höhe des Bitmap -1
Genau das verursacht einen schönen Buffer Overflow, weil BASS_ChannelGetData mit BASS_DATA_FFT512 trotzdem 256 Floats einliest, der Buffer aber nur Platz für 159 Stück hat.
Ja nur wie will man das händeln man könnte BASS_DATA_FFT256 verwenden nur dann wären es zu wenig Floats.
Oder aber das Bitmap in der höhe entsprechend anpassen.
Oder den Buffer zwar so groß machen wie ihn die Bass.dll befüllt, aber weniger daraus lesen. Du hast dann zwar "zu viele Daten", aber die Bass.dll schreibt dir nicht in undefiniertem Speicher herum. Definitv die bessere Wahl. (Und verlieren tust du auch nichts, da du ja auch mit dem kleineren Buffer letztlich Daten einfach weg lässt. Nur mit dem zusätzlichen Effekt, dass du nicht sicher sein kannst, dass die weg gelassenen Daten, die die Bass.dll ja trotzdem schreibt, nicht irgendwelche anderen Dinge zersägt. Bisher hattest du im Grunde nur Glück, dass das gut ging.)

Wenn du alle Daten der FFT in 160 Pixeln Höhe anzeigen willst, musst du entweder die Daten oder das Bitmap skalieren. Anders gehts dann nicht.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat