Changes between Version 44 and Version 45 of SponsoringPrograms/STF/2025


Ignore:
Timestamp:
Nov 27, 2025, 10:26:36 PM (7 months ago)
Author:
Lynne
Comment:

Balance the Vulkan milestones for the first quarter

Legend:

Unmodified
Added
Removed
Modified
  • SponsoringPrograms/STF/2025

    v44 v45  
    145145'''Duration:''' 4.5 Months
    146146
    147 '''Payment:''' 40,000 EUR
     147'''Payment:''' 42,000 EUR
    148148
    149149'''Developer:''' Lynne
     
    169169* **Completion improvements**: Completion of this milestone will result in the establishing a baseline foundation that can be built upon, and extended and copied to other backends than only Vulkan.
    170170
    171 ===== Implement currently supported primitives in GLSL
    172 
    173 * **Description**: This milestone will implement current primitives/codelets into GLSL, building upon the previous milestone, to complete the implementation.
     171===== Baseline Vulkan implementation
     172
     173* **Description**: This milestone will implement enough functionality to cover the most used swscale features.
    174174
    175175* **Deliverables**: A pull request to implement the functional backend, is either merged or has received at least one merge approval.
    176176
    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
     213Lynne <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)
    180240
    181241* **Delivery date**: 4 months after kick-off
    182242
    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.
    190264
    191265'''Duration:''' 4 Months
    192266
    193 '''Payment:''' 32,000 EUR
     267'''Payment:''' 22,000 EUR
    194268
    195269'''Developer:''' Lynne
     
    201275==== Milestones
    202276
    203 ===== 16-bit floating-point video decoding and encoding
    204 
    205 * **Description**: Minimum viable implementation of 16-bit floating-point decoding and decoding in the Vulkan decoder.
     277===== FFv1 Bayer video encoding and decoding
     278
     279* **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.
    206280
    207281* **Deliverables**: A pull request to implement the feature, passing all tests, is either merged or has received at least one merge approval.
     
    209283* **Compensation**: 12,000 EUR
    210284
    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.
    220294
    221295* **Deliverables**: A pull request to implement the feature, passing all tests, is either merged or has received at least one merge approval.
     
    223297* **Compensation**: 10,000 EUR
    224298
    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)
    240300
    241301* **Delivery date**: 4 months after kick-off
    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
    288302
    289303* **Completion improvements**: Completion of this milestone will feature-complete the Vulkan implementation with the C implementation, enabling FFv1 to be used practically, where compression of camera footage or sensor data is required with realtime or near-realtime performance.