Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   pf8Bit seltsames aussehen der Palette (https://www.delphipraxis.net/188819-pf8bit-seltsames-aussehen-der-palette.html)

EWeiss 10. Apr 2016 15:56


pf8Bit seltsames aussehen der Palette
 
Ich versuche verschiedene Paletten für das Spectrogram zu definieren.

Dazu habe ich die weite verändert.
Die Initialisierung des Bitmap sieht wie folgt aus.

Delphi-Quellcode:
procedure TForm1.InitBitmap;
begin
  PalOrder := PAL_HOT;
  PalNeg := False;
  PalRGB := PAL_RGB;

  BuffBMP := TBitmap.Create;
  BuffBMP.Width := (StreamLength div 512 div 2) div Info.chans;
  BuffBMP.Height := 160;
  BuffBMP.HandleType := bmDIB;
  BuffBMP.PixelFormat := pf8Bit;

  ChangePalette(PalOrder, BuffBMP.Width, BuffBMP.Height, PaletteFile);

  BuffBMP.Canvas.Brush.Color := PaletteIndex(0);
  BuffBMP.Canvas.FillRect(BuffBMP.Canvas.ClipRect);

end;
Das habe ich von
Delphi-Quellcode:
(StreamLength div 512 div 4) //pf24Bit


nach

Delphi-Quellcode:
(StreamLength div 512 div 2) //pf8Bit



geändert
Mein Problem die Linien sind irgendwie gestretcht (bzw.. scheint da mit Scanline was nicht zu stimmen.)
Zudem wird das Spectrogram nun revers gezeichnet.
Es fängt von hinten an zu zeichnen.

was kann ich da machen?
Habe mal die unterschiede als Anhang addiert.

gruss

Zacherl 10. Apr 2016 16:22

AW: pf8Bit selsames aussehen der Palette
 
Zitat:

Zitat von EWeiss (Beitrag 1335177)
Delphi-Quellcode:
(StreamLength div 512 div 4) //pf24Bit

Wie genau kommt dieser Wert denn zustande? Das hatte ich mich schon im anderen Thread gefragt, weil ich darin kein logisches Muster erkennen konnte.

24-Bit sind ja bekanntlich 3 Bytes und nicht 4. Ebenfalls ist 8-Bit ja nur 1 Byte. Und unabhängig davon macht das Verhältnis von 24-Bit = 4 und 8-Bit = 2 keinen Sinn für mich. Woher die 512 kommt, sehe ich grade auch nicht, aber das mag daran liegen, dass ich mich mit der BASS Library und Audio-Formaten generell nicht wirklich auskenne.

EWeiss 10. Apr 2016 16:39

AW: pf8Bit selsames aussehen der Palette
 
Zitat:

Wie genau kommt dieser Wert denn zustande? Das hatte ich mich schon im anderen Thread gefragt, weil ich darin kein logisches Muster erkennen konnte.
Ist eine Standard variable vom (Bass Forum) muss mich da jetzt auch nochmal schlau machen.

Zitat:

Und unabhängig davon macht das Verhältnis von 24-Bit = 4 und 8-Bit = 2 keinen Sinn für mich.
So gesehen muss ich dir recht geben..

gruss

Zacherl 10. Apr 2016 16:44

AW: pf8Bit selsames aussehen der Palette
 
Zitat:

Zitat von EWeiss (Beitrag 1335182)
Zitat:

Wie genau kommt dieser Wert denn zustande? Das hatte ich mich schon im anderen Thread gefragt, weil ich darin kein logisches Muster erkennen konnte.
Ist eine Standard variable vom (Bass Forum) muss mich da jetzt auch nochmal schlau machen.

Kannst ja mal verlinken, falls du den Thread wiederfindest. Würde ich mir rein interessehalber auch gerne mal durchlesen.

EWeiss 10. Apr 2016 16:51

AW: pf8Bit selsames aussehen der Palette
 
Zitat:

Zitat von Zacherl (Beitrag 1335183)
Zitat:

Zitat von EWeiss (Beitrag 1335182)
Zitat:

Wie genau kommt dieser Wert denn zustande? Das hatte ich mich schon im anderen Thread gefragt, weil ich darin kein logisches Muster erkennen konnte.
Ist eine Standard variable vom (Bass Forum) muss mich da jetzt auch nochmal schlau machen.

Kannst ja mal verlinken, falls du den Thread wiederfindest. Würde ich mir rein interessehalber auch gerne mal durchlesen.

In irgend welchen Code Samples..
Das Problem dabei ist das meistens dann wenn es darauf ankommt keine Kommentare addiert werden.
Bei nicht würdigen Funktionen wird kommentiert und bei würdigen weniger. ;)

Aber ich kenne jemand der sich 100% mit der Bass Lib auskennt hab den mal angeschrieben.

gruss

EWeiss 10. Apr 2016 18:19

AW: pf8Bit selsames aussehen der Palette
 
Also 4 steht für die sample länge FLOAT.
Delphi Single = 4 Byte
Ein Sample hat immer eine länge von 4 Bytes wenn das Flag BASS_SAMPLE_FLOAT verwendet wird.
Anschließend noch mal durch 2 also für jeden Kanal 512 enthält 256 samples für den rechten und 256 samples für den linken Kanal.


Das ist dann also nicht mein Problem muss ich so belassen wie es ist.
Die 4 Bytes haben also nichts mit dem PixelFormat zu tun.

Hmm vielleicht funktioniert das auf diese weise auch nicht, habe keine Palette für 24Bit.
Und wenn ich über HSLtoRGB die Farben hole verändert das die 8Bit Palette.

gruss

EWeiss 11. Apr 2016 07:15

AW: pf8Bit seltsames aussehen der Palette
 
Wird eine vorgefertigte Palette für ein Bitmap bei ScanLine nicht berücksichtigt?
Wenn doch warum sind dann hier alle Farbwerte "0" ?

Delphi-Quellcode:
  if bScanLines then
  begin
    SetLength(ScanLines, Bitmap.Height);
    for i := 0 to Length(ScanLines) - 1 do
      ScanLines[i] := Bitmap.Scanline[i];
  end;
gruss

Medium 11. Apr 2016 07:57

AW: pf8Bit seltsames aussehen der Palette
 
Wie verwendest du Scanline hier? Insbesondere der Typ des Pointer wäre hier interessant.

EWeiss 11. Apr 2016 08:04

AW: pf8Bit seltsames aussehen der Palette
 
Zitat:

Zitat von Medium (Beitrag 1335199)
Wie verwendest du Scanline hier? Insbesondere der Typ des Pointer wäre hier interessant.

Genau so wie im original Sample nur das ich für das Bitmap vorher eine Palette in pf8Bit erstelle.

gruss

Neutral General 11. Apr 2016 08:11

AW: pf8Bit seltsames aussehen der Palette
 
Zitat:

Zitat von EWeiss (Beitrag 1335200)
Genau so wie im original Sample nur das ich für das Bitmap vorher eine Palette in pf8Bit erstelle.

Hab jetzt nicht alle beide Threads komplett durchgelesen. Kannst du bitte grad sagen welcher Typ es ist?
Was Medium und ich schätzen ist, dass du einen Pointertyp benutzt der größer als 1 Byte ist und du somit Pixel überspringst und dadurch seltsame Ergebnisse bekommst.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:30 Uhr.
Seite 1 von 4  1 23     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz