[FFmpeg-devel] [PATCH] adpcm: Reset the ssd back to zero more often

Martin Storsjö martin
Sun Nov 21 00:11:12 CET 2010


On Sat, 20 Nov 2010, Michael Niedermayer wrote:

> On Sat, Nov 20, 2010 at 08:59:25AM +0200, Martin Storsj? wrote:
> > On Sat, 20 Nov 2010, Michael Niedermayer wrote:
> > 
> > > On Thu, Nov 18, 2010 at 04:01:31PM +0200, Martin Storsjo wrote:
> > > > If using very large trellis sizes (e.g. -trellis 15), the frontier
> > > > is so large that the difference between the best and the worst
> > > > trellis node in the frontier is large enough to cause wraparound.
> > > > 
> > > 
> > > > Resetting at (1<<20) is enough to avoid the issue at -trellis 16
> > > 
> > > have you come to this conclusion by proof or by simply changing the
> > > threshold and seeing no problems?
> > 
> > By changing the threshold until there were no more problems with that 
> > particular sample - sorry, I should have mentioned that.
> > 
> > I think it can't be proven how often it needs to be reset. In the worst 
> > pathological case, the best trellis node has ssd 0 while the worst one has 
> > a ssd of 65535*65535 added in each generation, overflowing even if we'd 
> > subtract the best node's ssd each round.
> > 
> > The attached patch should avoid the issue properly regardless of how 
> > pathologically bad case it is, giving a small but tolerable slowdown. Do 
> > you think that is enough, or should that one be combined with this 
> > previous patch, resetting it to 0 more often (or perhaps even every round) 
> > to avoid this issue happening at all?
> 
> have you tried to change ssd to 64bit ?
> maybe its faster

In 64 bit mode, changing ssd to 64 bit is a bit faster (current code 61 
sec, adding the wraparound check 64 sec, 64 bit ssd 62 sec), but in 32 bit 
mode, it's quite a bit slower (current code 69.6 sec, with wraparound 
check 69.8 sec, 64 bit ssd 79.6 sec), so I wouldn't suggest that solution.

// Martin



More information about the ffmpeg-devel mailing list