aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNiklas Haas <git@haasn.dev>2024-10-10 12:21:19 +0200
committerNiklas Haas <git@haasn.dev>2024-10-23 23:12:23 +0200
commitf1f54d2f826599f90090c1506ebca9977284bad2 (patch)
tree2ff86dfa5601ce3ed2e5fd947c2e0ef8c22d9ef5
parentb03c758600f0767d54ae663dadc8f698b79cd1c4 (diff)
downloadffmpeg-f1f54d2f826599f90090c1506ebca9977284bad2.tar.gz
swscale/x86: use dedicated int for self-modifying MMX dstW
I want to pull options out of SwsInternal, so we need to make this field a dedicated int that gets updated as appropriate in ff_swscale(). Sponsored-by: Sovereign Tech Fund Signed-off-by: Niklas Haas <git@haasn.dev>
-rw-r--r--libswscale/swscale.c1
-rw-r--r--libswscale/swscale_internal.h3
2 files changed, 3 insertions, 1 deletions
diff --git a/libswscale/swscale.c b/libswscale/swscale.c
index 0f5e520515..38e9ae8255 100644
--- a/libswscale/swscale.c
+++ b/libswscale/swscale.c
@@ -488,6 +488,7 @@ int ff_swscale(SwsContext *c, const uint8_t *const src[], const int srcStride[],
#if HAVE_MMX_INLINE
ff_updateMMXDitherTables(c, dstY);
+ c->dstW_mmx = c->dstW;
#endif
if (should_dither) {
c->chrDither8 = ff_dither_8x8_128[chrDstY & 7];
diff --git a/libswscale/swscale_internal.h b/libswscale/swscale_internal.h
index ce71f7c096..5fa041c80f 100644
--- a/libswscale/swscale_internal.h
+++ b/libswscale/swscale_internal.h
@@ -345,6 +345,7 @@ struct SwsContext {
SwsFunc convert_unscaled;
int srcW; ///< Width of source luma/alpha planes.
int srcH; ///< Height of source luma/alpha planes.
+ int dstW; ///< Width of destination luma/alpha planes.
int dstH; ///< Height of destination luma/alpha planes.
int chrSrcW; ///< Width of source chroma planes.
int chrSrcH; ///< Height of source chroma planes.
@@ -534,7 +535,7 @@ struct SwsContext {
DECLARE_ALIGNED(8, uint64_t, vOffset);
int32_t lumMmxFilter[4 * MAX_FILTER_SIZE];
int32_t chrMmxFilter[4 * MAX_FILTER_SIZE];
- int dstW; ///< Width of destination luma/alpha planes.
+ int dstW_mmx;
DECLARE_ALIGNED(8, uint64_t, esp);
DECLARE_ALIGNED(8, uint64_t, vRounder);
DECLARE_ALIGNED(8, uint64_t, u_temp);