Change #272239
| Category | ffmpeg |
| Changed by | Niklas Haas <git@haasn.dev> |
| Changed at | Tue 23 Jun 2026 13:48:13 |
| Repository | https://git.ffmpeg.org/ffmpeg.git |
| Project | ffmpeg |
| Branch | master |
| Revision | b99247953902b62986801053a9f252dc8fa11a75 |
Comments
swscale/ops: keep track of copied/cleared components
These represent components which have not (yet) been modified from their
input values (i.e. after a read, or clear). Such components can be
basically passed through via a refcopy (where applicable), as well as helping
to distinguish dissimilar types of plane for (plane splitting).
Generates benign diffs like:
gray 16x16 -> yuv444p 16x16:
- [ u8 +XXX] SWS_OP_READ : 1 elem(s) planar >> 0
+ [ u8 =XXX] SWS_OP_READ : 1 elem(s) planar >> 0
min: {0 _ _ _}, max: {255 _ _ _}
- [ u8 +XXX] SWS_OP_CONVERT : u8 -> f32
+ [ u8 =XXX] SWS_OP_CONVERT : u8 -> f32
min: {0 _ _ _}, max: {255 _ _ _}
[f32 .XXX] SWS_OP_LINEAR : luma [[73/85 0 0 0 16] [0 1 0 0 0] [0 0 1 0 0] [0 0 0 1 0]]
min: {16 _ _ _}, max: {235 _ _ _}
[f32 .XXX] SWS_OP_DITHER : 16x16 matrix + {0 -1 -1 -1}
min: {16.001953 _ _ _}, max: {235.998047 _ _ _}
[f32 +XXX] SWS_OP_CONVERT : f32 -> u8
min: {16 _ _ _}, max: {235 _ _ _}
- [ u8 +++X] SWS_OP_CLEAR : {_ 128 128 _}
+ [ u8 +$$X] SWS_OP_CLEAR : {_ 128 128 _}
min: {16 128 128 _}, max: {235 128 128 _}
[ u8 XXXX] SWS_OP_WRITE : 3 elem(s) planar >> 0
- (X = unused, z = byteswapped, + = exact, 0 = zero)
+ ('X' unused, 'z' byteswapped, '=' copied, '$' const, '+' integer, '0' zero)
translated micro-ops:
u8_read_planar_x
u8_to_f32_x
f32_linear_x_x000x
f32_dither_x_0_16x16
f32_to_u8_x
u8_clear_yz_xx
u8_write_planar_xyz
Sponsored-by: Sovereign Tech Fund
Signed-off-by: Niklas Haas <git@haasn.dev>
Changed files
- libswscale/ops.c
- libswscale/ops.h
- tests/ref/fate/sws-ops-list