HydrogenAudio

Hosted Forums => foobar2000 => Support - (fb2k) => Topic started by: Dusty on 2017-08-16 02:00:33

Title: Foobar can't play 48khz IMA ADPCM
Post by: Dusty on 2017-08-16 02:00:33
IMA ADPCM isn't exactly a format that's used anymore, but I noticed that Foobar can't play 48khz IMA ADPCM. It just says "Unsupported Format or Corrupted File". It plays 44.1khz IMA fine, as well as 32. It plays 48khz MS ADPCM fine as well. It only seems to be IMA ADPCM that has an issue, and only at 48khz. I'm not sure what to do to fix this. Windows Media Player and VLC Media Player play them back fine.
Title: Re: Foobar can't play 48khz IMA ADPCM
Post by: Peter on 2017-11-14 13:59:36
Fixed in foobar2000 1.3.17 beta 2.
Not sure what the problem is, a custom IMA ADPCM decoder has been added - as a bonus foobar2000 mobile will decode these files as well from the next update.

*plays Westwood game music rips from the iPhone*
Title: Re: Foobar can't play 48khz IMA ADPCM
Post by: j7n on 2019-04-06 12:21:18
Good that the program does not rely on Microsoft Windows for this anymore. But the decoder in Foobar 1.4.3 is not accurate at low levels, the amplitude jumps at block boundaries, which produces zipper noise during fadeout. The noise does not occur with ADPCM-xq, ACM or Sound Forge.

I see that length estimation has improved, but the output is still not gapless. An incomplete block is dropped, and blocks padded with silence produce a gap. The precise number of samples in correctly encoded files is available in the 'fact' chunk, and could be used if the number is close to the value obtained from the size of 'data'.

(dataSize - ceil(dataSize/nBlockAlign)*7/2*nChannels)*2/nChannels

Attached files encoded by ACM and David Bryant's adpcm-xq with incomplete last block.
Title: Re: Foobar can't play 48khz IMA ADPCM
Post by: Peter on 2019-04-07 08:24:47
Noted, thanks for reporting.
Title: Re: Foobar can't play 48khz IMA ADPCM
Post by: Peter on 2019-04-11 10:09:03
Fixed for the next update - output is now bit identical to what adpcm-xq produces.