OSDN Git Service

i965_pciids: add kbl-y refresh PCI ID
[android-x86/hardware-intel-common-vaapi.git] / test / i965_test_image_utils.h
1 /*
2  * Copyright (C) 2016 Intel Corporation. All Rights Reserved.
3  *
4  * Permission is hereby granted, free of charge, to any person obtaining a
5  * copy of this software and associated documentation files (the
6  * "Software"), to deal in the Software without restriction, including
7  * without limitation the rights to use, copy, modify, merge, publish,
8  * distribute, sub license, and/or sell copies of the Software, and to
9  * permit persons to whom the Software is furnished to do so, subject to
10  * the following conditions:
11  *
12  * The above copyright notice and this permission notice (including the
13  * next paragraph) shall be included in all copies or substantial portions
14  * of the Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
17  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
19  * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
20  * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23  */
24
25 #ifndef I965_TEST_IMAGE_UTILS_H
26 #define I965_TEST_IMAGE_UTILS_H
27
28 #include <array>
29 #include <memory>
30 #include <valarray>
31 #include <va/va.h>
32
33 class YUVImage
34     : public std::enable_shared_from_this<YUVImage>
35 {
36 public:
37     typedef std::shared_ptr<YUVImage> Shared;
38     typedef std::shared_ptr<const YUVImage> SharedConst;
39
40     static Shared create(const unsigned, size_t, size_t);
41     static Shared create(const VAImage&);
42     static Shared create(const VASurfaceID);
43
44     std::slice_array<uint8_t> y() { return bytes[slices[0]]; }
45     std::slice_array<uint8_t> u() { return bytes[slices[1]]; }
46     std::slice_array<uint8_t> v() { return bytes[slices[2]]; }
47
48     void toSurface(VASurfaceID) const;
49
50     std::valarray<uint8_t>      bytes;
51     size_t                      width;
52     size_t                      height;
53     unsigned                    fourcc;
54     unsigned                    format;
55     size_t                      planes;
56     std::valarray<size_t>       widths;
57     std::valarray<size_t>       heights;
58     std::valarray<size_t>       offsets;
59     std::valarray<size_t>       sizes;
60     std::array<std::slice, 3>   slices;
61
62 private:
63     YUVImage();
64 };
65
66 #endif