[Flac] Flac encoding of 88.2kHz files -- not streamble?

Keith Robertson kjrobert at alumni.uwaterloo.ca
Thu Mar 22 09:29:29 PDT 2007


Hi.

I'm trying to encode some high sample rate music (88.2kHz) into flac. 
When trying this with flac 1.1.4 I get the following error:

#####
keithr at eng:~$ work/flac-1.1.4/src/flac/flac Serenissima02.wav
<snip copyright>
Serenissima02.wav: WARNING: legacy WAVE file has format type 1 but 
bits-per-sample=24
Serenissima02.wav: WARNING: skipping unknown sub-chunk 'fact'

Serenissima02.wav: ERROR initializing encoder
                    init_status = 
FLAC__STREAM_ENCODER_INIT_STATUS_NOT_STREAMABLE

The encoding parameters specified do not conform to the FLAC Subset and 
may not be streamable or playable in hardware devices.  If you really 
understand the consequences, you can add --lax to the command-line 
options to encode with these parameters anyway.  See 
http://flac.sourceforge.net/format.html#subset
#####

I fully comprehend that you can make this work with --lax.  However, I'm 
not just trying to make it work.  I'm interested in ensuring that the 
file plays on as wide a variety as players as possible.  I'm 
particularly concerned about the error and comment saying that the 
resulting file is not streamable.

Based on my reading of the flac spec I'm not sure I follow this.  I 
understand that the resulting file will not be part of the Flac subset. 
  Further, I understand that some decoders that only implement the Flac 
subset will not be able to play the resulting file.  However, I'm 
confused that it says that it will not be streamable.  I would have 
thought a file is streamable as long as all information needed for 
decoding is contained in each frame header rather than just in the 
METADATA_BLOCK_STREAMINFO at the beginning.  When encoded with --lax, 
I've checked that the resulting binary flac file does indeed place the 
sample rate in each frame header.  It does so via the extension to have 
'unusual' sample rates at end of the header.  In this case the sample 
rate field is 0b1110 (0xE) and resulting end of frame header 16 bit 
sample rate in 10's of Hz is 0x2274 (8820 --> 88.2kHz).

So... shouldn't this file be streamable?  Is this error more correctly 
articulated FLAC__STREAM_ENCODER_INIT_STATUS_NOT_SUBSET, rather than 
NOT_STREAMABLE?  Or have I missed the boat...?

Cheers.

Keith

P.S.  There are quite a few reserved bits in the sample rate field (0001 
-0011).  What are the odds of getting 88.2kHz declared to be part of the 
subset?  This would be the most ideal solution from my perspective as a 
lot of high quality recordings are archived in 88.2kHz.



More information about the Flac mailing list