author | Wolfgang Rosenauer <wr@rosenauer.org> |
Thu, 05 Sep 2019 08:27:16 +0200 | |
branch | firefox68 |
changeset 1102 | 3f648b714230 |
parent 1101 | a4709640638e |
child 1109 | 972f68ac6b1a |
permissions | -rw-r--r-- |
1101
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
1 |
# HG changeset patch |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
2 |
# User A. Wilcox <AWilcox@Wilcox-Tech.com> |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
3 |
# Date 1543674229 0 |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
4 |
# Sat Dec 01 14:23:49 2018 +0000 |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
5 |
# Node ID 0309ff19e46b126c527e633518d7de8570442114 |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
6 |
# Parent 53107afbc21ec78e7ac46d37af212505f2032d5d |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
7 |
Bug 1511604 - Swizzle YCbCr->RGB data on big-endian machines |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
8 |
Taken from https://bugzilla.mozilla.org/show_bug.cgi?id=1511604 |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
9 |
|
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
10 |
This is very closely related to mozilla-bmo1504834 |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
11 |
|
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
12 |
Again, input for skia is swizzled to LE, as skia only understands LE. |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
13 |
|
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
14 |
diff -r 53107afbc21e -r 0309ff19e46b gfx/ycbcr/YCbCrUtils.cpp |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
15 |
--- a/gfx/ycbcr/YCbCrUtils.cpp Wed Nov 07 04:50:21 2018 +0000 |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
16 |
+++ b/gfx/ycbcr/YCbCrUtils.cpp Sat Dec 01 14:23:49 2018 +0000 |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
17 |
@@ -3,7 +3,9 @@ |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
18 |
* License, v. 2.0. If a copy of the MPL was not distributed with this |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
19 |
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
20 |
|
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
21 |
+#include "mozilla/EndianUtils.h" |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
22 |
#include "gfx2DGlue.h" |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
23 |
+#include "mozilla/gfx/Swizzle.h" |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
24 |
|
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
25 |
#include "YCbCrUtils.h" |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
26 |
#include "yuv_convert.h" |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
27 |
@@ -236,6 +238,13 @@ |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
28 |
yuvtype, |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
29 |
srcData.mYUVColorSpace); |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
30 |
} |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
31 |
+#ifdef MOZ_BIG_ENDIAN |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
32 |
+ // libyuv makes endian-correct result, which needs to be swapped to BGRX |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
33 |
+ if (aDestFormat != SurfaceFormat::R5G6B5_UINT16) |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
34 |
+ gfx::SwizzleData(aDestBuffer, aStride, gfx::SurfaceFormat::X8R8G8B8, |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
35 |
+ aDestBuffer, aStride, gfx::SurfaceFormat::B8G8R8X8, |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
36 |
+ srcData.mPicSize); |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
37 |
+#endif |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
38 |
} |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
39 |
|
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
40 |
void |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
41 |
@@ -257,6 +266,12 @@ |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
42 |
aSrcStrideYA, |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
43 |
aSrcStrideUV, |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
44 |
aDstStrideARGB); |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
45 |
+#ifdef MOZ_BIG_ENDIAN |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
46 |
+ // libyuv makes endian-correct result, which needs to be swapped to BGRA |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
47 |
+ gfx::SwizzleData(aDstARGB, aDstStrideARGB, gfx::SurfaceFormat::A8R8G8B8, |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
48 |
+ aDstARGB, aDstStrideARGB, gfx::SurfaceFormat::B8G8R8A8, |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
49 |
+ IntSize(aWidth, aHeight)); |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
50 |
+#endif |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
51 |
} |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
52 |
|
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
53 |
} // namespace gfx |
a4709640638e
added several arch specific (mainly BE) patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff
changeset
|
54 |