On Fri, Oct 11, 2019 at 08:13:02PM +0200, Michael Niedermayer wrote: > On Thu, Oct 10, 2019 at 10:11:10PM +0800, Limin Wang wrote: > > On Thu, Oct 10, 2019 at 01:52:56PM +0200, Michael Niedermayer wrote: > > > On Tue, Oct 08, 2019 at 11:28:37PM +0800, lance.lmw...@gmail.com wrote: > > > > From: Limin Wang <lance.lmw...@gmail.com> > > > > > > > > Reviewed-by: Paul B Mahol <one...@gmail.com> > > > > Signed-off-by: Limin Wang <lance.lmw...@gmail.com> > > > > --- > > > > libavfilter/vf_framerate.c | 15 +++++++++++---- > > > > 1 file changed, 11 insertions(+), 4 deletions(-) > > > > > > > > diff --git a/libavfilter/vf_framerate.c b/libavfilter/vf_framerate.c > > > > index 6c8d01c..8d16998 100644 > > > > --- a/libavfilter/vf_framerate.c > > > > +++ b/libavfilter/vf_framerate.c > > > > @@ -71,13 +71,20 @@ static double get_scene_score(AVFilterContext *ctx, > > > > AVFrame *crnt, AVFrame *next > > > > > > > > if (crnt->height == next->height && > > > > crnt->width == next->width) { > > > > + AVDictionaryEntry *e_mafd = NULL; > > > > uint64_t sad; > > > > - double mafd, diff; > > > > + double mafd = HUGE_VAL, diff; > > > > + char *tail = NULL; > > > > > > > > ff_dlog(ctx, "get_scene_score() process\n"); > > > > - s->sad(crnt->data[0], crnt->linesize[0], next->data[0], > > > > next->linesize[0], crnt->width, crnt->height, &sad); > > > > - emms_c(); > > > > - mafd = (double)sad * 100.0 / (crnt->width * crnt->height) / (1 > > > > << s->bitdepth); > > > > + e_mafd = av_dict_get(next->metadata, "lavfi.scd.mafd", NULL, > > > > AV_DICT_MATCH_CASE); > > > > + if (e_mafd) > > > > + mafd = strtod(e_mafd->value, &tail); > > > > + if (*tail || mafd == HUGE_VAL) { > > > > + s->sad(crnt->data[0], crnt->linesize[0], next->data[0], > > > > next->linesize[0], crnt->width, crnt->height, &sad); > > > > + emms_c(); > > > > + mafd = (double)sad * 100.0 / (crnt->width * crnt->height) > > > > / (1 << s->bitdepth); > > > > + } > > > > > > while this is not introduced by the patch, i would suggest to seperate > > > emms_c() from functions using floating point, This combination does have > > > some potential for emms and the compilers optimizer hitting each other > > > > Michael, I haven't clear about what to seperate the emms_c? any reference > > usage in > > existing codebase? I can help to submit patch to fix it, there're at least > > five filters > > are using the same way. > > emms clears the float/MMX state of the cpu > if the compiler uses the FPU at the same time and is unaware of that > clearing it could result in problems. > so i just always tried to keep emms away from floating point usage to > minimize > the chances of this. > > also it was rather slow on some CPUs to mix mmx and float code
OK, how about to scale mafd with 1000000 to avoid the float point use? > > thx > [...] > > -- > Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB > > When you are offended at any man's fault, turn to yourself and study your > own failings. Then you will forget your anger. -- Epictetus > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe". _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".