I have a .flac file which refuses to decode.
This happened after I fiddled with metaflac trying to add vorbis-comments, not sure about the error it gave me, but it was something of that below (FLAC__METADATA_CHAIN_STATUS_BAD_METADATA).
flac -d file.flac
file.flac: ERROR while decoding data
state = 4:FLAC__STREAM_DECODER_END_OF_STREAM
flac -d --decode-through-errors file.flac
file.flac: ERROR while decoding data
state = 4:FLAC__STREAM_DECODER_END_OF_STREAM
metaflac --list file.flac
file.flac: ERROR: reading metadata, status = "FLAC__METADATA_CHAIN_STATUS_BAD_METADATA"
If I play the file in Winamp it first pops out:
ERROR: invalid/missing FLAC metadata
then
ERROR processing metadata
FLAC__FILE_DECODER_SEEKABLE_STREAM_DECODER_ERROR
Looking at the file in a hex-editor it seems fine... The id "fLaC" is there, a seeking block and a padding-block then comes the audio data...
Is there anyway to restore my file? It was perfectly fine before I used metaflac, at least it played fine in winamp. But the file could have corrupt metadata-headers and because of that metaflac trashed the flac-header?
Using flac & metaflac 1.0.4 but the file was encoded with an older version.
Edit:
Did some more testing, did a basic flac-metadata-reader according to the specs
Block nr 0
Offset: 4
BLOCK_TYPE: 0 (STREAMINFO)
Size: 34
-------------
Block nr 1
Offset: 42
BLOCK_TYPE: 3 (SEEKTABLE)
Size: 236
-------------
Block nr 2
Offset: 282
BLOCK_TYPE: 0 (STREAMINFO)
Size: 27
-------------
Block nr 3
Offset: 313
BLOCK_TYPE: 5
Size: 1179648
Because there can only be one STREAMINFO block, and BLOCK_TYPE 5 is undefined, and no block has "Last-metadata-block flag" set, I know what's wrong here. Hmm let's see if I can hex-edit those blocks out or something...
Edit2:
Noticed that the size of the SEEKTABLE-block was always 1800 bytes, so when I changed it in file.flac, it worked!
Block nr 0
Offset: 4
BLOCK_TYPE: 0 (STREAMINFO)
Size: 34
-------------
Block nr 1
Offset: 42
BLOCK_TYPE: 3 (SEEKTABLE)
Size: 1800
-------------
Block nr 2
Offset: 1846
BLOCK_TYPE: 1 (PADDING)
Last Block
Size: 1560
-------------
flac -d --decode-through-errors file.flac
file.flac: *** Got error code 0:FLAC__STREAM_DECODER_ERROR_STATUS_LOST_SYNC
file.flac: WARNING, MD5 signature mismatch
The file plays fine! There is no audible pop or anything, looked at the file in cool edit and it was perfectly fine!
Now I willl do some testing to see if there was a bug in metaflac...
Hopefully this thread will be useful if someone else is having problems!
Edit3:
Ok it was a confirmed bug... I did use --import-vc-from=- to add comments...
* metaflac has a bug where, if --import-vc-from is used on a FLAC file that has no Vorbis comment block, the FLAC file can be corrupted. All FLAC files generated by 1.0.4 have a Vorbis comment block added automatically but files from 1.0.3 and before do not. This is fixed in CVS.