[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