[FFmpeg-cvslog] swscale: do not forget to swap data in formats with different endianness

Kostya Shishkov git at videolan.org
Thu Nov 1 13:21:30 CET 2012


ffmpeg | branch: master | Kostya Shishkov <kostya.shishkov at gmail.com> | Wed Oct 31 11:26:32 2012 +0100| [38fdf7258035eb520ca152e9bea6d95cdfaca424] | committer: Diego Biurrun

swscale: do not forget to swap data in formats with different endianness

Otherwise during scaling it will try to interpret input in the wrong way and
that leads to the test results disagreeing on different platforms and with
different optimizations.

Signed-off-by: Diego Biurrun <diego at biurrun.de>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=38fdf7258035eb520ca152e9bea6d95cdfaca424
---

 libswscale/input.c            |   42 +++++++++++++++++++++++++++++++++++++++++
 tests/ref/lavfi/pixfmts_scale |   16 ++++++++--------
 2 files changed, 50 insertions(+), 8 deletions(-)

diff --git a/libswscale/input.c b/libswscale/input.c
index 142cc29..2e8d43f 100644
--- a/libswscale/input.c
+++ b/libswscale/input.c
@@ -724,6 +724,15 @@ av_cold void ff_sws_init_input_funcs(SwsContext *c)
     case AV_PIX_FMT_YUV420P16LE:
     case AV_PIX_FMT_YUV422P16LE:
     case AV_PIX_FMT_YUV444P16LE:
+    case AV_PIX_FMT_YUVA444P9LE:
+    case AV_PIX_FMT_YUVA422P9LE:
+    case AV_PIX_FMT_YUVA420P9LE:
+    case AV_PIX_FMT_YUVA422P10LE:
+    case AV_PIX_FMT_YUVA444P10LE:
+    case AV_PIX_FMT_YUVA420P10LE:
+    case AV_PIX_FMT_YUVA420P16LE:
+    case AV_PIX_FMT_YUVA422P16LE:
+    case AV_PIX_FMT_YUVA444P16LE:
         c->chrToYV12 = bswap16UV_c;
         break;
 #else
@@ -736,6 +745,15 @@ av_cold void ff_sws_init_input_funcs(SwsContext *c)
     case AV_PIX_FMT_YUV420P16BE:
     case AV_PIX_FMT_YUV422P16BE:
     case AV_PIX_FMT_YUV444P16BE:
+    case AV_PIX_FMT_YUVA444P9BE:
+    case AV_PIX_FMT_YUVA422P9BE:
+    case AV_PIX_FMT_YUVA420P9BE:
+    case AV_PIX_FMT_YUVA422P10BE:
+    case AV_PIX_FMT_YUVA444P10BE:
+    case AV_PIX_FMT_YUVA420P10BE:
+    case AV_PIX_FMT_YUVA420P16BE:
+    case AV_PIX_FMT_YUVA422P16BE:
+    case AV_PIX_FMT_YUVA444P16BE:
         c->chrToYV12 = bswap16UV_c;
         break;
 #endif
@@ -917,6 +935,18 @@ av_cold void ff_sws_init_input_funcs(SwsContext *c)
     case AV_PIX_FMT_GRAY16LE:
         c->lumToYV12 = bswap16Y_c;
         break;
+    case AV_PIX_FMT_YUVA444P9LE:
+    case AV_PIX_FMT_YUVA422P9LE:
+    case AV_PIX_FMT_YUVA420P9LE:
+    case AV_PIX_FMT_YUVA444P10LE:
+    case AV_PIX_FMT_YUVA422P10LE:
+    case AV_PIX_FMT_YUVA420P10LE:
+    case AV_PIX_FMT_YUVA420P16LE:
+    case AV_PIX_FMT_YUVA422P16LE:
+    case AV_PIX_FMT_YUVA444P16LE:
+        c->lumToYV12 = bswap16Y_c;
+        c->alpToYV12 = bswap16Y_c;
+        break;
 #else
     case AV_PIX_FMT_YUV444P9BE:
     case AV_PIX_FMT_YUV422P9BE:
@@ -930,6 +960,18 @@ av_cold void ff_sws_init_input_funcs(SwsContext *c)
     case AV_PIX_FMT_GRAY16BE:
         c->lumToYV12 = bswap16Y_c;
         break;
+    case AV_PIX_FMT_YUVA444P9BE:
+    case AV_PIX_FMT_YUVA422P9BE:
+    case AV_PIX_FMT_YUVA420P9BE:
+    case AV_PIX_FMT_YUVA444P10BE:
+    case AV_PIX_FMT_YUVA422P10BE:
+    case AV_PIX_FMT_YUVA420P10BE:
+    case AV_PIX_FMT_YUVA420P16BE:
+    case AV_PIX_FMT_YUVA422P16BE:
+    case AV_PIX_FMT_YUVA444P16BE:
+        c->lumToYV12 = bswap16Y_c;
+        c->alpToYV12 = bswap16Y_c;
+        break;
 #endif
     case AV_PIX_FMT_YUYV422:
     case AV_PIX_FMT_Y400A:
diff --git a/tests/ref/lavfi/pixfmts_scale b/tests/ref/lavfi/pixfmts_scale
index d8ae09c..7be8af4 100644
--- a/tests/ref/lavfi/pixfmts_scale
+++ b/tests/ref/lavfi/pixfmts_scale
@@ -57,25 +57,25 @@ yuv444p16le         a0c5d3c7bf3f181db503cf8e450d1335
 yuv444p9be          9ac2643ce7f7e5c4e17c8c9fd8494d4a
 yuv444p9le          896a1cc9cccca1ba410dd53942d33cc4
 yuva420p            8673a9131fb47de69788863f93a50eb7
-yuva420p10be        cf397b35db9407496093b2ad64f3106c
+yuva420p10be        d92a95061809f251175f5d5e3074930e
 yuva420p10le        8a06c377b8aa2b2979054e074582a5b5
 yuva420p16be        a61d8ddb646e2d26020fc7ed2a48c1a9
 yuva420p16le        90ef774f86ad3177ec57eca8744b4e09
-yuva420p9be         b43d5d88a474c80abad8e887eb5a3317
+yuva420p9be         f7655546446bfdc875243d7cdeb13b30
 yuva420p9le         ada2b719827059d70ebc57e2a3f9da92
 yuva422p            3c76ebeca0a7d3aa5f8e31ef80a86ffe
-yuva422p10be        c12a427d2b8fc84f93fd3cf9fd5bcb14
+yuva422p10be        9a21b2f566c0761c8338edaa88006bee
 yuva422p10le        aefcda062e7e3463c887faa9d926aca7
-yuva422p16be        a31bd04c58c22690f2a7c745f34cf48f
+yuva422p16be        c21afa31ac18bd92e8e596b81552b52b
 yuva422p16le        0bc3720dba6076dcce3b74b1d3c6c4b7
-yuva422p9be         b21d2aa97ff643c86bbc08b578729c39
+yuva422p9be         a60ac5b8026e9621724c033fbf79dbda
 yuva422p9le         c3eda8831e9b9c94a3eb487d33114103
 yuva444p            3268c6abe5e3cdbd16552a1eddced816
-yuva444p10be        4f6eaf2bbe8a083773b9f061fec20e41
+yuva444p10be        3fbd1ece625c7aa7284b9ca3724d6abb
 yuva444p10le        2eeda83856df77760cd30e477e8ba00b
-yuva444p16be        3587f05da58a8435aad648506562d39b
+yuva444p16be        ed5b07fe4d5b1137604568786777af1d
 yuva444p16le        3a3df23feb60d8832b566fd9765983d0
-yuva444p9be         d5342be0074975ea65907f5b65c7a335
+yuva444p9be         4fc479c5b1044ad37b4e6fc6488b4f7f
 yuva444p9le         c41849b0134670d6f6253c337defbb04
 yuvj420p            30427bd6caf5bda93a173dbebe759e09
 yuvj422p            fc8288f64fd149573f73cf8da05d8e6d



More information about the ffmpeg-cvslog mailing list