+ support reading .wav with an odd (uneven) fmt chunk size

git-svn-id: trunk@47545 -
This commit is contained in:
nickysn 2020-11-24 00:31:16 +00:00
parent 49fc7dc4cb
commit 44b7a1df18
6 changed files with 7 additions and 1 deletions

3
.gitattributes vendored
View File

@ -4359,6 +4359,9 @@ packages/fcl-sound/tests/data/wav/reader/valid/44k_stereo_8.wav.raw -text svneol
packages/fcl-sound/tests/data/wav/reader/valid/euphoric_tape.wav -text svneol=unset#audio/x-wav
packages/fcl-sound/tests/data/wav/reader/valid/euphoric_tape.wav.info.txt svneol=native#text/plain
packages/fcl-sound/tests/data/wav/reader/valid/euphoric_tape.wav.raw -text svneol=unset#application/octet-stream
packages/fcl-sound/tests/data/wav/reader/valid/odd_fmt_size.wav -text svneol=unset#audio/x-wav
packages/fcl-sound/tests/data/wav/reader/valid/odd_fmt_size.wav.info.txt svneol=native#text/plain
packages/fcl-sound/tests/data/wav/reader/valid/odd_fmt_size.wav.raw -text svneol=unset#application/octet-stream
packages/fcl-sound/tests/tcwavreader.pas svneol=native#text/plain
packages/fcl-sound/tests/testfclsound.lpi svneol=native#text/plain
packages/fcl-sound/tests/testfclsound.lpr svneol=native#text/plain

View File

@ -96,7 +96,7 @@ begin
LEtoN(fmt);
Result := Result and (fmt.ChunkHeader.ID = AUDIO_CHUNK_ID_fmt) and ((fmt.ChunkHeader.Size + 8) >= sizeof(fmt));
if Result and ((fmt.ChunkHeader.Size + 8) > sizeof(fmt)) then
fStream.Seek((fmt.ChunkHeader.Size + 8) - sizeof(fmt), soCurrent);
fStream.Seek(Align((fmt.ChunkHeader.Size + 8) - sizeof(fmt), 2), soCurrent);
end;
function Min(a, b: Integer): Integer;

View File

@ -0,0 +1 @@
4800 1 8 1

File diff suppressed because one or more lines are too long

View File

@ -91,6 +91,7 @@ begin
TestValidFile('44k_stereo_64float.wav');
TestValidFile('44k_mono_16_tag.wav');
TestValidFile('euphoric_tape.wav');
TestValidFile('odd_fmt_size.wav');
end;