]> granicus.if.org Git - handbrake/commit
vfr: simplify and improve CFR frame dropping algo
authorJohn Stebbins <jstebbins.hb@gmail.com>
Wed, 21 Sep 2016 22:36:07 +0000 (15:36 -0700)
committerJohn Stebbins <jstebbins.hb@gmail.com>
Tue, 21 Feb 2017 20:54:40 +0000 (13:54 -0700)
commite1ced8ee0d1052941d88c54b55f664fc481f94ea
tree234bbf6d294042292d2a06ba51c72fdb0f111e82
parent04d8859af6f0a4cba77818dda89f5bfb4fc437ca
vfr: simplify and improve CFR frame dropping algo

The new algo caches extra frames so it can select a "best" frame to drop
from a list. A metric for each buffer is calculated as it is added to
the list. The metric indicates how much the frame differes from the
previous frame. The one with the lowest metric is selected for dropping
when a drop is required.

The old algo tried to latch on to a pattern without keeping any extra
frames. When "in sync" it would drop the buffer that fit the pattern.
But this only worked for a few specific patterns I had tested with and
did not work for all possible patterns (e.g. issue 50 where 1 in 5
needed to be dropped to convert 29.97 to 23.976).

fixes https://github.com/HandBrake/HandBrake/issues/50
libhb/vfr.c