| 177 | | * **Compensation**: 30,000 EUR |
| 178 | | |
| 179 | | * **Time estimate**: 7-8 weeks = 320 hours (full-time) |
| | 177 | * **Compensation**: 21,000 EUR |
| | 178 | |
| | 179 | * **Time estimate**: 4-5 weeks = 200 hours (full-time) |
| | 180 | |
| | 181 | * **Delivery date**: 3 months after kick-off |
| | 182 | |
| | 183 | * **Completion improvements**: Completing this milestone will result in the swscale library being able to act upon Vulkan frames, covering enough functionality to permit integration into specialized use-cases, such as live streaming or desktop recording. |
| | 184 | |
| | 185 | ===== Complete the Vulkan implementation |
| | 186 | |
| | 187 | * **Description**: This milestone will complete the implementation, having feature parity with the C implementation. |
| | 188 | |
| | 189 | * **Deliverables**: A pull request to implement the functional backend, is either merged or has received at least one merge approval. |
| | 190 | |
| | 191 | * **Compensation**: 11,000 EUR |
| | 192 | |
| | 193 | * **Time estimate**: 4-5 weeks = 200 hours (full-time) |
| | 194 | |
| | 195 | * **Delivery date**: 4.5 months after kick-off |
| | 196 | |
| | 197 | * **Completion improvements**: Completing this milestone will enable the Vulkan backend to perform efficiently and quickly with no CPU conversions. This will expand the library capabilities to not just desktop machines, but also low-power embedded devices, and realtime GPU video transcoding workloads. |
| | 198 | |
| | 199 | === FFv1 Vulkan improvements === |
| | 200 | |
| | 201 | '''Description:''' The Vulkan-based GPU implementation of the FFv1 codec has allowed users to quickly encode and decode on consumer GPUs. However, FFv1 codec continues to be developed, with new features being added. Recently, color remapping and floating-point support (16-bit and 32-bit) was added to version 4 of the codec. The GPU implementation of the codec does not yet support either. This project will ensure the GPU implementation remains in sync with the CPU, and that optimizations will be ported between both implementations. |
| | 202 | |
| | 203 | '''Expected results:''' FFv1's GPU implementation will implement the color lookup table, 16-bit floating-point video, 32-bit floating-point video, and where possible, optimizations will be back-ported to the CPU implementation. |
| | 204 | |
| | 205 | '''Duration:''' 5 Months |
| | 206 | |
| | 207 | '''Payment:''' 32,000 EUR |
| | 208 | |
| | 209 | '''Developer:''' Lynne |
| | 210 | |
| | 211 | ==== Developer background and contact information |
| | 212 | |
| | 213 | Lynne <dev@lynne.ee>. Based in Paris, FFmpeg developer for over 7 years and a thousand commits. Has written multiple decoders and encoders for FFmpeg, as well as the entire Vulkan infrastructure. Member of Khronos, developing the Vulkan Video specifications, and the AOM, working on new codecs. |
| | 214 | |
| | 215 | ==== Milestones |
| | 216 | |
| | 217 | ===== 16-bit floating-point video decoding and encoding |
| | 218 | |
| | 219 | * **Description**: Minimum viable implementation of 16-bit floating-point decoding and decoding in the Vulkan decoder. |
| | 220 | |
| | 221 | * **Deliverables**: A pull request to implement the feature, passing all tests, is either merged or has received at least one merge approval. |
| | 222 | |
| | 223 | * **Compensation**: 12,000 EUR |
| | 224 | |
| | 225 | * **Time estimate**: 5-6 weeks = 200 hours (full-time) |
| | 226 | |
| | 227 | * **Delivery date**: 3 months after kick-off |
| | 228 | |
| | 229 | * **Completion improvements**: Completion of this milestone would allow for the FFv1 Vulkan decoder to be used in professional cinema/CGI productions, where linear 16-bit floating point video is used during pre-production. This will help expand FFv1 to not just archival, but video productions as well. |
| | 230 | |
| | 231 | ===== 32-bit floating-point video decoding |
| | 232 | |
| | 233 | * **Description**: More advanced version, built upon the previous work, to allow the decoder to correctly decode 32-bit floating point video. |
| | 234 | |
| | 235 | * **Deliverables**: A pull request to implement the feature, passing all tests, is either merged or has received at least one merge approval. |
| | 236 | |
| | 237 | * **Compensation**: 10,000 EUR |
| | 238 | |
| | 239 | * **Time estimate**: 4 weeks = 160 hours (full-time) |
| 183 | | * **Completion improvements**: Completing this milestone will result in the swscale library being able to act upon Vulkan frames, enabling it to perform efficiently and quickly with no CPU conversions. This will expand the library capabilities to not just desktop machines, but also low-power embedded devices, and realtime GPU video transcoding workloads. |
| 184 | | |
| 185 | | === FFv1 Vulkan improvements === |
| 186 | | |
| 187 | | '''Description:''' The Vulkan-based GPU implementation of the FFv1 codec has allowed users to quickly encode and decode on consumer GPUs. However, FFv1 codec continues to be developed, with new features being added. Recently, color remapping and floating-point support (16-bit and 32-bit) was added to version 4 of the codec. The GPU implementation of the codec does not yet support either. This project will ensure the GPU implementation remains in sync with the CPU, and that optimizations will be ported between both implementations. |
| 188 | | |
| 189 | | '''Expected results:''' FFv1's GPU implementation will implement the color lookup table, 16-bit floating-point video, 32-bit floating-point video, and where possible, optimizations will be back-ported to the CPU implementation. |
| | 243 | * **Completion improvements**: Completing this milestone will allow to accommodate for the recent trend in video and CGI productions switching to 32-bit video, as 16-bit linear video can reach limits with high dynamic range video. |
| | 244 | |
| | 245 | ===== 32-bit floating-point video encoding |
| | 246 | |
| | 247 | * **Description**: Same as the previous milestone, for the encoder. 32-bit floating point video encoding support would be added to the encoder. |
| | 248 | |
| | 249 | * **Deliverables**: A pull request to implement the feature, passing all tests, is either merged or has received at least one merge approval. |
| | 250 | |
| | 251 | * **Compensation**: 10,000 EUR |
| | 252 | |
| | 253 | * **Time estimate**: 4 weeks = 160 hours (full-time) |
| | 254 | |
| | 255 | * **Delivery date**: 5 months after kick-off |
| | 256 | |
| | 257 | * **Completion improvements**: This milestone will complete the Vulkan implementation's feature parity with the C implementation, so that the new FFv1 features are usable in practical applications, where speed and efficiency matter. |
| | 258 | |
| | 259 | === FFv1 Bayer coding support === |
| | 260 | |
| | 261 | '''Description:''' FFv1 is an important standard for archival. However, it is capable of more than just long-term compression. The recent GPU implementation has demonstrated that its sufficiently fast to be used as a RAW format, allowing NLEs to work in a fully lossless flow. This project will implement support for common Bayer formats, both for encoding and decoding, along with metadata, allowing FFv1 to be used for professional productions. |
| | 262 | |
| | 263 | '''Expected results:''' FFv1 is able to encode and decode Bayer pixel ordering, both on the GPU and CPU implementations, with the necessary metadata information carried to permit accurate color reconstruction and flexibility when color grading and mastering. |
| 211 | | * **Time estimate**: 4-5 weeks = 180 hours (full-time) |
| 212 | | |
| 213 | | * **Delivery date**: 2 months after kick-off |
| 214 | | |
| 215 | | * **Completion improvements**: Completion of this milestone would allow for the FFv1 Vulkan decoder to be used in professional cinema/CGI productions, where linear 16-bit floating point video is used during pre-production. This will help expand FFv1 to not just archival, but video productions as well. |
| 216 | | |
| 217 | | ===== 32-bit floating-point video decoding |
| 218 | | |
| 219 | | * **Description**: More advanced version, built upon the previous work, to allow the decoder to correctly decode 32-bit floating point video. |
| | 285 | * **Time estimate**: 3-4 weeks = 180 hours (full-time) |
| | 286 | |
| | 287 | * **Delivery date**: 3 months after kick-off |
| | 288 | |
| | 289 | * **Completion improvements**: Completing this milestone will expand FFv1's archival capabilities to handle not just produced video, but also direct camera footage, as well as film scanners and scientific applications. |
| | 290 | |
| | 291 | ===== FFv1 Vulkan Bayer video encoding and decoding |
| | 292 | |
| | 293 | * **Description**: Implementation of Bayer encoding and decoding for the Vulkan FFv1 encoder and decoders. |
| 225 | | * **Time estimate**: 4 weeks = 160 hours (full-time) |
| 226 | | |
| 227 | | * **Delivery date**: 3 months after kick-off |
| 228 | | |
| 229 | | * **Completion improvements**: Completing this milestone will allow to accommodate for the recent trend in video and CGI productions switching to 32-bit video, as 16-bit linear video can reach limits with high dynamic range video. |
| 230 | | |
| 231 | | ===== 32-bit floating-point video encoding |
| 232 | | |
| 233 | | * **Description**: Same as the previous milestone, for the encoder. 32-bit floating point video encoding support would be added to the encoder. |
| 234 | | |
| 235 | | * **Deliverables**: A pull request to implement the feature, passing all tests, is either merged or has received at least one merge approval. |
| 236 | | |
| 237 | | * **Compensation**: 10,000 EUR |
| 238 | | |
| 239 | | * **Time estimate**: 4 weeks = 160 hours (full-time) |
| | 299 | * **Time estimate**: 5-6 weeks = 220 hours (full-time) |
| 242 | | |
| 243 | | * **Completion improvements**: This milestone will complete the Vulkan implementation's feature parity with the C implementation, so that the new FFv1 features are usable in practical applications, where speed and efficiency matter. |
| 244 | | |
| 245 | | === FFv1 Bayer coding support === |
| 246 | | |
| 247 | | '''Description:''' FFv1 is an important standard for archival. However, it is capable of more than just long-term compression. The recent GPU implementation has demonstrated that its sufficiently fast to be used as a RAW format, allowing NLEs to work in a fully lossless flow. This project will implement support for common Bayer formats, both for encoding and decoding, along with metadata, allowing FFv1 to be used for professional productions. |
| 248 | | |
| 249 | | '''Expected results:''' FFv1 is able to encode and decode Bayer pixel ordering, both on the GPU and CPU implementations, with the necessary metadata information carried to permit accurate color reconstruction and flexibility when color grading and mastering. |
| 250 | | |
| 251 | | '''Duration:''' 3 Months |
| 252 | | |
| 253 | | '''Payment:''' 22,000 EUR |
| 254 | | |
| 255 | | '''Developer:''' Lynne |
| 256 | | |
| 257 | | ==== Developer background and contact information |
| 258 | | |
| 259 | | Lynne <dev@lynne.ee>. Based in Paris, FFmpeg developer for over 7 years and a thousand commits. Has written multiple decoders and encoders for FFmpeg, as well as the entire Vulkan infrastructure. Member of Khronos, developing the Vulkan Video specifications, and the AOM, working on new codecs. |
| 260 | | |
| 261 | | ==== Milestones |
| 262 | | |
| 263 | | ===== FFv1 Bayer video encoding and decoding |
| 264 | | |
| 265 | | * **Description**: Minimum implementation of Bayer encoding and decoding for the CPU encoder. Both have to be added at the same time as this is adding new features to the codec. |
| 266 | | |
| 267 | | * **Deliverables**: A pull request to implement the feature, passing all tests, is either merged or has received at least one merge approval. |
| 268 | | |
| 269 | | * **Compensation**: 12,000 EUR |
| 270 | | |
| 271 | | * **Time estimate**: 3-4 weeks = 180 hours (full-time) |
| 272 | | |
| 273 | | * **Delivery date**: 2 months after kick-off |
| 274 | | |
| 275 | | * **Completion improvements**: Completing this milestone will expand FFv1's archival capabilities to handle not just produced video, but also direct camera footage, as well as film scanners and scientific applications. |
| 276 | | |
| 277 | | ===== FFv1 Vulkan Bayer video encoding and decoding |
| 278 | | |
| 279 | | * **Description**: Implementation of Bayer encoding and decoding for the Vulkan FFv1 encoder and decoders. |
| 280 | | |
| 281 | | * **Deliverables**: A pull request to implement the feature, passing all tests, is either merged or has received at least one merge approval. |
| 282 | | |
| 283 | | * **Compensation**: 10,000 EUR |
| 284 | | |
| 285 | | * **Time estimate**: 5-6 weeks = 220 hours (full-time) |
| 286 | | |
| 287 | | * **Delivery date**: 3 months after kick-off |