Das hört sich plausibel an, da der ja ein Pointer auf ein Array von 16 bit Werten haben will.
Delphi-Quellcode:
var
Pixels: TMemoryStream
...
result := RB_I16_image_save(FileName, FileFormat, DimX, DimY, Pixels.Memory, PixelCount);
Tuts leider auch nicht. Der Stream war auch nur eine Möglichkeit die ich probiert habe. Hatte eigentlich vor ein Array of SmallInt bzw. einen Pointer darauf zu übergeben, wobei ich der Meinung war, dass Arrays an sich schon Pointer sind. Vielleicht verwechsle ich das auch mit C.
Hat denn so ein MemoryStream die gleiche Struktur wie der erwartete int16_t array?
Das schreibe ich momentan in meine Variablen:
Delphi-Quellcode:
var
i: SmallInt;
Name: PChar;
Format: Byte;
DimX,DimY: LongWord;
Pixels: TMemoryStream;
PixelCount: LongInt;
begin
Name := PChar(ExtractFilePath(ParamStr(0))+'Test.png');
Format := 0;
Dimx := 64;
Dimy := 64;
PixelCount := DimX*DimY;
Pixels := TMemoryStream.create;
for i := 0 to PixelCount-1 do
Pixels.Write(i,SizeOf(i));
end;