[FFmpeg-devel] [PATCH v6 2/4] avfilter/vf_framerate: if metadata lavfi.scd.mafd exists, we'll use it first
Marton Balint
cus at passwd.hu
Thu May 14 21:43:06 EEST 2020
On Thu, 14 May 2020, 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) {
Seems like null pointer dereference.
I am not a huge fan of this patch, mafd refers to a score between this
frame and the previous frame, we cannot ensure that there were no
additional frame processing between scdet and this filter which may have
duplicated or removed frames. So I'd rather not add this feature.
Regards,
Marton
> + 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);
> + }
> diff = fabs(mafd - s->prev_mafd);
> ret = av_clipf(FFMIN(mafd, diff), 0, 100.0);
> s->prev_mafd = mafd;
> --
> 1.8.3.1
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
More information about the ffmpeg-devel
mailing list