[FFmpeg-devel] flashsvenc.c - sampling block size too low

Jason Askew jason.askew
Fri May 18 03:24:42 CEST 2007

> could you please explain what exactly this patch is doing?

Block size can only be changed at i-frame boundaries.

It is not known ahead of time what the optimal block code for a given
i-frame group is going to be.

My code keeps track of the total encoding size since the last i-frame
for each of the possible block sizes.  When the next i-frame is
encountered, the smallest encoded block size is written to the log
file.  On the second pass, this block size is then used to encode that
i-frame section, resulting in the smallest possible file size.

I interacted with Benjamin Larsson to get his permission to extend his
code and to make sure this was the correct route.

> the current flashsvenc.c contains a optimal brute force encoder
> which tries all block sizes, it is under #if 0 and works with
> a single pass, and assuming it is not buggy it should outperform
> your code, which adapts the blocks at coarser granularity
> and your patch duplicates alot of the existing code ...

The #if 0 code does not work.  Block size can be changed only at
i-frame boundaries.  flv's encoded with #if 0 code does not play back

And yes, my code is current based on the concept introduced on the #if
0 code.  I am working on a very promising algorithm now that is 3-4
times faster than the brute force method.

More information about the ffmpeg-devel mailing list