aboutsummaryrefslogtreecommitdiffhomepage
path: root/include/core/SkYUVSizeInfo.h
blob: fc2ceba78c7b1387a842b29fe6f7d29654b1a34d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/*
 * Copyright 2016 Google Inc.
 *
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */

#ifndef SkYUVSizeInfo_DEFINED
#define SkYUVSizeInfo_DEFINED

#include "SkSize.h"

struct SkYUVSizeInfo {
    enum YUVIndex {
        kY          = 0,
        kU          = 1,
        kV          = 2,
    };
    SkISize fSizes[3];

    /**
     * While the widths of the Y, U, and V planes are not restricted, the
     * implementation often requires that the width of the memory allocated
     * for each plane be a multiple of 8.
     *
     * This struct allows us to inform the client how many "widthBytes"
     * that we need.  Note that we use the new idea of "widthBytes"
     * because this idea is distinct from "rowBytes" (used elsewhere in
     * Skia).  "rowBytes" allow the last row of the allocation to not
     * include any extra padding, while, in this case, every single row of
     * the allocation must be at least "widthBytes".
     */
    size_t fWidthBytes[3];
};

#endif // SkYUVSizeInfo_DEFINED