[FFmpeg-devel] [GSoC] Motion Interpolation

Davinder Singh ds.mudhar at gmail.com
Sat Aug 13 15:18:56 EEST 2016


On Thu, Aug 11, 2016 at 12:10 AM Davinder Singh <ds.mudhar at gmail.com> wrote:

> [...]
>
> latest changes:
https://github.com/dsmudhar/FFmpeg/blob/dev/libavfilter/vf_minterpolate.c
uses shared motion estimation code now, added options, improved vsbmc
i tried to make filter options as flexible as possible so that multiple
algorithms are be supported.

@Ronald:
have a look:
https://github.com/dsmudhar/FFmpeg/blob/dev/libavfilter/motion_estimation.c
i think if penalty factor can be moved into cost function, motion
estimation can be shared with encoders. we can start work on this after
GSoC?

TODO:
frame border motion estimation.
add scene change threshold. roughness check doesn't work so well and
introduce artifacts.
add docs.


> here's another idea: dynamic block size selection for MC-FRUC
> since it's not video encoding, using 16x16 block with fixed search window
> may not work same for all resolution videos. what if we automatic resize
> block depending on resolution? like if 16x16, P=20 works fine for 1280x720
> video, we can scale it according to width, e.g for 1920x1080 which 1.5x
> 1280, we use 24x24 block and also scale P accordingly? i haven't tested it
> yet though.
>

i tested this. quality was improved with 1080p but not with smaller
resolution.

I tried to scale best settings of 720p. UMH. 1080p same video.
scale nothing: mb16 p18
stddev:    1.16 PSNR: 46.80 MAXDIFF:  197 bytes:1085529600/1073088000
scale search window: mb16, p27
stddev:    1.21 PSNR: 46.47 MAXDIFF:  193 bytes:1085529600/1073088000
scale both: mb24 p18
stddev:    1.14 PSNR: 46.93 MAXDIFF:  181 bytes:1085529600/1073088000

ESA
mb16 p16:
stddev:    1.18 PSNR: 46.65 MAXDIFF:  181 bytes:1085529600/1073088000
mb24 p24:
stddev:    1.16 PSNR: 46.77 MAXDIFF:  181 bytes:1085529600/1073088000

640p ESA
m16 p16:
stddev:    1.01 PSNR: 47.97 MAXDIFF:  160 bytes:119577600/118540800
scale p: mb16 p8:
stddev:    1.02 PSNR: 47.95 MAXDIFF:  148 bytes:119577600/118540800
scale both: m8 p8:
stddev:    1.05 PSNR: 47.63 MAXDIFF:  187 bytes:119577600/118540800

i think quality can be further improved, generated test window weights were
not perfect.
should i keep this feature? since block-size won't be log2 int, that will
break vsbmc which use quadtree division for smaller blocks.


> [1]: JVT-F017.pdf by Z Chen <http://akuvian.org/src/x264/JVT-F017.pdf.gz>
>


On Thu, Aug 11, 2016 at 9:09 PM Paul B Mahol <onemda at gmail.com> wrote:

> Could you please squash your commits and attach patches that add
> vf_mestimate
> and vf_minterpolate filters?
>

patch attached.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-added-motion-estimation-and-interpolation-filters.patch
Type: application/octet-stream
Size: 90218 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20160813/c4d53971/attachment.obj>


More information about the ffmpeg-devel mailing list