"Ronald S. Bultje" <[email protected]> writes: > Hi, > > 2011/7/10 Måns Rullgård <[email protected]>: >> "Ronald S. Bultje" <[email protected]> writes: >> >>> From: Anton Mitrofanov <[email protected]> >>> >>> ptrdiff_t can be 4 bytes, which leads to the next element being 4-byte >>> aligned and thus at a different offset than intended. Forcing 8-byte >>> alignment forces equal offset of dither16/32 on x86-32 and x86-64. >>> >>> Signed-off-by: Ronald S. Bultje <[email protected]> >>> --- >>> libswscale/swscale_internal.h | 4 ++-- >>> 1 files changed, 2 insertions(+), 2 deletions(-) >>> >>> diff --git a/libswscale/swscale_internal.h b/libswscale/swscale_internal.h >>> index b602541..a6d4a2f 100644 >>> --- a/libswscale/swscale_internal.h >>> +++ b/libswscale/swscale_internal.h >>> @@ -347,8 +347,8 @@ typedef struct SwsContext { >>> int32_t alpMmxFilter[4*MAX_FILTER_SIZE]; >>> DECLARE_ALIGNED(8, ptrdiff_t, uv_off_px); ///< offset (in pixels) >>> between u and v planes >>> DECLARE_ALIGNED(8, ptrdiff_t, uv_off_byte); ///< offset (in bytes) >>> between u and v planes >>> - uint16_t dither16[8]; >>> - uint32_t dither32[8]; >>> + DECLARE_ALIGNED(8, uint16_t, dither16)[8]; >>> + DECLARE_ALIGNED(8, uint32_t, dither32)[8]; >>> >>> const uint8_t *chrDither8, *lumDither8; >>> >>> -- >> >> Since the asm is inline, why not pass the offset using an operand with >> "i" constraint instead of this? >> >> If those fields really need 8-byte alignment for some other reason, the >> commit message should state that instead or in addition. > > I plan to do that, but as said before, it's a major undertaking. I > can't fix the world all at once. World hunger will continue for > considerably longer beyond today, and so will swscale being broken. > I'll fix it, really, but small pieces at a time.
Then please add a comment by those fields or when this discussion is forgotten, someone looking at it will assume alignment is required for some reason. -- Måns Rullgård [email protected] _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
