[FFmpeg-devel] [PATCH][RFC] Lagarith Decoder.
Nathan Caldwell
saintdev
Thu Sep 17 10:46:07 CEST 2009
2009/9/5 Loren Merritt <lorenm at u.washington.edu>:
> On Tue, 1 Sep 2009, Nathan Caldwell wrote:
>
>> Here are the latest lagarith patches.
>
> Your decoder disagrees with the official version on the 2nd frame of http://akuvian.org/stuff/lagarith_bork.avi
Finally got a chance to look into this, and found the problem, but I'm
not sure how to fix it.
What happens is on this clip when the probabilities get scaled in
lag_read_prob_header(), one of the values gets rounded up instead of
rounding down like reference does. For the offending value reference
gives 0x6ff while the code below gives 0x700.
for (i = 1; i < 257; i++) {
rac->prob[i] = ((uint64_t) rac->prob[i] <<
scale_factor) / cumul_prob;
scaled_cumul_prob += rac->prob[i];
}
Subtracting 1 from the shifted probability forces it to round down,
and fixes the issue on this clip, but breaks pretty much every other
test clip I have. Here's what I did.
for (i = 1; i < 257; i++) {
if (rac->prob[i] != 0)
rac->prob[i] = (((uint64_t) rac->prob[i] <<
scale_factor) - 1) / cumul_prob;
scaled_cumul_prob += rac->prob[i];
}
I'm hoping someone can help here, as I said I'm not sure how to fix this one.
--
-Nathan Caldwell
More information about the ffmpeg-devel
mailing list