AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Algorithmus von C99 in Delphi übersetzen
Thema durchsuchen
Ansicht
Themen-Optionen

Algorithmus von C99 in Delphi übersetzen

Ein Thema von Rer · begonnen am 18. Nov 2009 · letzter Beitrag vom 19. Nov 2009
 
Rer

Registriert seit: 7. Apr 2007
13 Beiträge
 
#4

Re: Algorithmus von C99 in Delphi übersetzen

  Alt 19. Nov 2009, 17:04
so weit bin ich bis jetzt^^
Delphi-Quellcode:
type
  ADX_HEADER = packed record
    Begin_0x80 : Byte;
    Begin_0x00 : Byte;
    crOffset : Word;
    encType : Byte;
    blockSize : Byte;
    smplbitdpth: Byte;
    NumChannels: Byte;
    sampleRate : LongWord;
    totalSamples: LongWord;
    hpfrequency: Word;
    Version : Byte;
    flags : Byte;
  end;

  ADX_LOOP_V3 = packed record
    loopEnabled: LongWord;
    loopBegSamInd:LongWord;
    loopBegBytInd:LongWord;
    loopEndSamInd:LongWord;
    loopEndBytInd:LongWord;
  end;

  ADX_LOOP_V4 = packed record
    loopEnabled: LongWord;
    loopBegSamInd:LongWord;
    loopBegBytInd:LongWord;
    loopEndSamInd:LongWord;
    loopEndBytInd:LongWord;
  end;
{...}

var
  Form1 : TForm1;
  adxhdr : ADX_HEADER;
  adxloopv3 : ADX_LOOP_V3;
  adxloopv4 : ADX_LOOP_V4;

function READ_HEADER(efile:string):boolean;
function read_loopv3(efile:string):boolean;
function read_loopv4(efile:string):boolean;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  M_PI : double;
  a,b,c : double;
  coefficient: array [0..1] of double;

begin
  READ_HEADER('c:\MeineDatei.adx');

  if adxhdr.Version=3 then
    read_loopv3('c:\MeineDatei.adx')
  else if adxhdr.Version=4 then
    read_loopv4('c:\MeineDatei.adx');

  //-------> coefficients must be calculated

  M_PI:=ArcCos(-1.0);
  a := sqrt(2.0) - cos(2.0 * M_PI * (adxhdr.hpfrequency/adxhdr.sampleRate));
  b := sqrt(2.0) - 1.0;
  c := (a - sqrt((a + b) * (a - b))) / b;

  // double coefficient[2];
  coefficient[0] := c * 2.0;
  coefficient[1] := -(c * c);


end;

function READ_HEADER(efile:string):boolean;
var
  edat : file;
  buffer : array [0..$FFFF] of byte;
  gelesen : integer;
begin
  result:=false;
  assignfile(edat,efile);
  reset(edat,1);
  blockread(edat,buffer,sizeof(adxhdr),gelesen);
  move(buffer[0],adxhdr,sizeof(adxhdr));
  if (adxhdr.Begin_0x80=128) and (adxhdr.Begin_0x00=0) then begin
    result:=true;
  end;
  closefile(edat);
end;

function read_loopv3(efile:string):boolean;
var
  edat : file;
  buffer : array [0..$FFFF] of byte;
  gelesen : integer;
begin
  result:=false;
  try
    assignfile(edat,efile);
    reset(edat,1);
    seek(edat, 24);
    blockread(edat,buffer,sizeof(adxloopv3),gelesen);
    move(buffer[0],adxloopv3,sizeof(adxloopv3));
  finally
    result:=true;
    closefile(edat);
  end;
end;

function read_loopv4(efile:string):boolean;
var
  edat : file;
  buffer : array [0..$FFFF] of byte;
  gelesen : integer;
begin
  result:=false;
  try
    assignfile(edat,efile);
    reset(edat,1);
    seek(edat, 36);
    blockread(edat,buffer,sizeof(adxloopv3),gelesen);
    move(buffer[0],adxhdr,sizeof(adxloopv3));
  finally
    result:=true;
    closefile(edat);
  end;
end;

end.
Nun steht in den nächsten Zeilen bei wikipedia:
Code:
static int32_t*      past_samples;
 static uint_fast32_t sample_index = 0;
 static ADX_header*   adx_header;
Sieht für mich wie eine Variablendeklaration aus. Ich weiß jedoch nicht was da genau gemacht wird.
Außerdem werden zwischendurch die funktionen "ntohs" und "sign_extend" verwendet... mit denen kann ich ebenfalls nichts anfangen. Gibt es gleichbedeutende funktionen bei Delphi?
Code:
scale[i] = ntohs( bitstream_read( 16 ) );
sample_error = sign_extend( sample_error, adx_header->sample_bitdepth );
fortsetzung folgt
mfg
Rer
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz