Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: FLAC Subframe size (Read 2893 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

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?

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.

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

FLAC Subframe size

Reply #3
Worst case would be slightly larger than the uncompressed data.

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).