Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#1

BASS_SAMPLE_FLOAT kein Beat

  Alt 11. Aug 2011, 13:16
Wie muss ich den Stream berechnen damit ich wieder den richtigen ausschlag bei der Visualisierung erhalte?

Damit ich nicht meine API abermals ändern muss habe ich mir folgendes gedacht.
Ich hole mir über ChanInfo die Informationen vom Stream ein

Delphi-Quellcode:
var
ChanInfo: BASS_CHANNELINFO;

begin
      FillChar(ChanInfo, SizeOf(BASS_CHANNELINFO), 0);
      BASS_ChannelGetInfo(FChannelID, ChanInfo);
und vergleiche anschließend ob BASS_SAMPLE_FLOAT verwendet wird.

Delphi-Quellcode:
      if ((ChanInfo.flags and BASS_SAMPLE_FLOAT) = BASS_SAMPLE_FLOAT) then
      begin

So weit so gut.
Wie berechne ich nun den Stream damit er wieder korrekt Visualisiert wird.


Delphi-Quellcode:
        if (FChannels = 1) or (FChannels > 2) then
        begin
          BASS_ChannelGetData(FChannelId, @SpectrumData, BASS_DATA_FFT2048);

          for i := 1 to 576 do
          begin
            p2^ := Trunc(SpectrumData[i] * FVisScale);
            Inc(p2);
          end;

          for i := 1 to 576 do
          begin
            p2^ := Trunc(SpectrumData[i] * FVisScale);
            Inc(p2);
          end;
        end
Die frage wäre also zurück in einen 16Bit Stream konvertieren? (Wie?)
Dann muss ich meine Function nicht neu schreiben.

oder über einen Temporären Buffer schicken.
Mir fällt aber nicht ein wie ich das berechnen kann.

schön wenn mir da jemand helfen könnte.

gruss
  Mit Zitat antworten Zitat