[FFmpeg-devel] (no subject)

Niklas Haas ffmpeg at haasn.xyz
Tue May 27 10:55:19 EEST 2025


Changes since v2:

- refactored x86 loop to reduce per-line overhead and simplify the code;
  eliminate SSE instructions from the process function entirely and also
  reduce the number of allocated registers by one
- remove alignment macro from SwsOpExec and align usage instead
- chenge pixel_bits_in/out to block_size_in/out in SwsOpExec, and add
  precomputed pointer bump fields
- fix SwsOpExec size assertion
- reduce storage size of several SwsOp types
- simplify SwsOpEntry and massively reduce its storage size, from ~300
  bytes to around 50 bytes per entry
- add lots of comments and documentation, especially for the x86 backend and
  the shuffle solver
- eliminate initializer field override warning from x86 backend
- switch from call/ret to jmp/jmp inside x86 op chain; massively speeds up
  some chains on hardware with dedicated loop buffers
- add more vzeroupper calls to break dependencies throughout the code

This branch is ~18% faster across the board, as a result of:
- adding vzeroupper: ~12%
- eliminating call/ret: ~4%
- simplifying the x86 loop: ~1%

The amount of rodata used has been reduced by ~80%.

The latest branch can be found here:
  https://github.com/haasn/FFmpeg/tree/swscale6_clean



More information about the ffmpeg-devel mailing list