dubhater / vapoursynth-mvtools

Motion compensation and stuff
181 stars 27 forks source link

Fix Compensate with overlap = 0. #81

Closed adworacz closed 3 weeks ago

adworacz commented 3 weeks ago

There was a bug introduced in a previous commit that broke Compensate with overlap = 0. Most scripts overwrite overlap to be a non-zero value, so the impact has been minimal in some ways.

The bug appeared to be introduced as part of optimizing SAD calculations, however the underlying behavior of overriding pitch based on the block width was unnecessary, as all calls from Analyze to the copy code always specified the same value for pitch and width.

But overriding pitch to block width is what broke Compensate, which uses very different pitch and block widths.

So as far as I can tell, the line I've deleted in this commit was just a straight up bug and held no part in the originally intended optimization.

I tested this by adding a conditional fprintf based on any difference between pitch and width and a difference only appeared in Compensate. Analyze was completely silent, meaning that pitch and width were always equal.

Fixes #54