wasn't sure where to post this since not many topics regarding the wrapper, anyways i implemented it into my engine and find a small memory leak, thought i'd share the small fix
in openal.pas
at
add below lineCode:function LoadWavStream(Stream: Tstream; var format: TALenum; var data: TALvoid; var size: TALsizei; var freq: TALsizei; var loop: TALint): Boolean;Code:name := readname[0]+readname[1]+readname[2]+readname[3];anyways i also wrote an improved alutLoadWAVFileCode:freemem(readname, 4);
-ColinCode:procedure alutLoadWAVFile(fname: string; var format: TALenum; var data: TALvoid; var size: TALsizei; var freq: TALsizei; var loop: TALint); ////// /// Colin Stewart (colin[at]overhertz.com) /// 22.01.2011 ////// var wavFile: File; fPos: Integer; wavHeader: TWavHeader; name: array[0..3] of AnsiChar; begin //assign file AssignFile(wavFile, fname); //open in readonly mode FileMode := fmOpenRead; Reset(wavFile, 1); //read wav header BlockRead(wavFile, wavHeader, SizeOf(TWavHeader)); //set samplerate freq := WavHeader.SampleRate; //set format format := (AL_FORMAT_MONO8-1)+WavHeader.ChannelNumber+(WavHeader.BitsPerSample div 8); //AL_FORMAT_MONO8 = 4352 format := 4349 + (WavHeader.ChannelNumber*2)+(WavHeader.BitsPerSample div 8); //Seek(wavFile Seek(wavFile, WavHeader.FormatHeaderSize-16); fPos := FilePos(wavFile); //run through wav file while not Eof(wavFile) do begin //read chunk name BlockRead(wavFile, name, 4); Inc(fPos, 4); if name = 'data' then begin //get size of wave data BlockRead(wavFile, size, 4); //read wave data GetMem(data, size); BlockRead(wavFile, Data^, size); Inc(fPos, size+4); //decode if needed/possible case WavHeader.FormatCode of WAV_IMA_ADPCM: ; //TODO WAV_MP3: ; //TODO end; end else begin //Skip unknown chunk(s) Inc(fPos, 4); Seek(wavFile, fPos); end; end; end;


Reply With Quote
Hope Noeska can apply the fix to his downloadable version.
