1/*
2 * Copyright 2016 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 SkYUVSizeInfo_DEFINED
9#define SkYUVSizeInfo_DEFINED
10
11#include "SkSize.h"
12
13struct SkYUVSizeInfo {
14    enum {
15        kY          = 0,
16        kU          = 1,
17        kV          = 2,
18    };
19    SkISize fSizes[3];
20
21    /**
22     * While the widths of the Y, U, and V planes are not restricted, the
23     * implementation often requires that the width of the memory allocated
24     * for each plane be a multiple of 8.
25     *
26     * This struct allows us to inform the client how many "widthBytes"
27     * that we need.  Note that we use the new idea of "widthBytes"
28     * because this idea is distinct from "rowBytes" (used elsewhere in
29     * Skia).  "rowBytes" allow the last row of the allocation to not
30     * include any extra padding, while, in this case, every single row of
31     * the allocation must be at least "widthBytes".
32     */
33    size_t fWidthBytes[3];
34};
35
36#endif // SkYUVSizeInfo_DEFINED
37