[FFmpeg-devel] [PATCH] FLAC parser

Michael Niedermayer michaelni
Sun Mar 29 00:37:34 CET 2009


On Sat, Mar 28, 2009 at 06:41:02PM -0400, Justin Ruggles wrote:
> Michael Niedermayer wrote:
> > On Fri, Mar 27, 2009 at 01:05:47AM -0400, Justin Ruggles wrote:
> >> Hi,
> >>
> >> I finally got a working FLAC parser without resorting to buffering
> >> max_frame_size bytes like the FLAC decoder does.  It requires a slight
> >> change to ff_combine_frame() since the header can be up to 16 bytes long
> >> and ff_combine_frame() currently only supports up to 8 bytes of overread
> >> data (FF_INPUT_BUFFER_PADDING_SIZE).
> >>
> >> This works with all samples I've tested, but it would be great to have
> >> more tested as well.  There are quite a few corner cases, and while I've
> >> tried to think of everything I can, I might have missed something.
> > 
> > If i understand this correctly,
> > this is a probabilistic parser, that is it will fail once in 4tb of
> > random data at least, but due to the max crc stuff sooner.
> > and as data is not random it could fail more frequently
> 
> Yes. The only alternatives I can see would be decoding twice (although
> inverse prediction, and interleaving could be skipped in the parser) or
> not having a parser, which prevents stream copy to most other containers.
> 
> I came up with a different probability of false positive frame detection
> for random data, but I might be calculating incorrectly...  For
> simplicity, given the smallest size frame header, there are 180 valid
> combinations in 48 bits, which is about 1 in 1.56e12.  Then if you take
> into account the CRC-16 of the previous frame, that makes it around 1 in
> 1.02e17.  But given that the sync code is mostly a string of 1's, the
> probability is likely higher than that with non-random data.

Well lets first check where our differences come from
15bit for the sync
about 2-3 bits checked in the header
8bit header CRC
16bit frame CRC
15+3+8+16= 42
2^42 = 4tb ~ 4.4e12

are you maybe counting the sync twice?

[...]

-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Freedom in capitalist society always remains about the same as it was in
ancient Greek republics: Freedom for slave owners. -- Vladimir Lenin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20090329/697ee0d1/attachment.pgp>



More information about the ffmpeg-devel mailing list