[FFmpeg-trac] #10586(undetermined:new): Impossible to retrieve libvmaf result from filter graph in AVFrame

FFmpeg trac at avcodec.org
Mon Sep 25 14:22:52 EEST 2023


#10586: Impossible to retrieve libvmaf result from filter graph in AVFrame
-------------------------------------+-------------------------------------
             Reporter:  ichlubna     |                     Type:  defect
               Status:  new          |                 Priority:  normal
            Component:               |                  Version:  git-
  undetermined                       |  master
             Keywords:  libvmaf      |               Blocked By:
  frame filter libav psnr            |
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
 There is no way to retrieve vmaf score from the resulting frame produced
 at the end of the filter graph. The same approach which works for psnr and
 ssim filters is not working.

 When I use [https://ffmpeg.org/ffmpeg-filters.html#psnr psnr] or
 [https://ffmpeg.org/ffmpeg-filters.html#psnr ssim] filter I can list the
 result from the [https://ffmpeg.org/doxygen/4.1/structAVFrame.html frame]
 read from the sink buffer of the filter graph which is stored in the
 metadata [https://ffmpeg.org/doxygen/4.1/structAVDictionary.html
 dictionary] as:
 {{{
 char *entries = nullptr;
 av_dict_get_string(resultFrame->metadata, &entries, ',', '|');
 std::cout << entries;
 }}}

 I use this filter:
 {{{
 const AVFilter *vmafFilter  = avfilter_get_by_name("libvmaf");
 }}}

 The same cannot be used for [https://ffmpeg.org/ffmpeg-
 filters.html#libvmaf libvmaf]. The metadata dictionary is empty. I
 searched the whole frame structure and couldn't find the result anywhere.
 Shouldn't this be unified?

 I don't see the storing of the result in the frame anywhere in the
 [https://github.com/FFmpeg/FFmpeg/blob/13a3e2a9b4697a1403d3e58eb5e8ef9c72561d54/libavfilter/vf_libvmaf.c
 source code]. Storing to the frame is visible in the
 [https://github.com/FFmpeg/FFmpeg/blob/13a3e2a9b4697a1403d3e58eb5e8ef9c72561d54/libavfilter/vf_psnr.c#L223
 code of psnr] and
 [https://github.com/FFmpeg/FFmpeg/blob/13a3e2a9b4697a1403d3e58eb5e8ef9c72561d54/libavfilter/vf_ssim.c#L388
 code of ssim]. I think that the storing of the vmaf score is just missing
 in the code.
-- 
Ticket URL: <https://trac.ffmpeg.org/ticket/10586>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list