| 110 | | '''Mentor:''' pal@palemieux.com |
| | 110 | '''Mentor:''' Pierre-Anthony Lemieux (pal@palemieux.com) |
| | 111 | |
| | 112 | '''Backup Mentor:''' Chris Hafey (cehafey@amazon.com) |
| | 113 | |
| | 114 | '''Duration:''' 350 hours |
| | 115 | |
| | 116 | |
| | 117 | == GPU (CUDA) accelerate common software video filters == |
| | 118 | |
| | 119 | '''Description:''' FFmpeg already has a couple CUDA based video filters, but for a lot of commonly used functionality you have to fall back to software processing. A lot of existing software filters can be ported to CUDA more or less directly. Or completely new ones can be implemented. |
| | 120 | |
| | 121 | '''Expected results:''' Port or create from scratch one or multiple CUDA based video filters. The number of filters entirely depends on the difficulty and complexity of the filters chosen. |
| | 122 | |
| | 123 | '''Prerequisites:''' Access to the necessary Hardware. Basic understanding of git and Makefiles. Intermediate to Good C skills and at least a basic understanding of C++. Understanding of filtering algorithms and how shaders/CUDA kernels operate on GPUs. |
| | 124 | |
| | 125 | '''Difficulty:''' Medium |
| | 126 | |
| | 127 | '''Qualification Task:''' Port a software filter of your choice to CUDA. Does not need to be fully featured(no extensive pixel format support or options). |
| | 128 | |
| | 129 | '''Mentor:''' Timo Rothenpieler (''BtbN'' in #ffmpeg-devel on Libera.Chat IRC, timo@rothenpieler.org) |
| | 133 | '''Duration:''' 175 |
| | 134 | |
| | 135 | |
| | 136 | == FATE Tests for Hardware(CUDA/NVDEC)-Accelerated filters/decoders == |
| | 137 | |
| | 138 | '''Description:''' As of right now, no tests exists for any of the CUDA/NVDEC accelerated filters and decoders. This is quite unfortunate, since they can end up with unintended changes in behavior just like anything else. |
| | 139 | |
| | 140 | '''Expected results:''' Write FATE tests that cover one or several of the CUDA/NVDEC based filters and/or decoders, depending on complexity and the necessary initial boilerplate. The focus on which decoders/filters to cover is free to decide, since creating the initial boilerplate to run those tests will be a large part of the project. |
| | 141 | |
| | 142 | '''Prerequisites:''' Access to the necessary Hardware. Basic understanding of git, good familiarity with Makefiles and C. |
| | 143 | |
| | 144 | '''Difficulty:''' Medium |
| | 145 | |
| | 146 | '''Qualification Task:''' Outline how testing Hardware-Accelerated filters could be tested and implement initial boilerplate and at least one simple test. |
| | 147 | |
| | 148 | '''Mentor:''' Timo Rothenpieler (''BtbN'' in #ffmpeg-devel on Libera.Chat IRC, timo@rothenpieler.org) |
| | 149 | |
| | 150 | '''Backup Mentor:''' TBD |
| | 151 | |
| | 152 | '''Duration:''' 175 |
| | 153 | |
| | 154 | ---- |
| | 155 | = Unmentored Projects = |
| | 156 | |
| | 157 | This is a list of projects that students are encouraged to consider if a mentored project is unavailable or not within the students skill or interests. The student will have to find a mentor for the project. A student can also [#YourOwnProjectIdea propose their own project]. |
| | 158 | |
| | 159 | |
| | 160 | == Checkasm == |
| | 161 | |
| | 162 | '''Description:''' Assembly functions in FFmpeg are not unit tested like they are in x264 or dav1d. |
| | 163 | |
| | 164 | '''Expected results:''' Add tests for most asm functions which are not tested. Less if this is 175 hour duration. |
| | 165 | |
| | 166 | '''Prerequisites:''' Good C coding skills, basic familiarity with Git. Some x86 assembly knowledge can be advantageous. |
| | 167 | |
| | 168 | '''Difficulty:''' Easy |
| | 169 | |
| | 170 | '''Qualification Task:''' Add tests for 2 separate asm functions, and pass review on the ffmpeg-devel mailing list. To pass qualification the code must be accepted into git master. |
| | 171 | |
| | 172 | '''Mentor:''' tbc |
| | 173 | |
| | 174 | '''Backup Mentor:''' tbc |
| | 175 | |
| | 176 | '''Duration:''' 175 or 350 hours |
| | 177 | |
| | 178 | |
| | 179 | == ffcall == |
| | 180 | |
| | 181 | '''Description:''' Simple tool which shows how to use libavcodec & libavformat for creating a 2 way video conference tool. |
| | 182 | |
| | 183 | '''Expected results:''' You will write from scratch a tool which allows 2 or more people to communicate with video and audio across the network. The tool can reuse parts from the codebase like ffplay or other input/output related code. The tool also has to use strong end to end encryption. |
| | 184 | |
| | 185 | '''Prerequisites:''' Good C coding skills, basic familiarity with Git. Experience with writing software communicating over the network. |
| | 186 | |
| | 187 | |
| | 188 | '''Difficulty:''' Hard |
| | 189 | |
| | 190 | '''Qualification Task:''' Write a one way audio or video (not both needed) communication tool with libavcodec & libavformat. The tool must pass code review for the qualification to pass. |
| | 191 | |
| | 192 | '''Mentor:''' tbc |
| | 193 | |
| | 194 | '''Backup Mentor:''' tbc |
| | 195 | |
| 117 | | == GPU (CUDA) accelerate common software video filters == |
| 118 | | |
| 119 | | '''Description:''' FFmpeg already has a couple CUDA based video filters, but for a lot of commonly used functionality you have to fall back to software processing. A lot of existing software filters can be ported to CUDA more or less directly. Or completely new ones can be implemented. |
| 120 | | |
| 121 | | '''Expected results:''' Port or create from scratch one or multiple CUDA based video filters. The number of filters entirely depends on the difficulty and complexity of the filters chosen. |
| 122 | | |
| 123 | | '''Prerequisites:''' Access to the necessary Hardware. Basic understanding of git and Makefiles. Intermediate to Good C skills and at least a basic understanding of C++. Understanding of filtering algorithms and how shaders/CUDA kernels operate on GPUs. |
| 124 | | |
| 125 | | '''Difficulty:''' Medium |
| 126 | | |
| 127 | | '''Qualification Task:''' Port a software filter of your choice to CUDA. Does not need to be fully featured(no extensive pixel format support or options). |
| 128 | | |
| 129 | | '''Mentor:''' Timo Rothenpieler (''BtbN'' in #ffmpeg-devel on Libera.Chat IRC, timo@rothenpieler.org) |
| 130 | | |
| 131 | | '''Backup Mentor:''' TBD |
| 132 | | |
| 133 | | '''Duration:''' 175 |
| 134 | | |
| 135 | | |
| 136 | | == FATE Tests for Hardware(CUDA/NVDEC)-Accelerated filters/decoders == |
| 137 | | |
| 138 | | '''Description:''' As of right now, no tests exists for any of the CUDA/NVDEC accelerated filters and decoders. This is quite unfortunate, since they can end up with unintended changes in behavior just like anything else. |
| 139 | | |
| 140 | | '''Expected results:''' Write FATE tests that cover one or several of the CUDA/NVDEC based filters and/or decoders, depending on complexity and the necessary initial boilerplate. The focus on which decoders/filters to cover is free to decide, since creating the initial boilerplate to run those tests will be a large part of the project. |
| 141 | | |
| 142 | | '''Prerequisites:''' Access to the necessary Hardware. Basic understanding of git, good familiarity with Makefiles and C. |
| 143 | | |
| 144 | | '''Difficulty:''' Medium |
| 145 | | |
| 146 | | '''Qualification Task:''' Outline how testing Hardware-Accelerated filters could be tested and implement initial boilerplate and at least one simple test. |
| 147 | | |
| 148 | | '''Mentor:''' Timo Rothenpieler (''BtbN'' in #ffmpeg-devel on Libera.Chat IRC, timo@rothenpieler.org) |
| 149 | | |
| 150 | | '''Backup Mentor:''' TBD |
| 151 | | |
| 152 | | '''Duration:''' 175 |
| 153 | | |
| 154 | | ---- |
| 155 | | = Unmentored Projects = |
| 156 | | |
| 157 | | This is a list of projects that students are encouraged to consider if a mentored project is unavailable or not within the students skill or interests. The student will have to find a mentor for the project. A student can also [#YourOwnProjectIdea propose their own project]. |
| 158 | | |
| 159 | | |
| 160 | | == Checkasm == |
| 161 | | |
| 162 | | '''Description:''' Assembly functions in FFmpeg are not unit tested like they are in x264 or dav1d. |
| 163 | | |
| 164 | | '''Expected results:''' Add tests for most asm functions which are not tested. Less if this is 175 hour duration. |
| 165 | | |
| 166 | | '''Prerequisites:''' Good C coding skills, basic familiarity with Git. Some x86 assembly knowledge can be advantageous. |
| 167 | | |
| 168 | | '''Difficulty:''' Easy |
| 169 | | |
| 170 | | '''Qualification Task:''' Add tests for 2 separate asm functions, and pass review on the ffmpeg-devel mailing list. To pass qualification the code must be accepted into git master. |
| 171 | | |
| 172 | | '''Mentor:''' tbc |
| 173 | | |
| 174 | | '''Backup Mentor:''' tbc |
| | 199 | == Template Project == |
| | 200 | |
| | 201 | '''Description:''' Template Description |
| | 202 | |
| | 203 | '''Expected results:''' Template results |
| | 204 | |
| | 205 | '''Prerequisites:''' Template prequisites |
| | 206 | |
| | 207 | '''Difficulty:''' |
| | 208 | |
| | 209 | '''Qualification Task:''' Template Qualification Task |
| | 210 | |
| | 211 | '''Mentor:''' someone @ somehwere.net |
| | 212 | |
| | 213 | '''Backup Mentor:''' someoneelse @ somewhere.net |
| 179 | | == ffcall == |
| 180 | | |
| 181 | | '''Description:''' Simple tool which shows how to use libavcodec & libavformat for creating a 2 way video conference tool. |
| 182 | | |
| 183 | | '''Expected results:''' You will write from scratch a tool which allows 2 or more people to communicate with video and audio across the network. The tool can reuse parts from the codebase like ffplay or other input/output related code. The tool also has to use strong end to end encryption. |
| 184 | | |
| 185 | | '''Prerequisites:''' Good C coding skills, basic familiarity with Git. Experience with writing software communicating over the network. |
| 186 | | |
| 187 | | |
| 188 | | '''Difficulty:''' Hard |
| 189 | | |
| 190 | | '''Qualification Task:''' Write a one way audio or video (not both needed) communication tool with libavcodec & libavformat. The tool must pass code review for the qualification to pass. |
| 191 | | |
| 192 | | '''Mentor:''' tbc |
| 193 | | |
| 194 | | '''Backup Mentor:''' tbc |
| 195 | | |
| 196 | | '''Duration:''' 350 hours |
| 197 | | |
| 198 | | |
| 199 | | == Template Project == |
| 200 | | |
| 201 | | '''Description:''' Template Description |
| 202 | | |
| 203 | | '''Expected results:''' Template results |
| 204 | | |
| 205 | | '''Prerequisites:''' Template prequisites |
| 206 | | |
| 207 | | '''Difficulty:''' |
| 208 | | |
| 209 | | '''Qualification Task:''' Template Qualification Task |
| 210 | | |
| 211 | | '''Mentor:''' someone @ somehwere.net |
| 212 | | |
| 213 | | '''Backup Mentor:''' someoneelse @ somewhere.net |
| 214 | | |
| 215 | | '''Duration:''' 175 or 350 hours |
| 216 | | |
| 217 | | |