Changes between Version 27 and Version 28 of SponsoringPrograms/STF/2025


Ignore:
Timestamp:
Sep 7, 2025, 7:52:49 PM (10 months ago)
Author:
Niklas Haas
Comment:

Reword / update swscale proposal

Legend:

Unmodified
Added
Removed
Modified
  • SponsoringPrograms/STF/2025

    v27 v28  
    281281**One line summary:** Port remaining "legacy" code paths from libswscale to the new architecture.
    282282
    283 **Description:** Libswscale is the central image scaling and format conversion component used by the FFmpeg multimedia set of libraries. "Modern" libswscale is the name I have given to the new set of APIs and internal designs (SwsContext, SwsGraph and SwsOps) that were successfully introduced as part of the 2024 "swscale modernization" STF project. The objective of this work is to complete this transition, by porting the remaining code paths (notably, scaling support and color conversion) to the new architecture, thus allowing the "legacy" code paths to be deprecated and phased out of FFmpeg.
     283**Description:** *libswscale* is the central image scaling and format conversion component used by the FFmpeg multimedia set of libraries. As was identified in last year's STF project ("swscale modernization"), the current libswscale core still contains a substantial amount of very old, difficult to mantain, and often buggy legacy code. There has been an ongoing effort to rewrite these core components under a modernized set of abstractions, introduced as part of that project. The objective of this work is to complete this transition by porting the remaining code paths (notably, scaling support and color conversion) to the newly introduced APIs, thus allowing the "legacy" code paths to be deprecated and phased out of FFmpeg.
    284284
    285285**Duration:** 8 months
     
    289289**Developer:** Niklas Haas <ffmpeg@haasn.xyz>
    290290
     291I work in Germany, and have been an active contributor to FFmpeg since ca. 2021, with an extensive history in open-source multimedia going back to around 2014. I have spent about 5 years performing regular contracting work for FFmpeg, VLC and libplacebo. I also participated in last year's STF 2024 application for FFmpeg.
     292
    291293==== Milestones
    292294
    293295===== Develop the SwsOps architecture to support scaling
    294296
    295 **Description:** The existing SwsOps architecture will need to be updated to support scaling operations. This includes necessary R&D and testing to find a design that scales well and does not introduce performance regressions versus the legacy code paths.
    296 
    297 **Deliverables:** An implementation of the necessary new APIs and high-level logic, alongside a reference implementation in C.
     297**Description:** The existing SwsOps architecture will need to be updated to support scaling operations. This includes the necessary regression testing work needed to ensure the new design scales well and does not introduce a performance and/or quality regression versus the legacy code paths.
     298
     299**Deliverables:** An implementation of the necessary new APIs and high-level logic, alongside a reference implementation in C, is either merged or has received at least one merge approval.
    298300
    299301**Compensation:** 20,000 EUR
     
    303305**Description:** After expanding the SwsOps architecture, the x86_64 backend will need to be updated to support the new scaling operations. This includes implementing optimized versions of the new APIs using SIMD instructions.
    304306
    305 **Deliverables:** An implementation, targeting at least SSE4, AVX2 and AVX-512, of the newly added APIs in Milestone 1.
     307**Deliverables:** An implementation, targeting at least SSE4, AVX2 and AVX-512, of the newly added APIs in Milestone 1, is either merged or has received at least one merge approval.
    306308
    307309**Compensation:** 20,000 EUR
     
    311313**Description:** Some, more difficult, formats, which were previously handled by the legacy code paths, are not yet supported by the SwsOps backend. This notably includes 96/128-bit formats, XYZ, Bayer and packed/subsampled formats (e.g. YUYV).
    312314
    313 **Deliverables:** An implementation of the necessary APIs and high-level logic, alongside a reference implementation in C, and possibly an x86_64 code path for the most important formats.
     315**Deliverables:** An implementation of the necessary APIs and high-level logic, alongside a reference implementation in C, and possibly an x86_64 code path for the most important formats, is either merged or has received at least one merge approval.
    314316
    315317**Compensation:** 20,000 EUR
     
    319321**Description:** Some format conversions currently require conversion between difference colorspaces. This operation is currently handled in a very inefficient manner, as a result of predating the SwsOps design. This layer should be updated to use the new architecture, which will make it vastly more efficient.
    320322
    321 **Deliverables:** The color management layer successfully integrated into the SwsOps design.
     323**Deliverables:** A pull request integrating the color management layer into the SwsOps design, is either merged or has received at least one merge approval.
    322324
    323325**Compensation:** 10,000 EUR