| | 235 | === libswscale modernization (part 2) |
| | 236 | |
| | 237 | **One line summary:** Port remaining "legacy" code paths from libswscale to the new architecture. |
| | 238 | |
| | 239 | **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. |
| | 240 | |
| | 241 | **Duration:** 8 months |
| | 242 | |
| | 243 | **Payment:** 70.000 EUR |
| | 244 | |
| | 245 | **Developer:** Niklas Haas <ffmpeg@haasn.xyz> |
| | 246 | |
| | 247 | ==== Milestones |
| | 248 | |
| | 249 | ===== Develop the SwsOps architecture to support scaling |
| | 250 | |
| | 251 | **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. |
| | 252 | |
| | 253 | **Deliverables:** An implementation of the necessary new APIs and high-level logic, alongside a reference implementation in C. |
| | 254 | |
| | 255 | **Compensation:** 20,000 EUR |
| | 256 | |
| | 257 | ===== Updating x86_64 backend |
| | 258 | |
| | 259 | **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. |
| | 260 | |
| | 261 | **Deliverables:** An implementation, targeting at least SSE4, AVX2 and AVX-512, of the newly added APIs in Milestone 1. |
| | 262 | |
| | 263 | **Compensation:** 20,000 EUR |
| | 264 | |
| | 265 | ===== Remaining format coverage |
| | 266 | |
| | 267 | **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). |
| | 268 | |
| | 269 | **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. |
| | 270 | |
| | 271 | **Compensation:** 20,000 EUR |
| | 272 | |
| | 273 | ===== Properly integrate CMM layer |
| | 274 | |
| | 275 | **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. |
| | 276 | |
| | 277 | **Deliverables:** The color management layer successfully integrated into the SwsOps design. |
| | 278 | |
| | 279 | **Compensation:** 10,000 EUR |