Index: src/core/SkYUVPlanesCache.h |
diff --git a/src/core/SkYUVPlanesCache.h b/src/core/SkYUVPlanesCache.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..aa9b89e2a55ae7c945f92469797a4d257af6e5c6 |
--- /dev/null |
+++ b/src/core/SkYUVPlanesCache.h |
@@ -0,0 +1,50 @@ |
+/* |
+ * Copyright 2015 Google Inc. |
+ * |
+ * Use of this source code is governed by a BSD-style license that can be |
+ * found in the LICENSE file. |
+ */ |
+ |
+#ifndef SkYUVPlanesCache_DEFINED |
+#define SkYUVPlanesCache_DEFINED |
+ |
+#include "SkCachedData.h" |
+#include "SkImageInfo.h" |
+ |
+class SkResourceCache; |
+ |
+class SkYUVPlanesCache { |
+public: |
+ /** |
+ * The Info struct contains data about the 3 Y, U and V planes of memory stored |
+ * contiguously, in that order, as a single block of memory within SkYUVPlanesCache. |
reed2
2015/01/19 19:09:09
Well, I thought it was contiguous, but now perhaps
sugoi1
2015/01/19 19:28:56
Typically, block sizes are 8 and width and height
|
+ * |
+ * fSize: Width and height of each of the 3 planes (in pixels). |
+ * fSizeInMemory: Amount of memory allocated for each plane (may be different from |
+ "height * rowBytes", depending on the jpeg decoder's block size). |
+ * The sum of these is the total size stored within SkYUVPlanesCache. |
+ * fRowBytes: rowBytes for each of the 3 planes (in bytes). |
+ * fColorSpace: color space that will be used for the YUV -> RGB conversion. |
+ */ |
+ struct Info { |
+ SkISize fSize[3]; |
+ size_t fSizeInMemory[3]; |
+ size_t fRowBytes[3]; |
+ SkYUVColorSpace fColorSpace; |
+ }; |
+ /** |
+ * On success, return a ref to the SkCachedData that holds the pixels. |
+ * |
+ * On failure, return NULL. |
+ */ |
+ static SkCachedData* FindAndRef(uint32_t genID, Info* info, |
+ SkResourceCache* localCache = NULL); |
+ |
+ /** |
+ * Add a pixelRef ID and its YUV planes data to the cache. |
+ */ |
+ static void Add(uint32_t genID, SkCachedData* data, Info* info, |
+ SkResourceCache* localCache = NULL); |
+}; |
+ |
+#endif |