diff mbox series

[FFmpeg-devel,3/3] swscale/swscale: Pass slice location into unscaled code also for dst scaling

Message ID 20210930171640.23713-3-michael@niedermayer.cc
State New
Headers show
Series [FFmpeg-devel,1/3] swscale/swscale_internal: Avoid unsigned for slice parameters | expand

Commit Message

Michael Niedermayer Sept. 30, 2021, 5:16 p.m. UTC
Fixes: alphablend=checkerboard

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
 libswscale/swscale.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

Comments

Paul B Mahol Oct. 2, 2021, 9:03 p.m. UTC | #1
lgtm
Michael Niedermayer Oct. 3, 2021, 1:44 p.m. UTC | #2
On Sat, Oct 02, 2021 at 11:03:12PM +0200, Paul B Mahol wrote:
> lgtm

will apply

thx

[...]
diff mbox series

Patch

diff --git a/libswscale/swscale.c b/libswscale/swscale.c
index c7069ae7b2f..18a74abd6b7 100644
--- a/libswscale/swscale.c
+++ b/libswscale/swscale.c
@@ -1020,7 +1020,7 @@  static int scale_internal(SwsContext *c,
         int offset  = srcSliceY_internal;
         int slice_h = srcSliceH;
 
-        // for dst slice scaling, offset the src pointers to match the dst slice
+        // for dst slice scaling, offset the pointers to match the unscaled API
         if (scale_dst) {
             av_assert0(offset == 0);
             for (i = 0; i < 4 && src2[i]; i++) {
@@ -1028,7 +1028,13 @@  static int scale_internal(SwsContext *c,
                     break;
                 src2[i] += (dstSliceY >> ((i == 1 || i == 2) ? c->chrSrcVSubSample : 0)) * srcStride2[i];
             }
-            offset  = 0;
+
+            for (i = 0; i < 4 && dst2[i]; i++) {
+                if (!dst2[i] || (i > 0 && usePal(c->dstFormat)))
+                    break;
+                dst2[i] -= (dstSliceY >> ((i == 1 || i == 2) ? c->chrDstVSubSample : 0)) * dstStride2[i];
+            }
+            offset  = dstSliceY;
             slice_h = dstSliceH;
         }