Use FRUC to do framerate up conversion more than 2x


The newly published OpticalFlow SDK 4.0 has a FRUC lib that can complete frame rate up conversion,but the doc and sample only introduce the method of interpolating one frame(2x framerate up), so how to interpolate more than one frames?

I’v tried modify output parameter’s “nTimeStamp” field of “NvOFFRUCProcess” function with same consecutive frames multi times,it looks like working, but I’m not sure it is correct, so can I call NvOFFRUCProcess() with same consecutive frames multi times to interpolate more frames?

1 Like

Thanks for sharing the experiment with the frames. I believe that FRUC doesn’t care about what frames you put there so theoretically you can just pass the same frames forever with increasing timestamps or something. Another thing that comes to my mind is using the newly interpolated frame in the next interpolation as one of the inputs. But this might propagate the interpolation errors further to the novel views.

I have done multiple passes of the frame interpolation adding the frames generated by the first pass to the base set of frames. I started with a 240 fps video and split into frames and then interpolated those 3 times. For the content I have it does a good job. The only issue I have found is that the video generated from the frames flickers, any ideas on that would be appreciated.

Current implementation of FRUC library support only 2x framerate in one run.
FRUC library is capable to interpolate a frame anywhere between two frames e.g. given two frames at time stamp 0 and 1 you can interpolate frame at any arbitrary time stamp like 0.25, 0.33, 0.75 and so on.
Frame rate of more than 2x can be achieved using FRUC library multiple times on same input stream. This solution is not optimal and efficient but will allow you to test and check on your end.