Changes between Version 17 and Version 18 of SponsoringPrograms/GSoC/2018

Jan 24, 2018, 2:46:27 AM (3 years ago)



  • SponsoringPrograms/GSoC/2018

    v17 v18  
     146== Video filtering with OpenCL ==
     149Write video filters to perform useful common operations on the GPU.
     151Currently FFmpeg has good support for offloading decoding and encoding from the CPU (with support for DXVA2, D3D11, VAAPI, VDPAU, V4L2-M2M, and then many manufacturer-specific APIs), but not such good support for doing anything else with that video without using the CPU.  There is interop support for mapping between APIs so that generic methods like OpenCL which can be run on any GPU can be used together with specific video APIs for decoding and encoding, but currently there are only a few operations which can actually use this so many use-cases require expensive additional steps to download frames from the GPU and then upload them again later after performing some processing on the CPU.  Therefore, we would like to add more OpenCL filter support to libavfilter so that more operations can be offloaded.
     153In particular:
     154* Scaler, supporting a choice of scaling algorithms.
     155* Deinterlacer, probably based on an existing filter such as yadif or bwdif.
     156* Colour conversion, for both RGB and YUV, supporting different ranges and colour spaces.
     157* Any other video filters you would find useful!
     159There are also some related tasks which may be helpful:
     160* Adding more interop modes if you have a device which isn't currently supported.
     161* Adding support for testing GPU filters.  Currently the regression test suite only runs in software, extending it to be able to test the functionality of GPU filters would allow better testing - this is especially helpful given the wide variety of different devices it can run on.
     163'''Expected results:'''
     164More filters which can run on the GPU, increasing the scope of operations which can be offloaded to the GPU and the pipelines which can run on the GPU only.
     167* C coding ability and familiarity with git.
     168* Some knowledge of GPU concepts and programming (need not be OpenCL, much is transferrable so easy to learn).
     169* OpenCL-compatible GPU - easiest with Intel or AMD devices running on Linux or Windows; likely possible with many others.  More than one from different manufacturers would be helpful for testing.  CPU implementations can also be tested, but should be avoided for the main implementation work because they have very different performance properties.
     171'''Qualification task:'''
     172Implement a new video filter for libavfilter which uses OpenCL.  This can be a copy of any existing CPU-only filter or a new filter of your choice (it need not be efficient or do anything complex).
     174'''Mentor:'''  Mark Thompson (''jkqxz'' in #ffmpeg-devel, <>)
     176'''Backup mentor:'''  Rostislav Pehlivanov (atomnuker [at] gmail [dot] com)