OSDN Git Service

chapter2
[sample-delphi/sample-DELPHI.git] / WriteHeader.pas
1 unit WriteHeader;
2
3 interface
4
5 uses System.Classes;
6
7 {$INCLUDE spWav}
8 function waveHeaderWrite(fp: TFileStream; sizeOfData: integer; ch: SmallInt;
9   sampRate: Cardinal; sampBits: SmallInt): integer;
10
11 implementation
12
13 function waveHeaderWrite(fp: TFileStream; sizeOfData: integer; ch: SmallInt;
14   sampRate: Cardinal; sampBits: SmallInt): integer;
15 var
16   bytes: SmallInt;
17   wrWavHdr: WrSWaveFileHeader;
18   s: tWaveFormatPCM;
19 begin
20   wrWavHdr.hdrRiff := STR_RIFF;
21   wrWavHdr.sizeOfFile := sizeOfData + SizeOf(WrSWaveFileHeader) - 4;
22   wrWavHdr.hdrWave := STR_WAVE;
23   wrWavHdr.hdrFmt := STR_fmt;
24   wrWavHdr.sizeOfFmt := SizeOf(tWaveFormatPCM);
25   wrWavHdr.stWaveFormat := s;
26   s.formatTag := 1;
27   s.channels := ch;
28   s.sampleParSec := sampRate;
29   bytes := sampBits div 8;
30   s.bytesPerSec := bytes * ch * sampRate;
31   s.blockAlign := bytes * ch;
32   s.bytesPerSec := sampBits;
33   wrWavHdr.hdrData := STR_data;
34   wrWavHdr.sizeOfData := sizeOfData;
35   fp.WriteBuffer(wrWavHdr, SizeOf(WrSWaveFileHeader));
36   result:=fp.Position;
37 end;
38
39 end.