Einzelnen Beitrag anzeigen

Peter666

Registriert seit: 11. Aug 2007
357 Beiträge
 
#6

AW: Oszilloskop und Spektrum

  Alt 17. Okt 2021, 20:50
Danke,

ich habe jetzt einfach folgendes gemacht. Das Tonsignal mit den 6 Kanälen wandle ich in ein Monosignal mit 16 Bit (AV_SAMPLE_FMT_S16) um und werte das dann aus. Ffmpeg ist recht performant was die Umwandlung angeht und soweit ich das erkenne zeigt mir das Oszilloskop auch die passenden Daten an.

Was ich nicht so ganz verstehe ist, warum ich die Schrittweite durch 4 teilen muss. Das Signal ist ja nur ein Smallint für jeden Wert.

Delphi-Quellcode:
procedure TForm1.ProcessAudio(Buf: PByte; Size: integer);
var
  step, Y, X, V: integer;
  ptr: PSmallInt;

  function FixRange(const Y: integer): integer;
  begin
    Result := Y * 127 div FBitmap.Height;
  end;

begin
  FBitmap.FillTransparent;
  Y := 0;
  X := 0;

  Step := (Size div 4) div FBitmap.Width;
  if Step<1 then Step := 1;
  ptr := PSmallInt(Buf);

  for x := 0 to FBitmap.Width-1 do
  begin
    V := (32767 - ptr^) * FBitmap.Height div 65536;
    inc(ptr, Step);
    if X = 0 then Y := V;
    repeat
      if Y < V then
        Inc(Y)
      else if Y > V then
        Dec(Y);
      FBitmap.SetPixel(X, Y,
        FSpectrumPalette[FixRange(abs(Y - FBitmap.Height div 2) * 2 + 1)]);
    until Y = V;
  end;

  Image1.Picture.Assign(FBitmap);
end;
  Mit Zitat antworten Zitat