Skip to main content

Topic: FLAC Subframe size (Read 1837 times) previous topic - next topic

0 Members and 1 Guest are viewing this topic.
  • filoe
  • [*]
FLAC Subframe size
I am writing a Flac decoder. And there are 4 subframe types.
I am programming in C# and I have to read an amount of bytes of a stream. (the amount of bytes of all subframes or of the next subframe)
But how can I get the size of the ENCODED subframe?

  • tuffy
  • [*][*][*]
FLAC Subframe size
Reply #1
There is no subframe size field.  When the decoder has finished with one subframe, it simply expects the next subframe to follow (without any byte alignment) until all of them have been decoded.

  • filoe
  • [*]
FLAC Subframe size
Reply #2
Hmmm so is there a max size?
Because I have to know how many bytes I have to read into a buffer. I can t load the whole file into memory because that would case a outofmem exception

  • pdq
  • [*][*][*][*][*]
FLAC Subframe size
Reply #3
Worst case would be slightly larger than the uncompressed data.

  • tuffy
  • [*][*][*]
FLAC Subframe size
Reply #4
There technically isn't any maximum size for a given FLAC frame; a perfectly valid LPC subframe might be much larger than VERBATIM by populating its tunable fields with junk, for example.  The reference decoder handles this by only working on a bit-by-bit basis and not caring whether whatever's in the byte buffer is part of one frame or another.  You'll just need to ensure callbacks for CRC-8 and CRC-16 calculation are only executed as each byte is consumed rather than as the buffer is filled (or use a 1 byte buffer).