diff --git a/libswscale/swscale_unscaled.c b/libswscale/swscale_unscaled.c
index a994d6f2f501d7244d78bbf6be1fdf231e6b85dd..433dbdb46e86b26d3701ae824e95ff687f5acf3d 100644
--- a/libswscale/swscale_unscaled.c
+++ b/libswscale/swscale_unscaled.c
@@ -1030,7 +1030,8 @@ void ff_get_unscaled_swscale(SwsContext *c)
         IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_RGB444) ||
         IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_RGB48)  ||
         IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_RGB555) ||
-        IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_RGB565))
+        IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_RGB565) ||
+        IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_XYZ12))
         c->swScale = packed_16bpc_bswap;
 
     if ((usePal(srcFormat) && (
diff --git a/libswscale/utils.c b/libswscale/utils.c
index 538a3df665152274fe9ede58a8cd5a1ebabd5772..e20a5f1cee4acb25dbf32b78d3e98e1e1cda57aa 100644
--- a/libswscale/utils.c
+++ b/libswscale/utils.c
@@ -172,6 +172,8 @@ static const FormatEntry format_entries[AV_PIX_FMT_NB] = {
     [AV_PIX_FMT_GBRP10BE]    = { 1, 1 },
     [AV_PIX_FMT_GBRP16LE]    = { 1, 0 },
     [AV_PIX_FMT_GBRP16BE]    = { 1, 0 },
+    [AV_PIX_FMT_XYZ12BE]     = { 0, 0, 1 },
+    [AV_PIX_FMT_XYZ12LE]     = { 0, 0, 1 },
 };
 
 int sws_isSupportedInput(enum AVPixelFormat pix_fmt)