Message ID | tencent_46D44E5E70732D119AE640CF9ABE9F02AB08@qq.com |
---|---|
State | New |
Headers | show |
Series | [FFmpeg-devel,v2] avcodec/apedec: fix prediction | expand |
Context | Check | Description |
---|---|---|
yinshiyou/make_loongarch64 | success | Make finished |
yinshiyou/make_fate_loongarch64 | success | Make fate finished |
andriy/make_x86 | success | Make finished |
andriy/make_fate_x86 | success | Make fate finished |
andriy/make_armv7_RPi4 | success | Make finished |
andriy/make_fate_armv7_RPi4 | success | Make fate finished |
> On Jun 30, 2022, at 5:09 PM, Zhao Zhili <quinkblack@foxmail.com> wrote: > > From: Zhao Zhili <zhilizhao@tencent.com> > > Regression since ed0001482a74b60f3d5bc5. > > Tested with: > ./ffmpeg -i foo.ape -f md5 - > for samples in #9816 and #2239. > > It gives the same result as before ed0001482a for ticket #9816, > and doesn't break ticket #2239. OK, It did break #8918. The compression_level is different between #9816 and #8918, I have no idea if it can be used as the condition, or just some random bug in the encoders which created those files. > > Signed-off-by: Zhao Zhili <zhilizhao@tencent.com> > --- > libavcodec/apedec.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/libavcodec/apedec.c b/libavcodec/apedec.c > index a7c38bce1b..f5c0f75f7f 100644 > --- a/libavcodec/apedec.c > +++ b/libavcodec/apedec.c > @@ -1198,7 +1198,7 @@ static av_always_inline int predictor_update_filter(APEPredictor64 *p, > p->buf[delayB - 3] * p->coeffsB[filter][3] + > p->buf[delayB - 4] * p->coeffsB[filter][4]; > > - p->lastA[filter] = decoded + ((int64_t)((uint64_t)predictionA + (predictionB >> 1)) >> 10); > + p->lastA[filter] = decoded + ((int32_t)((uint32_t)predictionA + ((int32_t)predictionB >> 1)) >> 10); > p->filterA[filter] = p->lastA[filter] + ((int64_t)(p->filterA[filter] * 31ULL) >> 5); > > sign = APESIGN(decoded); > -- > 2.35.3 > > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
diff --git a/libavcodec/apedec.c b/libavcodec/apedec.c index a7c38bce1b..f5c0f75f7f 100644 --- a/libavcodec/apedec.c +++ b/libavcodec/apedec.c @@ -1198,7 +1198,7 @@ static av_always_inline int predictor_update_filter(APEPredictor64 *p, p->buf[delayB - 3] * p->coeffsB[filter][3] + p->buf[delayB - 4] * p->coeffsB[filter][4]; - p->lastA[filter] = decoded + ((int64_t)((uint64_t)predictionA + (predictionB >> 1)) >> 10); + p->lastA[filter] = decoded + ((int32_t)((uint32_t)predictionA + ((int32_t)predictionB >> 1)) >> 10); p->filterA[filter] = p->lastA[filter] + ((int64_t)(p->filterA[filter] * 31ULL) >> 5); sign = APESIGN(decoded);