• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2015 Google Inc.
3  *
4  * Use of this source code is governed by a BSD-style license that can be
5  * found in the LICENSE file.
6  */
7 
8 #ifndef SkYUVPlanesCache_DEFINED
9 #define SkYUVPlanesCache_DEFINED
10 
11 #include "SkCachedData.h"
12 #include "SkImageInfo.h"
13 
14 class SkResourceCache;
15 
16 class SkYUVPlanesCache {
17 public:
18     /**
19      * The Info struct contains data about the 3 Y, U and V planes of memory stored
20      * contiguously, in that order, as a single block of memory within SkYUVPlanesCache.
21      *
22      * fSize: Width and height of each of the 3 planes (in pixels).
23      * fSizeInMemory: Amount of memory allocated for each plane (may be different from
24                       "height * rowBytes", depending on the jpeg decoder's block size).
25      *                The sum of these is the total size stored within SkYUVPlanesCache.
26      * fRowBytes: rowBytes for each of the 3 planes (in bytes).
27      * fColorSpace: color space that will be used for the YUV -> RGB conversion.
28      */
29     struct Info {
30         SkISize fSize[3];
31         size_t  fSizeInMemory[3];
32         size_t  fRowBytes[3];
33         SkYUVColorSpace fColorSpace;
34     };
35     /**
36      * On success, return a ref to the SkCachedData that holds the pixels.
37      *
38      * On failure, return nullptr.
39      */
40     static SkCachedData* FindAndRef(uint32_t genID, Info* info,
41                                     SkResourceCache* localCache = nullptr);
42 
43     /**
44      * Add a pixelRef ID and its YUV planes data to the cache.
45      */
46     static void Add(uint32_t genID, SkCachedData* data, Info* info,
47                     SkResourceCache* localCache = nullptr);
48 };
49 
50 #endif
51