Yes, that solution is completely valid. It works for both WAV and AIFF files which (illegally) have an odd size. Both RIFF (wav) and IFF (aiff) share the requirement that all blocks take up an even number of bytes in the file, even if the data content itself is odd. The specification states that all chunks with odd sizes must be padded. Some software erroneously leaves the last chunk in a file unpadded. Your solution works because it fits this special case - and it works without modifying the chunk sizes because they are supposed to be odd when the actual data is odd, but the chunk should still take up an even number of bytes in the file.

This same technique will not work in any other situation, such as adding two bytes or removing two bytes, because in these cases the chunk sizes would need to be modified.

I'm pretty sure you can continue to use your 'sfoddfix' script for both WAV and AIFF files which have the error of a missing pad byte. I typically run 'ls -l' and look for odd file sizes whenever I see FLAC errors. I have a C program which does the same thing as your script, and it works every time.

Brian Willoughby
Sound Consulting


On Nov 2, 2007, at 20:21, Dat Head wrote:

that's why i asked the original poster if the files were odd size, i
had that issue
before with a 24 bit mono file and wrote this script to fix it:

#!/bin/sh
#
#       sfoddfix - Sound File ODD size FIXer
#
# NOTE: flac v1.1.2 pukes on files that have an odd byte count, this pads them

files=${*:-*.wav}

for file in $files
do
  size=$(stat --printf='%s' $file)
  if [ $(($size%2)) -ne 0 ]; then
    echo "size=$size"
    echo "echo -e \"\\0377\\c\" >> $file"
    echo -e "\0377\c" >> $file
  fi
done
_______________________________________________
Flac mailing list
[email protected]
http://lists.xiph.org/mailman/listinfo/flac

Reply via email to