| 53 | | == FITS image decoder and encoder == |
| 54 | | |
| 55 | | '''Description:''' Flexible Image Transport System (FITS) is an open standard defining a digital file format useful for storage, transmission and processing of scientific and other images. FITS is the most commonly used digital file format in astronomy. |
| 56 | | |
| 57 | | '''Expected results:''' Fully working decoder and encoder. |
| 58 | | |
| 59 | | '''Prerequisites:''' C coding skills, basic familiarity with git. |
| 60 | | |
| 61 | | '''Qualification Task:''' XPM decoder implemented in libavcodec |
| 62 | | |
| 63 | | '''Alternative Qualification Task:''' add native DWA/DWB decompression in libavcodec OpenEXR implementation |
| 64 | | |
| 65 | | '''Mentor:''' Paul B Mahol (''durandal_1707'' in #ffmpeg-devel on Freenode IRC, onemda@gmail.com) |
| 66 | | |
| 67 | | '''Backup mentor:''' Rostislav Pehlivanov (''atomnuker'' in #ffmpeg-devel on Freenode IRC, atomnuker@gmail.com) |
| 68 | | |
| 69 | | == VMAF video filter == |
| 70 | | |
| 71 | | '''Description:''' Video Multi-Method Assessment Fusion (VMAF) is an video quality metric developed (https://github.com/Netflix/vmaf) by Netflix. The metric provides an indication of how closely a video resembles a source/reference. This is semantically similar to PSNR/SSIM, but VMAF is supposed to more closely reflect human visual perception. FFmpeg currently has video filters that measure PSNR/SSIM of any input video file compared to a reference, but it currently has no support for VMAF. In this task, you will add support for VMAF to FFmpeg. |
| 72 | | |
| 73 | | '''Expected results:''' Fully functional video filter that measures the VMAF of any input video compared to a reference, and that does not depend on Netflix' code. You should be able to run a command like "ffmpeg -i file -i ref -lavfi vmaf -f null -" and it should give identical results to Netflix' run_vmaf.py tool. If there is time, you will also write x86 SIMD optimizations. |
| 74 | | |
| 75 | | '''Prerequisites:''' C coding skills, basic familiarity with git. |
| 76 | | |
| 77 | | '''Qualification Task:''' Create a vmaf video filter based on (and linking to) Netflix' codebase. |
| 78 | | |
| 79 | | '''Mentor:''' Ronald S. Bultje (''BBB'' in #ffmpeg-devel on Freenode IRC, rsbultje@gmail.com) |
| 80 | | |
| 81 | | '''Backup mentor:''' Thilo Borgmann (thilo.borgmann AT mail de) |
| 82 | | |
| 83 | | == VP9 decoder improvements == |
| 84 | | |
| 85 | | '''Description:''' VP9 is a video codec developed by Google. It yields significantly better quality per bit compared to H.264, which is why many websites - e.g. Youtube - use VP9 (if the client supports it) to stream video over internet. FFmpeg has a native VP9 decoder that is significantly faster than Google's reference implementation. In this task, you will make this decoder even better. |
| 86 | | |
| 87 | | '''Expected results:''' Improve FFmpeg's VP9 native decoder by implementing one or more of the following subtasks: |
| 88 | | * AVX2 implementations for all 10/12bpc DSP functions |
| 89 | | * AVX2 implementation for 8bpc loopfilter function |
| 90 | | * native alpha channel (transparency) support for VP8/9 decoders |
| 91 | | * tile threading support |
| 92 | | |
| 93 | | '''Prerequisites:''' C coding skills, x86 assembly skills (or the will to learn), basic familiarity with git. The AVX2 tasks require access to a Haswell or better x86 machine. (ask kierank on irc if you need access to one) |
| 94 | | |
| 95 | | '''Qualification Task:''' Finish one task from the list in expected results. |
| 96 | | |
| 97 | | '''Mentor:''' Ronald S. Bultje (''BBB'' in #ffmpeg-devel on Freenode IRC, rsbultje@gmail.com) |
| 98 | | |
| 99 | | '''Backup mentor:''' Rostislav Pehlivanov (''atomnuker'' in #ffmpeg-devel on Freenode IRC, atomnuker@gmail.com) |
| 100 | | |
| 101 | | == Ambisonic decoder == |
| 102 | | |
| 103 | | '''Description:''' Ambisonics is a full-sphere surround sound technique: in addition to the horizontal plane, it covers sound sources above and below the listener. |
| 104 | | |
| 105 | | '''Expected results:''' Fully featured decoder implemented as filter in libavfilter. |
| 106 | | |
| 107 | | '''Prerequisites:''' C coding skills, basic familiarity with git. |
| 108 | | |
| 109 | | '''Qualification Task:''' Implement simple square decoder. |
| 110 | | |
| 111 | | '''Alternative Qualification Task:''' Implement one of shelf filters as required by ambisonic decoding. |
| 112 | | |
| 113 | | '''Mentor:''' Paul B Mahol (''durandal_1707'' in #ffmpeg-devel on Freenode IRC, onemda@gmail.com) |
| 114 | | |
| 115 | | '''Backup mentor:''' Rostislav Pehlivanov (''atomnuker'' in #ffmpeg-devel on Freenode IRC, atomnuker@gmail.com) |
| 116 | | |
| 152 | | == Minterpolate improvements == |
| 153 | | |
| 154 | | '''Description:''' Improve the quality of the minterpolate filter by researching and implementing better algorithms. |
| 155 | | |
| 156 | | '''Expected results:''' Significant reduction of subjective artifacts and significantly improved objective quality of videos created with minterpolate. Subtasks: |
| 157 | | * Comparission of the existing minterpolate implementation against other implementations (which are freely accessible/testable) |
| 158 | | * Finding the best state of the art algorithms in the academic literature |
| 159 | | * Finding the best competing implementations |
| 160 | | * Implementing and testing the best solutions found in FFmpegs minterpolate |
| 161 | | |
| 162 | | '''Prerequisites:''' C coding skills, knowledge of motion estimation, motion compensation and optical flow algorithms. basic familiarity with git. |
| 163 | | |
| 164 | | '''Qualification Task:''' Demonstrate that you are able to improve the quality of minterpolate. |
| 165 | | |
| 166 | | '''Mentor:''' Michael Niedermayer (''michaelni'' in #ffmpeg-devel on Freenode IRC, michael@niedermayer.cc) |
| 167 | | |
| 168 | | == Vorbis encoder improvements == |
| 169 | | |
| 170 | | '''Description:''' FFmpeg has a native Vorbis encoder which is known to have quality issues ever since it was implemented. |
| 171 | | |
| 172 | | '''Expected results:''' Improve FFmpeg's Vorbis encoder: |
| 173 | | * Add transient detection |
| 174 | | * Switch transform sizes based on lambda |
| 175 | | * Improve the rate control system |
| 176 | | * Use the existing AAC psychoacoustic system to improve the quality |
| 177 | | * Write FATE tests to improve test coverage |
| 178 | | |
| 179 | | '''Prerequisites:''' C coding skills, basic familiarity with git. |
| 180 | | |
| 181 | | '''Qualification Task:''' Use the existing AAC psychoacoustic system to detect transients |
| 182 | | |
| 183 | | '''Mentor:''' Rostislav Pehlivanov (''atomnuker'' in #ffmpeg-devel on Freenode IRC, atomnuker@gmail.com) |
| 184 | | |
| 185 | | '''Backup mentor:''' TBA |