This is an automated email from the git hooks/post-receive script.

Git pushed a commit to branch master
in repository ffmpeg.

The following commit(s) were added to refs/heads/master by this push:
     new c9e36046a3 libswscale: use unaligned read/write macros in 
planarCopyWrapper
c9e36046a3 is described below

commit c9e36046a338638279782cba4fba3299bf65f46b
Author:     yongdev <[email protected]>
AuthorDate: Tue Aug 18 23:04:36 2026 +0000
Commit:     Niklas Haas <[email protected]>
CommitDate: Mon Aug 31 13:47:25 2026 +0000

    libswscale: use unaligned read/write macros in planarCopyWrapper
    
    When performing unscaled planar copies or format conversions on 16-bit
    buffers in planarCopyWrapper, srcPtr2 and dstPtr2 are not guaranteed to
    be 8-byte aligned (e.g. subsampled chroma planes with non-multiple-of-8
    widths/strides or odd slice offsets).
    
    AV_RN64A / AV_WN64A and AV_RN32A / AV_WN32A cast pointers to av_alias64
    or av_alias32 which have __attribute__((aligned(8))) or aligned(4).
    Dereferencing unaligned pointers with aligned attribute triggers Undefined
    Behavior traps (SIGILL / UD1 instruction with Clang -fsanitize=alignment).
    Replace them with AV_RN64 / AV_WN64 and AV_RN32 / AV_WN32.
    
    Signed-off-by: yongdev <[email protected]>
---
 libswscale/swscale_unscaled.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/libswscale/swscale_unscaled.c b/libswscale/swscale_unscaled.c
index 18fc8fe7d7..7acab95e03 100644
--- a/libswscale/swscale_unscaled.c
+++ b/libswscale/swscale_unscaled.c
@@ -2291,13 +2291,13 @@ static int planarCopyWrapper(SwsInternal *c, const 
uint8_t *const src[],
                            shiftonly) {
 #if HAVE_FAST_64BIT
                             for (; j < length - 3; j += 4) {
-                                uint64_t v = AV_RN64A(srcPtr2 + j) >> 
src_shift;
-                                AV_WN64A(dstPtr2 + j, (v << shift) << 
dst_shift);
+                                uint64_t v = AV_RN64(srcPtr2 + j) >> src_shift;
+                                AV_WN64(dstPtr2 + j, (v << shift) << 
dst_shift);
                             }
 #else
                             for (; j < length - 1; j += 2) {
-                                uint32_t v = AV_RN32A(srcPtr2 + j) >> 
src_shift;
-                                AV_WN32A(dstPtr2 + j, (v << shift) << 
dst_shift);
+                                uint32_t v = AV_RN32(srcPtr2 + j) >> src_shift;
+                                AV_WN32(dstPtr2 + j, (v << shift) << 
dst_shift);
                             }
 #endif
                         }

-- 
To stop receiving notification emails like this one, please contact
[email protected].
_______________________________________________
ffmpeg-cvslog mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to