[FFmpeg-devel] [PATCH v4 2/4] avfilter/vf_framerate: if metadata lavfi.scd.mafd exists, we'll use it first
Michael Niedermayer
michael at niedermayer.cc
Thu Oct 10 14:52:56 EEST 2019
On Tue, Oct 08, 2019 at 11:28:37PM +0800, lance.lmwang at gmail.com wrote:
> From: Limin Wang <lance.lmwang at gmail.com>
>
> Reviewed-by: Paul B Mahol <onemda at gmail.com>
> Signed-off-by: Limin Wang <lance.lmwang at 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
thx
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
Old school: Use the lowest level language in which you can solve the problem
conveniently.
New school: Use the highest level language in which the latest supercomputer
can solve the problem without the user falling asleep waiting.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20191010/9805cdad/attachment.sig>
More information about the ffmpeg-devel
mailing list