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


Ignore:
Timestamp:
Jan 24, 2018, 2:46:27 AM (9 months ago)
Author:
jkqxz
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SponsoringPrograms/GSoC/2018

    v17 v18  
    144144 
    145145 
     146== Video filtering with OpenCL == 
     147 
     148'''Description:''' 
     149Write video filters to perform useful common operations on the GPU. 
     150 
     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. 
     152 
     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! 
     158 
     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. 
     162 
     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. 
     165 
     166'''Prerequisites:''' 
     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. 
     170 
     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). 
     173 
     174'''Mentor:'''  Mark Thompson (''jkqxz'' in #ffmpeg-devel, <sw@jkqxz.net>) 
     175 
     176'''Backup mentor:'''  Rostislav Pehlivanov (atomnuker [at] gmail [dot] com) 
     177 
     178 
    146179---- 
    147180