1 /*
2 * Copyright (c) 2021, Intel Corporation
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the
9 * Software is furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included
12 * in all copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
18 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
20 * OTHER DEALINGS IN THE SOFTWARE.
21 */
22 //!
23 //! \file     capstable_data_image_format_definition.h
24 //! \brief    This file defines all image format definition
25 //!
26 
27 #ifndef __CAPSTABLE_DATA_IMAGE_FORMAT_DEFINITION_H__
28 #define __CAPSTABLE_DATA_IMAGE_FORMAT_DEFINITION_H__
29 
30 #include "va/va.h"
31 
32 static VAImageFormat formatBGRA        = {VA_FOURCC_BGRA,        VA_LSB_FIRST,  32, 32, 0x0000ff00, 0x00ff0000, 0xff000000,  0x000000ff }; /* [31:0] B:G:R:A 8:8:8:8 little endian */
33 static VAImageFormat formatARGB        = {VA_FOURCC_ARGB,        VA_LSB_FIRST,  32, 32, 0x00ff0000, 0x0000ff00, 0x000000ff,  0xff000000 }; /* [31:0] A:R:G:B 8:8:8:8 little endian */
34 static VAImageFormat formatRGBA        = {VA_FOURCC_RGBA,        VA_LSB_FIRST,  32, 32, 0xff000000, 0x00ff0000, 0x0000ff00,  0x000000ff }; /* [31:0] R:G:B:A 8:8:8:8 little endian */
35 static VAImageFormat formatABGR        = {VA_FOURCC_ABGR,        VA_LSB_FIRST,  32, 32, 0x000000ff, 0x0000ff00, 0x00ff0000,  0xff000000 }; /* [31:0] A:B:G:R 8:8:8:8 little endian */
36 static VAImageFormat formatBGRX        = {VA_FOURCC_BGRX,        VA_LSB_FIRST,  32, 24, 0x0000ff00, 0x00ff0000, 0xff000000,  0 };          /* [31:0] B:G:R:x 8:8:8:8 little endian */
37 static VAImageFormat formatXRGB        = {VA_FOURCC_XRGB,        VA_LSB_FIRST,  32, 24, 0x00ff0000, 0x0000ff00, 0x000000ff,  0 };          /* [31:0] x:R:G:B 8:8:8:8 little endian */
38 static VAImageFormat formatRGBX        = {VA_FOURCC_RGBX,        VA_LSB_FIRST,  32, 24, 0xff000000, 0x00ff0000, 0x0000ff00,  0 };          /* [31:0] R:G:B:x 8:8:8:8 little endian */
39 static VAImageFormat formatXBGR        = {VA_FOURCC_XBGR,        VA_LSB_FIRST,  32, 24, 0x000000ff, 0x0000ff00, 0x00ff0000,  0 };          /* [31:0] x:B:G:R 8:8:8:8 little endian */
40 static VAImageFormat formatA2R10G10B10 = {VA_FOURCC_A2R10G10B10, VA_LSB_FIRST,  32, 30, 0x3ff00000, 0x000ffc00, 0x000003ff,  0x30000000 }; /* [31:0] A:R:G:B 2:10:10:10 little endian */
41 static VAImageFormat formatA2B10G10R10 = {VA_FOURCC_A2B10G10R10, VA_LSB_FIRST,  32, 30, 0x000003ff, 0x000ffc00, 0x3ff00000,  0x30000000 }; /* [31:0] A:B:G:R 2:10:10:10 little endian */
42 static VAImageFormat formatX2R10G10B10 = {VA_FOURCC_X2R10G10B10, VA_LSB_FIRST,  32, 30, 0x3ff00000, 0x000ffc00, 0x000003ff,  0 };          /* [31:0] X:R:G:B 2:10:10:10 little endian */
43 static VAImageFormat formatX2B10G10R10 = {VA_FOURCC_X2B10G10R10, VA_LSB_FIRST,  32, 30, 0x000003ff, 0x000ffc00, 0x3ff00000,  0 };          /* [31:0] X:B:G:R 2:10:10:10 little endian */
44 static VAImageFormat formatRGB565      = {VA_FOURCC_RGB565,      VA_LSB_FIRST,  16, 16, 0xf800,     0x07e0,     0x001f,      0 };          /* [15:0] R:G:B 5:6:5 little endian */
45 static VAImageFormat formatAYUV        = {VA_FOURCC_AYUV,        VA_LSB_FIRST,  32, 0,0,0,0,0 };
46 #if VA_CHECK_VERSION(1, 13, 0)
47 static VAImageFormat formatXYUV        = {VA_FOURCC_XYUV,        VA_LSB_FIRST,  32, 0,0,0,0,0 };
48 #endif
49 static VAImageFormat formatY800        = {VA_FOURCC_Y800,        VA_LSB_FIRST,  8,  0,0,0,0,0 };
50 static VAImageFormat formatNV12        = {VA_FOURCC_NV12,        VA_LSB_FIRST,  12, 0,0,0,0,0 };
51 static VAImageFormat formatNV21        = {VA_FOURCC_NV21,        VA_LSB_FIRST,  12, 0,0,0,0,0 };
52 static VAImageFormat formatYUY2        = {VA_FOURCC_YUY2,        VA_LSB_FIRST,  16, 0,0,0,0,0 };
53 static VAImageFormat formatUYVY        = {VA_FOURCC_UYVY,        VA_LSB_FIRST,  16, 0,0,0,0,0 };
54 static VAImageFormat formatYV12        = {VA_FOURCC_YV12,        VA_LSB_FIRST,  12, 0,0,0,0,0 };
55 static VAImageFormat formatI420        = {VA_FOURCC_I420,        VA_LSB_FIRST,  12, 0,0,0,0,0 };
56 static VAImageFormat format411P        = {VA_FOURCC_411P,        VA_LSB_FIRST,  12, 0,0,0,0,0 };
57 static VAImageFormat format422H        = {VA_FOURCC_422H,        VA_LSB_FIRST,  16, 0,0,0,0,0 };
58 static VAImageFormat format422V        = {VA_FOURCC_422V,        VA_LSB_FIRST,  16, 0,0,0,0,0 };
59 static VAImageFormat format444P        = {VA_FOURCC_444P,        VA_LSB_FIRST,  24, 0,0,0,0,0 };
60 static VAImageFormat formatIMC3        = {VA_FOURCC_IMC3,        VA_LSB_FIRST,  16, 0,0,0,0,0 };
61 static VAImageFormat formatP010        = {VA_FOURCC_P010,        VA_LSB_FIRST,  24, 0,0,0,0,0 };
62 static VAImageFormat formatP012        = {VA_FOURCC_P012,        VA_LSB_FIRST,  24, 0,0,0,0,0 };
63 static VAImageFormat formatP016        = {VA_FOURCC_P016,        VA_LSB_FIRST,  24, 0,0,0,0,0 };
64 static VAImageFormat formatY210        = {VA_FOURCC_Y210,        VA_LSB_FIRST,  32, 0,0,0,0,0 };
65 static VAImageFormat formatY212        = {VA_FOURCC_Y212,        VA_LSB_FIRST,  32, 0,0,0,0,0 };
66 static VAImageFormat formatY216        = {VA_FOURCC_Y216,        VA_LSB_FIRST,  32, 0,0,0,0,0 };
67 static VAImageFormat formatY410        = {VA_FOURCC_Y410,        VA_LSB_FIRST,  32, 0,0,0,0,0 };
68 static VAImageFormat formatY412        = {VA_FOURCC_Y412,        VA_LSB_FIRST,  64, 0,0,0,0,0 };
69 static VAImageFormat formatY416        = {VA_FOURCC_Y416,        VA_LSB_FIRST,  64, 0,0,0,0,0 };
70 static VAImageFormat formatRGBP        = {VA_FOURCC_RGBP,        VA_LSB_FIRST,  24, 24,0,0,0,0};
71 static VAImageFormat formatBGRP        = {VA_FOURCC_BGRP,        VA_LSB_FIRST,  24, 24,0,0,0,0};
72 
73 #endif //__CAPSTABLE_DATA_IMAGE_FORMAT_DEFINITION_H__